Facebook 信用回调例程未调用
Facebook credits callback routine not invoked
当调用信用buy()
例程时,Facebook会显示此错误,There Was a Problem Processing Your Payment.
并且不显示付款对话框。
我已经验证了以下内容,但找不到问题:
- 在积分设置中设置回调网址:http://sharp-journey-4179.herokuapp.com/callback.jsp
- 将自己设置为学分测试员。
- 已验证是否可以从 Facebook 对象调试器工具访问回调例程。
- Peared 回调.jsp简单地将预制响应返回给 payments_get_items POST。 Heroku
- 路由器收到状态为 200 的 POST,但控制台.log回调输出.jsp在 Heroku 日志中未收到。
- 对payments_get_items的回应是:
"{''"内容":[{''"标题":''"我的应用 ''",''"描述":''"这是我的应用 .''",''"价格":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 信用文档指出,应用程序服务器请求是为了响应购买请求而发出的。 我是否需要实现一个 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);
}
这是我的回调.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>
我需要实现一个Servlet来处理从Facebook收到的信用回调POSTS。 我在启动目录中的 Main.java 例程中创建了一个 Servlet。 在 Main.java 中,我添加了一个上下文 addServletMapping,将所有回调 POST 请求发送到 Servlet。 上下文的第一个集合.addServletMapping 与在应用的配额设置中输入的配额回调 URL 中最后一个分隔符之后的文本匹配。因此,servlet 不需要命名为 Callback。
总之,Facebook通过HTTP将信用回调POSTS发送到回调URL。 作为开发人员,您需要创建一个 Servlet 并执行以下操作之一:
- 将回调 POSTS 映射到 Servlet,并在 Java 中的 Servlet 中进行处理。 配额回调 URL 是附加到应用 URL 的唯一文本字符串。
- 创建一个 web.xml 文件,在其中将 Servlet 映射到回调.jsp文件。 配额回调 URL 是附加到您的 URL 的回调.jsp文件。
- 多个JavaScript子例程的实时DOM显示
- 支持 JavaScript 的检查例程适用于 Chrome/Opera/IE,但不适用于 Firefox/Safari
- 更合乎逻辑的设置超时例程
- 当访问文件时,我可以自动调用例程或函数吗
- 访问Chrome'的内部gzip例程
- Django:如何将模板变量传递给JavaScript OnClick例程
- 使用“;调解员”;作为侦听块例程中的汇点
- 看不到如何将洪水填充例程更改为 DFS 例程
- 使用异步子例程对一组函数进行计时
- 使用 attributes.add 在客户端更改文本框时调用例程
- 一个按钮上的多操作与javascript例程
- Facebook 信用回调例程未调用
- 我将如何使用闭包在 C# 中重写此 JavaScript 例程
- 如何将动画例程转换为通用的、可重用的 jQuery 函数
- 鼠标左键单击与 JavaScript 中的右键单击例程冲突
- Promise/A+ with chain then() 回调用例
- ActiveX多线程调用javascript回调例程出现问题
- 提交的Jquery例程没有被调用
- HTML 如何调用验证例程
- JavaScript 调用带有参数的 VBA 例程