您尚未登录。

楼主 #1 2020-09-14 23:24:59

pythinker
会员
注册时间: 2019-02-12
已发帖子: 215
积分: 215

微信支付成功后, 这个服务器通知本机(notify)协议, 感觉不合理

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7

微信的服务器发送数据告诉本机支付成功了:

<xml>
  <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
  <attach><![CDATA[支付测试]]></attach>
  <bank_type><![CDATA[CFT]]></bank_type>
  <fee_type><![CDATA[CNY]]></fee_type>
  <is_subscribe><![CDATA[Y]]></is_subscribe>
  <mch_id><![CDATA[10000100]]></mch_id>
  <nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str>
  <openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid>
  <out_trade_no><![CDATA[1409811653]]></out_trade_no>
  <result_code><![CDATA[SUCCESS]]></result_code>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign>
  <time_end><![CDATA[20140903131540]]></time_end>
  <total_fee>1</total_fee>
  <coupon_fee><![CDATA[10]]></coupon_fee>
  <coupon_count><![CDATA[1]]></coupon_count>
  <coupon_type><![CDATA[CASH]]></coupon_type>
  <coupon_id><![CDATA[10000]]></coupon_id>
  <trade_type><![CDATA[JSAPI]]></trade_type>
  <transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>
</xml>

本机回应以下数据:

<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[OK]]></return_msg>
</xml>

如果本机不回, 那么微信服务器会继续再发几次, 但是我感觉这个回应数据什么信息都不用带, 要是有很多订单, 怎么知道是回应哪个订单?

离线

楼主 #2 2020-09-14 23:37:58

pythinker
会员
注册时间: 2019-02-12
已发帖子: 215
积分: 215

Re: 微信支付成功后, 这个服务器通知本机(notify)协议, 感觉不合理

我一直纳闷, 为什么不回应 交易流水Id信息?

<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[OK]]></return_msg>
  <transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>
</xml>

离线

楼主 #4 2020-09-17 23:45:19

pythinker
会员
注册时间: 2019-02-12
已发帖子: 215
积分: 215

Re: 微信支付成功后, 这个服务器通知本机(notify)协议, 感觉不合理

manhere 说:

微信服务器端发给notify地址里面包含了 out_trade_no ,这个是你自编的业务订单号,需要你根据result_code,return_code来相应更新你自己数据库里该订单号纪录的状态,并【同步】返回相应结论状态给微信服务器。

问题是微信服务器怎么知道我回应的是哪一单呢?

离线

楼主 #6 2020-09-18 00:01:05

pythinker
会员
注册时间: 2019-02-12
已发帖子: 215
积分: 215

Re: 微信支付成功后, 这个服务器通知本机(notify)协议, 感觉不合理

manhere 说:
pythinker 说:

问题是微信服务器怎么知道我回应的是哪一单呢?

它带参(out_trade_no等等)post给你的notify地址,你返回相应的状态回来,必然能知道返回的就是针对这个out_trade_no啊。

感谢回复, 可是http/https是无状态协议, 如果回复的消息内容不携带out_trade_no, 微信服务器根本不知道回复的是哪条消息?

离线

楼主 #9 2020-09-18 08:30:05

pythinker
会员
注册时间: 2019-02-12
已发帖子: 215
积分: 215

Re: 微信支付成功后, 这个服务器通知本机(notify)协议, 感觉不合理

armstrong 说:

楼主理解错误吧。
两个http请求之间是没有记忆的;但是同一个http请求和应答是成对的。也就是http总是一个request对应一个response,而且是在同一个TCP连接里。

大佬早上好,感谢提醒,晚点我用抓包工具确定一下是不是在同一TCP连接里面。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn