php – 在服务器端接收支付宝移动支付的请求字符串

我不完全确定这个问题有多受欢迎或是否能得到任何回复,因为这个问题与中国开发人员的关系比那些开发人员更多,但是,我目前正致力于为支付宝集成服务器端脚本来接收移动设备成功请求字符串.

我已经成功地为我的移动人员(通过在可怕的支付宝API中眯着眼睛)提供他们向支付宝付款所需的字符串.它遵循这种格式[保留的可识别信息]:

_input_charset=\"utf-8\"&body=\"Order Number: 20141121_80\"&it_b_pay=\"30m\"&notify_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\"

上述字符串由Android / iOS API在其支付宝支付类中使用,然后由私钥签名,然后发送给支付宝.在支付宝收到他们的请求后,他们将验证我们的参数字符串,并发回状态代码,范围从6000 – 9000.

到目前为止,我们已收到返回给移动人员的字符串中的resultStatus = 9000,这表示付款成功(通过查看支付宝的钱包历史记录,我们确实看到我们已付款)

result = {
    memo = "";
    result = "_input_charset=\"utf-8\"&body=\"\U4ea4\U6613\U53f7 20141124_80\"&it_b_pay=\"30m\"&notify_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;
}

一切都停止了工作:

支付宝理论上应该发送一个结果字符串(参数比上面显示的更多)也发送到我们的notify_url,我们在输入参数中指定了我们的服务器需要验证的是支付宝.此结果字符串还将用于更新我们的后端,以便我们知道订单确实已成功.

由于某种原因,支付宝根本没有将结果字符串发送到我们指定的notify_url.

我尝试过的:

>将POST输入的var_dump()放入付款/支付宝/回拨.没有收到任何要求.
>我已经尝试过面向我的公众面对IP URL的付款/支付宝/回拨,我知道它正在工作,因为我收到请求,因此排除我的回调网址是否正常运行.
>拉出我的头发.我测试再次付款,我可以确认拉出我的头发没有解决问题.

正如中国开发商经常说的,那里有没有“大神”(或大师)可以给我一些建议和/或解决方案?

解决方法:

好吧,所以我刚刚用支付宝取消支持电话.

我们确认他们确实已将请求发送到我的notify_url,但我的通知类中有一个PHP重定向代码段,因此它被重定向到我的登录页面(其结果的输出是我的主页的HTML代码).

所以吸取教训:

>不要将重定向放在notify_url中
>联系支付宝支持 – 他们可以提供比你想象的更多的帮助(好吧.比我想的还要少,但他们仍然有帮助).

我还实现了他们的Notify类的讨厌的意大利面条代码(负责处理返回参数).代码不漂亮,缩进都不正确,评论都是中文的..但似乎它会起作用.所以我们先发货然后重构&&稍后翻译..

上一篇:【Vue+DRF生鲜电商】29.线上服务支付宝接口和Vue联调,Django代理Vue运行


下一篇:上月用得好好的支付宝获取月账单的Java接口,月初突然返回“入参不合法”的解决方法