封面
第一章 课程介绍
第二章 微信小程序支付
微信支付种类说明
开发微信小程序的准备工作
小程序支付接口原理说明
微信账号登陆小程序
微信支付接口通用参数
创建支付订单的接口说明
创建支付订单代码实现
用户付款代码实现
接收付款通知说明
商户平台接受支付结果
主动查询支付结果说明
主动查询支付结果
第三章 微信Native支付
第四章 微信扫码支付
第五章 支付宝小程序支付
第六章 支付宝安卓APP支付
第七章 支付宝H5 APP支付
第八章 支付宝Native支付
第九章 支付宝扫码支付
第十章 银联安卓APP支付
第十一章 银联Native支付
第十二章 银联扫码支付

新零售支付全家桶


接收付款通知说明

<p>各位同学大家好,上节课我们调通了小程序上面的微信支付功能,但是只有小程序上面提示支付成功还不行,必须要让商户系统也接收到支付成功的通知。如果商户系统接收不到通知,那么就不能修改订单状态为已付款。有的同学可能会说,老师现在咱们是开发环境,项目没有发布到外网,即便我们写好了WEB方法,也接收不到这个通知。这个没关系,我们可以模拟微信平台向WEB接口发送通知,看看WEB接口能不能成功处理消息通知,把订单状态更改为已支付。</p> <h3>通知参数</h3> <table> <thead> <tr> <th>字段名</th> <th>变量名</th> <th>必填</th> <th>类型</th> <th>示例值</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>返回状态码</td> <td>return_code</td> <td>是</td> <td>String(16)</td> <td>SUCCESS</td> <td>SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断</td> </tr> <tr> <td>返回信息</td> <td>return_msg</td> <td>否</td> <td>String(128)</td> <td>签名失败</td> <td>返回信息,如非空,为错误原因 签名失败 参数格式校验错误</td> </tr> </tbody> </table> <p>以下字段在return_code为SUCCESS的时候有返回 </p> <table> <thead> <tr> <th>字段名</th> <th>变量名</th> <th>必填</th> <th>类型</th> <th>示例值</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>小程序ID</td> <td>appid</td> <td>是</td> <td>String(32)</td> <td>wx8888888888888888</td> <td>微信分配的小程序ID</td> </tr> <tr> <td>商户号</td> <td>mch_id</td> <td>是</td> <td>String(32)</td> <td>1900000109</td> <td>微信支付分配的商户号</td> </tr> <tr> <td>设备号</td> <td>device_info</td> <td>否</td> <td>String(32)</td> <td>013467007045764</td> <td>微信支付分配的终端设备号,</td> </tr> <tr> <td>随机字符串</td> <td>nonce_str</td> <td>是</td> <td>String(32)</td> <td>5K8264ILTKCH16CQ2502SI8ZNMTM67VS</td> <td>随机字符串,不长于32位</td> </tr> <tr> <td>签名</td> <td>sign</td> <td>是</td> <td>String(32)</td> <td>C380BEC2BFD727A4B6845133519F3AD6</td> <td>签名,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3">签名算法</a></td> </tr> <tr> <td>签名类型</td> <td>sign_type</td> <td>否</td> <td>String(32)</td> <td>HMAC-SHA256</td> <td>签名类型,目前支持HMAC-SHA256和MD5,默认为MD5</td> </tr> <tr> <td>业务结果</td> <td>result_code</td> <td>是</td> <td>String(16)</td> <td>SUCCESS</td> <td>SUCCESS/FAIL</td> </tr> <tr> <td>错误代码</td> <td>err_code</td> <td>否</td> <td>String(32)</td> <td>SYSTEMERROR</td> <td>错误返回的信息描述</td> </tr> <tr> <td>错误代码描述</td> <td>err_code_des</td> <td>否</td> <td>String(128)</td> <td>系统错误</td> <td>错误返回的信息描述</td> </tr> <tr> <td>用户标识</td> <td>openid</td> <td>是</td> <td>String(128)</td> <td>wxd930ea5d5a258f4f</td> <td>用户在商户appid下的唯一标识</td> </tr> <tr> <td>是否关注公众账号</td> <td>is_subscribe</td> <td>是</td> <td>String(1)</td> <td>Y</td> <td>用户是否关注公众账号,Y-关注,N-未关注</td> </tr> <tr> <td>交易类型</td> <td>trade_type</td> <td>是</td> <td>String(16)</td> <td>JSAPI</td> <td>JSAPI、NATIVE、APP</td> </tr> <tr> <td>付款银行</td> <td>bank_type</td> <td>是</td> <td>String(32)</td> <td>CMC</td> <td>银行类型,采用字符串类型的银行标识,银行类型见<a href="https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_2">银行列表</a></td> </tr> <tr> <td>订单金额</td> <td>total_fee</td> <td>是</td> <td>Int</td> <td>100</td> <td>订单总金额,单位为分</td> </tr> <tr> <td>应结订单金额</td> <td>settlement_total_fee</td> <td>否</td> <td>Int</td> <td>100</td> <td>应结订单金额=订单金额-非充值代金券金额,应结订单金额&lt;=订单金额。</td> </tr> <tr> <td>货币种类</td> <td>fee_type</td> <td>否</td> <td>String(8)</td> <td>CNY</td> <td>货币类型,符合ISO4217标准的三位字母代码,默认人民币:CNY,其他值列表详见<a href="https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_2">货币类型</a></td> </tr> <tr> <td>现金支付金额</td> <td>cash_fee</td> <td>是</td> <td>Int</td> <td>100</td> <td>现金支付金额订单现金支付金额,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_2">支付金额</a></td> </tr> <tr> <td>现金支付货币类型</td> <td>cash_fee_type</td> <td>否</td> <td>String(16)</td> <td>CNY</td> <td>货币类型,符合ISO4217标准的三位字母代码,默认人民币:CNY,其他值列表详见<a href="https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_2">货币类型</a></td> </tr> <tr> <td>总代金券金额</td> <td>coupon_fee</td> <td>否</td> <td>Int</td> <td>10</td> <td>代金券金额&lt;=订单金额,订单金额-代金券金额=现金支付金额,详见<a href="https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_2">支付金额</a></td> </tr> <tr> <td>代金券使用数量</td> <td>coupon_count</td> <td>否</td> <td>Int</td> <td>1</td> <td>代金券使用数量</td> </tr> <tr> <td>代金券类型</td> <td>coupon<em>type</em>$n</td> <td>否</td> <td>String</td> <td>CASH</td> <td>CASH--充值代金券 NO_CASH---非充值代金券 并且订单使用了免充值券后有返回(取值:CASH、NO_CASH)。$n为下标,从0开始编号,举例:coupon_type_0 <strong>注意:</strong>只有下单时订单使用了优惠,回调通知才会返回券信息。 下列情况可能导致订单不可以享受优惠:<a href="https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_202&amp;index=7#menu4">可能情况</a>。</td> </tr> <tr> <td>代金券ID</td> <td>coupon<em>id</em>$n</td> <td>否</td> <td>String(20)</td> <td>10000</td> <td>代金券ID,$n为下标,从0开始编号 <strong>注意:</strong>只有下单时订单使用了优惠,回调通知才会返回券信息。 下列情况可能导致订单不可以享受优惠:<a href="https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_202&amp;index=7#menu4">可能情况</a>。</td> </tr> <tr> <td>单个代金券支付金额</td> <td>coupon<em>fee</em>$n</td> <td>否</td> <td>Int</td> <td>100</td> <td>单个代金券支付金额,$n为下标,从0开始编号</td> </tr> <tr> <td>微信支付订单号</td> <td>transaction_id</td> <td>是</td> <td>String(32)</td> <td>1217752501201407033233368018</td> <td>微信支付订单号</td> </tr> <tr> <td>商户订单号</td> <td>out_trade_no</td> <td>是</td> <td>String(32)</td> <td>1212321211201407033568112322</td> <td>商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。</td> </tr> <tr> <td>商家数据包</td> <td>attach</td> <td>否</td> <td>String(128)</td> <td>123456</td> <td>商家数据包,原样返回</td> </tr> <tr> <td>支付完成时间</td> <td>time_end</td> <td>是</td> <td>String(14)</td> <td>20141030133525</td> <td>支付完成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见<a href="https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_2">时间规则</a></td> </tr> </tbody> </table> <p>举例如下</p> <pre><code class="language-xml">&lt;xml&gt; &lt;appid&gt;&lt;![CDATA[wx2421b1c4370ec43b]]&gt;&lt;/appid&gt; &lt;attach&gt;&lt;![CDATA[支付测试]]&gt;&lt;/attach&gt; &lt;bank_type&gt;&lt;![CDATA[CFT]]&gt;&lt;/bank_type&gt; &lt;fee_type&gt;&lt;![CDATA[CNY]]&gt;&lt;/fee_type&gt; &lt;is_subscribe&gt;&lt;![CDATA[Y]]&gt;&lt;/is_subscribe&gt; &lt;mch_id&gt;&lt;![CDATA[10000100]]&gt;&lt;/mch_id&gt; &lt;nonce_str&gt;&lt;![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]&gt;&lt;/nonce_str&gt; &lt;openid&gt;&lt;![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]&gt;&lt;/openid&gt; &lt;out_trade_no&gt;&lt;![CDATA[1409811653]]&gt;&lt;/out_trade_no&gt; &lt;result_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/result_code&gt; &lt;return_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/return_code&gt; &lt;sign&gt;&lt;![CDATA[B552ED6B279343CB493C5DD0D78AB241]]&gt;&lt;/sign&gt; &lt;time_end&gt;&lt;![CDATA[20140903131540]]&gt;&lt;/time_end&gt; &lt;total_fee&gt;1&lt;/total_fee&gt; &lt;coupon_fee&gt;&lt;![CDATA[10]]&gt;&lt;/coupon_fee&gt; &lt;coupon_count&gt;&lt;![CDATA[1]]&gt;&lt;/coupon_count&gt; &lt;coupon_type&gt;&lt;![CDATA[CASH]]&gt;&lt;/coupon_type&gt; &lt;coupon_id&gt;&lt;![CDATA[10000]]&gt;&lt;/coupon_id&gt; &lt;coupon_fee&gt;&lt;![CDATA[100]]&gt;&lt;/coupon_fee&gt; &lt;trade_type&gt;&lt;![CDATA[JSAPI]]&gt;&lt;/trade_type&gt; &lt;transaction_id&gt;&lt;![CDATA[1004400740201409030005092168]]&gt;&lt;/transaction_id&gt; &lt;/xml&gt;</code></pre> <h3>返回参数</h3> <p>商户处理后同步返回给微信参数: </p> <table> <thead> <tr> <th>字段名</th> <th>变量名</th> <th>必填</th> <th>类型</th> <th>示例值</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>返回状态码</td> <td>return_code</td> <td>是</td> <td>String(16)</td> <td>SUCCESS</td> <td>SUCCESS/FAIL SUCCESS表示商户接收通知成功并校验成功</td> </tr> <tr> <td>返回信息</td> <td>return_msg</td> <td>否</td> <td>String(128)</td> <td>OK</td> <td>返回信息,如非空,为错误原因: 签名失败 参数格式校验错误</td> </tr> </tbody> </table> <p>举例如下: </p> <pre><code class="language-xml">&lt;xml&gt; &lt;return_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/return_code&gt; &lt;return_msg&gt;&lt;![CDATA[OK]]&gt;&lt;/return_msg&gt; &lt;/xml&gt; </code></pre>

页面列表

ITEM_HTML