调用creditsbuy()
例程时,Facebook 会显示此错误,There Was a Problem Processing Your Payment.
并且不会显示付款对话框。
我已经验证了以下内容,但我找不到问题:
- 在 Credits Settings 中设置回调 url:http: //sharp-journey-4179.herokuapp.com/callback.jsp
- 将自己设置为信用测试员。
- 已验证可以从 Facebook 对象调试器工具访问回调例程。
- 删除 callback.jsp 以简单地返回对 payment_get_items POST 的预设响应。
- Heroku 路由器收到状态为 200 的 POST,但在 Heroku 日志中未收到 callback.jsp 中的 console.log 输出。
- 对 payment_get_items 的响应是:
"{\"content\":[{\"title\":\"我的应用\",\"description\":\"这是我的应用。\",\"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 Credit 文档指出,发出应用程序服务器请求以响应购买请求。我是否需要实现一个 Servlet 来处理 POST 并将其传递给我的回调例程?Facebook 如何使用回调例程的名称,callback.jsp
?Servlet 是否需要命名为 Callback?
这是我的客户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>