我不完全确定这个问题有多受欢迎,或者这个问题是否会得到任何回应,因为这个问题与中国开发者的关系比外面的开发者更多,但是,我目前正在努力为支付宝集成服务器端脚本以接收手机成功请求字符串。
我已经成功地向我的移动人员(通过在可怕的支付宝 API 中眯着眼睛)提供他们向支付宝付款所需的字符串。它遵循以下格式[隐藏可识别信息]:
_input_charset=\"utf-8\"&body=\"Order Number: 20141121_80\"&it_b_pay=\"30m\"¬ify_url=\"http://somePublicFacingIP:8080/index.php?route=payment/alipay/callback\"&out_trade_no=\"80\"&partner=\"2088611100000000\"&payment_type=\"1\"&seller_id=\"account@website.com\"&service=\"mobile.securitypay.pay\"&subject=\"Order Number: 20141121_80\"&total_fee=\"10.01\"
Run Code Online (Sandbox Code Playgroud)
上面的字符串在他们的支付宝支付类中被 Android/iOS API 消费,然后由私钥签名,然后发送到支付宝。支付宝收到他们的请求后,他们会验证我们的参数字符串,并发回 6000 - 9000 的状态码。
到目前为止,我们已经收到resultStatus=9000返回给移动设备的字符串,这表明付款成功(通过检查支付宝的钱包历史,我们确实看到我们已经付款)
result = {
memo = "";
result = "_input_charset=\"utf-8\"&body=\"\U4ea4\U6613\U53f7 20141124_80\"&it_b_pay=\"30m\"¬ify_url=\"http://publicFacingIP:8080/index.php?route=payment/alipay/callback\"&out_trade_no=\"80\"&partner=\"208861100000000\"&payment_type=\"1\"&seller_id=\"account@website.com\"&service=\"mobile.securitypay.pay\"&subject=\"\U65b0\U5143\U7d20\U7f51\U4e0a\U70b9\U9910 - \U8ba2\U5355\U7f16\U53f7 20141124_87\"&total_fee=\"0.01\"&success=\"true\"&sign_type=\"RSA\"&sign=\"reallyLongSignedString\"";
resultStatus = 9000;
}
Run Code Online (Sandbox Code Playgroud)
这是一切停止工作的地方:
支付宝理论上也应该向我们发送一个结果字符串(参数比上面显示的更多)notify_url,我们在我们的输入参数中指定我们的服务器需要验证的是支付宝。此结果字符串还将用于更新我们的后端,以便我们知道订单确实已成功。
出于某种原因,支付宝根本没有将结果字符串发送到我们指定的notify_url.
我试过的:
将var_dump()POST 输入中的一个放入payment/alipay/callback. 没有收到任何请求。
我试过卷曲到我面向公众的 IP URL payment/alipay/callback,我知道它正在工作,因为我正在接收请求,因此排除了我的callbackURL 是否正常工作。
拉我的头发。我再次测试了付款,我可以确认拔头发并没有解决问题。
正如中国开发商常说的,有没有“??” (或大师)那里可以为我提供一些建议和/或解决方案?
好吧,我刚刚结束了支付宝的支持电话。
我们验证了他们确实将请求发送到了 my notify_url,但我的通知类中有一个 PHP 重定向代码片段,因此它只是被重定向到我的登陆页面(他们结果的输出是我主页的 HTML 代码)。
所以吸取的教训是:
不要将重定向放入notify_url
联系支付宝支持 - 他们可以提供比你想象的更多的帮助(好吧。比我想象的要少,但他们仍然提供了帮助)。
我还实现了他们的 Notify 类(负责处理返回参数)的讨厌的意大利面条代码。代码不漂亮,缩进都不正确,注释都是中文的..但看起来它会起作用。所以我们会先发布它,然后重构&&翻译。
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |