2011-10-17 62 views
0

我正嘗試使用asp.net和MVC3創建Facebook移動應用程序,並將Facebook Credits作爲付款方式進行集成。首先,考慮到最近的通告,現在是否可以建立一個接受Facebook Credits的移動Web應用程序?Facebook積分在移動web應用程序中回調

如果是這樣,我已經邁出了下面的帖子

http://www.m-webs.com/blog_facebookcredits.html

提供的例子並實施了以下控制器動作:

public JsonResult CallBack() 
{ 
    string fborder_info = Request.Form["order_info"]; 
    string fborder_id = Request.Form["order_id"]; 
    string fbmethod = Request.Form["method"]; 



    if (fbmethod == "payments_get_items") 
    { 

     fborder_info = fborder_info.Substring(1, (fborder_info.Length - 2)); // remove the quotes 

     ulong credscost = 2; // Price of purchase in facebook credits 

     var theItem = new FacebookBuyItem() 
     { 
      item_id = 123456789, 
      description = "Own yours today!", 
      price = credscost, 
      title = "Digital Unicorn", 
      product_url = "http://www.facebook.com/images/gifts/21.png", 
      image_url = "http://www.facebook.com/images/gifts/21.png" 
     }; 

     var res = new Dictionary<string, object>(); 
     res["method"] = fbmethod; 
     res["order_id"] = fborder_id; 
     res["content"] = new object[] { theItem }; 
     var jss = new JavaScriptSerializer(); 
     var ob = jss.Serialize(res); 
     ob = ob.Replace("#$", @"\/".Replace("//", @"\/")); 

     return Json(ob, JsonRequestBehavior.AllowGet); 
    } 

    return null; 
} 

我驗證過的回調正在請求通過Facebook,我也捕獲了回發的響應,似乎包含所有顯示購買對話框所需的信息,但我仍然收到以下錯誤信息:

API錯誤代碼:1151 API錯誤描述:很抱歉,此應用可能沒有資格接受Facebook Credits。如果此應用程序之前已接受信用,請重試。 錯誤消息:無效的申請

和移動瀏覽器進行測試時:

很抱歉,但我們無法順利處理您的付款。您沒有被收取這筆交易的費用。請再試一次。

我也注意到我的回調被要求兩次,這似乎並不正確。

任何洞察到如何讓我的集成和運行將不勝感激。我的Facebook AppId是177876855621874

謝謝。

回答

0

更新:所以我玩了所給的例子,並恢復爲webforms,以測試在http://www.m-webs.com/blog_facebookcredits.html給出的例子。爲了得到這個解決方案在asp.net MVC3應用程序的工作,我不得不動作類型更改爲的HttpResponse,而不是JsonResult這是有道理的JsonResult離開元素指出,通常會包含在HttpResponse對象。

因此控制器行動結束這樣看:

[HttpPost] 
public HttpResponse CallBack() 
{ 
    if (Request.Form["signed_request"] != null) 
    { 
     var decodeFbSignedRequest = FacebookSignedRequest.Parse(FacebookApplication.Current.AppSecret, 
                  Request.Form["signed_request"]); 

     LogHelper.MicroLogMsg("SIGNED REQUEST DECODE:: " + decodeFbSignedRequest.Data); 
    } 

    string fborder_id = Request.Form["order_id"]; 
    string fbmethod = Request.Form["method"]; 
    string fborder_info = Request.Form["order_info"]; // Use this to look up a product on the database.. 

    if (fbmethod == "payments_get_items") 
    { 
     int credscost = 2; // Price of purchase in facebook credits 

     var theItem = new FacebookBuyItem() 
     { 
      item_id = "123456AA", 
      description = "[Test Mode] Own yours today!", 
      price = credscost, 
      title = "[Test Mode] Digital Unicorn", 
      product_url = @"http:\/\/www.facebook.com\/images\/gifts\/21.png", 
      image_url = @"http:\/\/www.facebook.com\/images\/gifts\/21.png" 
     }; 

     // Return the initial response to FB 
     //------------------------------------------ 
     var res = new Dictionary<string, object>(); 
     res["method"] = fbmethod; 
     res["content"] = new object[] { theItem }; 

     var jss = new JavaScriptSerializer(); 
     string ob = jss.Serialize(res); 

     LogHelper.MicroLogMsg(ob); 

     Response.ContentType = "application/json"; 
     Response.Write(ob); 
     Response.End(); 
    } 

    return null; 
} 

我希望這可以幫助任何人出來做了Facebook Credits的一個MVC3實現。

相關問題