Когда вызывается подзаголовок buy()
, Facebook отображает эту ошибку, There Was a Problem Processing Your Payment.
и Диалог платежей не отображается.Facebook вызывает callback-процедуру, которая не вызывается
Я проверил следующее, но я не могу найти проблему:
- Set обратного вызова URL в настройках кредитов: http://sharp-journey-4179.herokuapp.com/callback.jsp
- Установить себя в качестве тестера Credits.
- Проверено, что процедура обратного вызова может быть достигнута с помощью средства отладки объектов Facebook.
- Перенесенный вызов callback.jsp, чтобы просто вернуть сохраненный ответ на POST-платеж payments_get_items.
- Маршрутизатор Heroku получает POST со статусом 200, но вывод console.log в callback.jsp не получен в журналах Heroku.
- Ответ на payments_get_items является:
"{\" содержание \ ": [{\" название \ ": \" Мое приложение \ "\ "Описание \": \" Это мое приложение . \ ", \" price \ ": 2, \" product_url \ ": \" http: //www.facebook.com/images/gifts/21.png \ ", \" image_url \ ": \ "HTTP: //www.facebook.com/images/gifts/21.png \"}], \ "метод \": \ "payments_get_items \"}»
Кредитная документация Facebook утверждает, что приложение Запрос сервера выдается в ответ на запрос на покупку. Нужно ли мне реализовать сервлет для обработки POST и передать его в мою процедуру обратного вызова? Как Facebook использует имя процедуры обратного вызова, callback.jsp
? Нужен ли сервлет для вызова Callback?
Это snipit моего клиента buy()
рутина:
// The dialog only opens if you've implemented the
// Credits Callback payments_get_items.
function buy() {
var obj = {
method: 'pay',
action: 'buy_item',
// You can pass any string, but your payments_get_items must
// be able to process and respond to this data.
order_info: {'item_id': '1a1'},
dev_purchase_params: {'oscif': true}
};
FB.ui(obj, js_callback);
}
Это мой callback.jsp код:
<script type="text/javascript">
var secret = 'xxxxxxxxxxxxxxxxxxxxx';
console.log("In fnf callback.jsp");
//$request_type = $_POST['method'];
// Setup response.
var return_data = '';
var item = {
title: 'My App',
description: 'This is my app.',
price: 2,
product_url: 'http:\/\/www.facebook.com\/images\/gifts\/21.png',
image_url: 'http:\/\/www.facebook.com\/images\/gifts\/21.png'
};
var content_array = new Array;
content_array[0] = item;
// Construct response.
var response = {
content: content_array,
method: 'payments_get_items'
};
// Response must be JSON encoded.
return_data = JSON.stringify(response);
// Send response.
alert(return_data);
</script>