【发布时间】:2015-05-30 05:13:17
【问题描述】:
管理 IPN 有 4 个步骤:
- 通过邮局接收Paypal付款的请求信息
- 返回 HTTP 200 响应
- 将完整的未更改消息返回到贝宝
- 3 后从 Paypal 收到验证或无效
为此,有一个示例here。 我根据自己的需要对 Romain 脚本进行了一些自定义,但理念是相同的,我知道 Romain 与 IPN 有相同的问题(我正在与他联系)。
问题是:我们无法验证 IPN 流程。 HTTP 响应代码的状态为 405。
我发现在第 2 步之前我们执行第 3 步的罗马脚本中。所以我进行了更改,现在脚本返回一个空答案:
return ContentService.createTextOutput('');
在发回完整的未更改的贝宝消息之前,我设置了一个触发器,该触发器在 30 秒后向贝宝发送消息:
var params = {
method: "post"
}
var req = messge from paypal;
var resp = UrlFetchApp.fetch("https://www.paypal.com/cgi-bin/webscr?"+req,params);
此代码与 Romain 不同,但我很好地收到了 Paypal 的“已验证”答复。
所以现在我认为问题是 HTTP 200 响应发送回贝宝,第 2 步。 我所做的是,通过将我自己的发布请求发送到应用程序脚本来检查内容、标题和响应代码中的数据。结果如下:
[15-03-25 22:50:29:753 CET] 代码:200
[15-03-25 22:50:29:754 CET] 内容:
[15-03-25 22:50:29:756 CET] 听众:({'X-XSS-Protection':"1; mode=block", Expires:"Fri, 01 Jan 1990 00:00:00 GMT", '替代协议':"443:quic,p=0.5", 'Set-Cookie':"NID=67=hlLDTKuNN7fjl66UwT9e2_BV0xw_dd67lZ9R337Zm2K8RYNAMzF0FjnEt0uhE0cxCzymgsH-1ehuGOgZ7pHynjWRkM1Y6n0PxXp8RAdyPKgfr-Y4cUrBqoDZdUib9zWo=/Expir=.googlehuT,;Expir=.googlehuT 2015 年 9 月 24 日 21:50:29 GMT;HttpOnly",服务器:"GSE", 'Cache-Control':"no-cache, no-store, max-age=0, must-revalidate", Pragma:"no-cache", 'X-Content-Type-Options':"nosniff", 'X-Frame-Options':"SAMEORIGIN", 'Transfer-Encoding':"chunked", 日期:“格林威治标准时间 2015 年 3 月 25 日星期三 21:50:29”, 'Access-Control-Allow-Origin':"*", P3P:"CP=\"这不是 P3P 策略! 看 http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 了解更多信息。\"", 'Content-Type':"text/plain; charset=utf-8"})
我在 stackoverflow 上发现了这条关于 http 响应状态 405 的消息和要做的测试:(IPN delivery failed. HTTP error code 405: Method Not Allowed)。
在 dopost() 请求后使用 appscript 发回的标头似乎格式不正确。我不确定,但现在我没有其他想法。
如果有人有想法?
我想可能会在 doPost() 末尾使用应用程序脚本发送带有特定标题的自定义答案,但不知道该怎么做?
【问题讨论】:
-
在第 2 步中是否期望将内容作为 ContentService.MimeType.TEXT 获取?
-
没有必要。在 romain 脚本中,内容是在我的中定义的,但结果是相同的。
-
我仍在调查,并且我已经使用 www.hurl.it 进行了测试,以向已发布的脚本发送请求。在界面上我可以激活或不遵循重定向。如果我激活 hurl 收到 200 ok 响应代码,如果没有 hurl 收到 302 临时移动。我认为问题 paypal ipn 不遵循重定向并且看不到 200 响应代码????我不知道我们是否可以检查是否是问题???
标签: google-apps-script paypal-ipn urlfetch