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>
如果本机不回, 那么微信服务器会继续再发几次, 但是我感觉这个回应数据什么信息都不用带, 要是有很多订单, 怎么知道是回应哪个订单?
离线
我一直纳闷, 为什么不回应 交易流水Id信息?
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>
</xml>
离线
微信服务器端发给notify地址里面包含了 out_trade_no ,这个是你自编的业务订单号,需要你根据result_code,return_code来相应更新你自己数据库里该订单号纪录的状态,并【同步】返回相应结论状态给微信服务器。
离线
微信服务器端发给notify地址里面包含了 out_trade_no ,这个是你自编的业务订单号,需要你根据result_code,return_code来相应更新你自己数据库里该订单号纪录的状态,并【同步】返回相应结论状态给微信服务器。
问题是微信服务器怎么知道我回应的是哪一单呢?
离线
manhere 说:微信服务器端发给notify地址里面包含了 out_trade_no ,这个是你自编的业务订单号,需要你根据result_code,return_code来相应更新你自己数据库里该订单号纪录的状态,并【同步】返回相应结论状态给微信服务器。
问题是微信服务器怎么知道我回应的是哪一单呢?
它带参(out_trade_no等等)post给你的notify地址,你返回相应的状态回来,必然能知道返回的就是针对这个out_trade_no啊。
离线
pythinker 说:问题是微信服务器怎么知道我回应的是哪一单呢?
它带参(out_trade_no等等)post给你的notify地址,你返回相应的状态回来,必然能知道返回的就是针对这个out_trade_no啊。
感谢回复, 可是http/https是无状态协议, 如果回复的消息内容不携带out_trade_no, 微信服务器根本不知道回复的是哪条消息?
离线
manhere 说:它带参(out_trade_no等等)post给你的notify地址,你返回相应的状态回来,必然能知道返回的就是针对这个out_trade_no啊。
感谢回复, 可是http/https是无状态协议, 如果回复的消息内容不携带out_trade_no, 微信服务器根本不知道回复的是哪条消息?
HTTP的无状态应该是指对于交互场景或者说你的具体业务上下文没有记忆能力(这也是为什么要依赖Cookie、Session等机制标识用户),但每一个单次请求是有明确的发起方响应方的。
离线
楼主理解错误吧。
两个http请求之间是没有记忆的;但是同一个http请求和应答是成对的。也就是http总是一个request对应一个response,而且是在同一个TCP连接里。
离线
楼主理解错误吧。
两个http请求之间是没有记忆的;但是同一个http请求和应答是成对的。也就是http总是一个request对应一个response,而且是在同一个TCP连接里。
大佬早上好,感谢提醒,晚点我用抓包工具确定一下是不是在同一TCP连接里面。
离线
楼主理解错误吧。
两个http请求之间是没有记忆的;但是同一个http请求和应答是成对的。也就是http总是一个request对应一个response,而且是在同一个TCP连接里。
赞成,就是同一个TCP连接(该连接并没有断开),所以服务器知道订单号。
离线