当调用信用buy()
例程时,Facebook会显示此错误There Was a Problem Processing Your Payment.
,并且不会显示付款对话框。
我已经验证了以下内容,但我找不到问题:
“{\”content \“:[{\”title \“:\”我的应用 \“,\”description \“:\”这是我的应用 \ “\ ”价格\“: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>
答案 0 :(得分:0)
我需要实现一个Servlet来处理从Facebook收到的信用回调POSTS。我在启动目录的Main.java例程中创建了一个Servlet。在Main.java中,我添加了一个上下文addServletMapping来将所有回调POST请求发送到Servlet。 context.addServletMapping的第一个agrument匹配在应用的Credits Settings中输入的Credits Callback URL中的最后一个分隔符之后的文本。因此,servlet不需要命名为Callback。
总之,Facebook通过HTTP将信用回调POSTS发送到回调URL。作为开发人员,您需要创建一个Servlet并执行以下操作之一: