#asp.net #asp.net-mvc-3 #facebook-credits
#asp.net #asp.net-mvc-3 #facebook-кредиты
Вопрос:
Я пытаюсь создать мобильное приложение Facebook с помощью asp.net и MVC3 и интегрировать Facebook Credits в качестве способа оплаты. Прежде всего, принимая во внимание недавние анонсы, возможно ли теперь иметь мобильное веб-приложение, которое принимает кредиты Facebook?
Если это так, я взял пример, приведенный в следующем сообщении
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. Если это приложение ранее принимало кредиты, попробуйте еще раз. Сообщение об ошибке: недопустимое приложение
и при тестировании из мобильного браузера:
Извините, но у нас возникли проблемы с обработкой вашего платежа. С вас не взималась плата за эту транзакцию. Попробуйте еще раз.
Я также заметил, что мой обратный вызов запрашивается дважды, что тоже не кажется правильным.
Буду признателен за любую информацию о том, как запустить и запустить мою интеграцию. Мой идентификатор приложения в Facebook — 177876855621874
Спасибо.
Ответ №1:
Обновление: итак, я поиграл с приведенными примерами и вернулся к 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;
}
Я надеюсь, что это поможет любому, кто выполняет реализацию MVC3 для Facebook Credits.