Facebook Кредиты обратного вызова в мобильном веб-приложении - PullRequest
0 голосов
/ 17 октября 2011

Я пытаюсь создать мобильное приложение Facebook, используя asp.net и MVC3, и интегрировать кредиты Facebook в качестве способа оплаты. Прежде всего, принимая во внимание последние объявления, возможно ли теперь иметь мобильное веб-приложение, которое принимает кредиты 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 AppId: 177876855621874

Спасибо.

1 Ответ

0 голосов
/ 24 октября 2011

Обновление: поэтому я поигрался с приведенными примерами и вернулся к веб-формам, чтобы протестировать пример, приведенный по адресу 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.

...