cpay


小程序支付

<h1>微信小程序支付下单接口</h1> <p><strong>前提条件</strong></p> <p>商户申请小程序或使用渠道小程序</p> <p><strong>接口地址</strong></p> <p><code>测试</code> <code>http://xipay.xiangma365.com/api/openpay/v3/minipay</code></p> <p><code>正式</code> <code>https://cpay.xiangma365.com/openpay/v3/minipay</code></p> <p><strong>请求方式</strong></p> <p><code>POST</code></p> <p><strong>请求头部</strong></p> <p><code>Content-Type:application/json</code></p> <p><strong>请求参数</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">约束</th> <th style="text-align: left;">描述</th> <th style="text-align: left;">示例</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">inst_no</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">机构号 ,通道分配</td> <td style="text-align: left;">60000001</td> </tr> <tr> <td style="text-align: left;">mch_no</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">商户号</td> <td style="text-align: left;">Y52212200002</td> </tr> <tr> <td style="text-align: left;">shop_no</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">门店号</td> <td style="text-align: left;">86000033007</td> </tr> <tr> <td style="text-align: left;">terminal_no</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">终端号或商务SN</td> <td style="text-align: left;">70020283</td> </tr> <tr> <td style="text-align: left;">pay_type</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">支付类型:300 支付宝,400 微信,600 云闪付</td> <td style="text-align: left;">400</td> </tr> <tr> <td style="text-align: left;">pay_trace_no</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">支付请求流水号(在商户系统内唯一)</td> <td style="text-align: left;">werddtuoji0988</td> </tr> <tr> <td style="text-align: left;">pay_time</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">支付请求时间,yyyyMMddHHmmss格式</td> <td style="text-align: left;">20880907150901</td> </tr> <tr> <td style="text-align: left;">total_amount</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">支付金额,单位:分</td> <td style="text-align: left;">1</td> </tr> <tr> <td style="text-align: left;">open_id</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">用户标识:微信openid/支付宝userid</td> <td style="text-align: left;">oqqMoxBMF8FgrF3K8GnxiRPIyhBI</td> </tr> <tr> <td style="text-align: left;">appid</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">微信小程序的appid(此处取值优先于后台配置)</td> <td style="text-align: left;">wx9bcfaaa7b194c038</td> </tr> <tr> <td style="text-align: left;">notify_url</td> <td style="text-align: left;">string</td> <td style="text-align: left;">C</td> <td style="text-align: left;">回调地址(无须ecode),支付成功时回调通知</td> <td style="text-align: left;"><a href="http://open.sh.com">http://open.sh.com</a></td> </tr> <tr> <td style="text-align: left;">attach</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">自定义参数,原样返回</td> <td style="text-align: left;">1234</td> </tr> <tr> <td style="text-align: left;">order_body</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">订单描述</td> <td style="text-align: left;">苹果笔记本</td> </tr> <tr> <td style="text-align: left;">goods_detail</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">详情内容,json格式字符串,详细见“goods_detail描述”</td> <td style="text-align: left;">goods_detail”:[{\”goods_id\”:\”800510101\”,\”goods_name\”:\”ceshi\”,\”goods_price\”:\”40\”,\”goods_quantity\”:\”2\”}]”</td> </tr> <tr> <td style="text-align: left;">share_type</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">分账类型:0.不分账,1.同步分账,2.异步分账,不传默认0</td> <td style="text-align: left;">0</td> </tr> <tr> <td style="text-align: left;">share_detail</td> <td style="text-align: left;">string</td> <td style="text-align: left;">C</td> <td style="text-align: left;">分账对账,jsonObject字符串,字符串需要转义,share_type=”1”时有效,详细见“share_detail描述”</td> <td style="text-align: left;">{\&quot;share_array\&quot;:[{\&quot;share_mch\&quot;:\&quot;6666000134662349\&quot;,\&quot;share_amount\&quot;:\&quot;1\&quot;},{\&quot;share_mch\&quot;:\&quot;6666000134662348\&quot;,\&quot;share_amount\&quot;:\&quot;2\&quot;}]}</td> </tr> <tr> <td style="text-align: left;">sign</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">签名字符串</td> <td style="text-align: left;">920ff5b412adb411c6648948f2212fb9</td> </tr> </tbody> </table> <p><strong>goods_detail描述</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">约束</th> <th style="text-align: left;">描述</th> <th style="text-align: left;">示例</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">goods_id</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">商品编号</td> <td style="text-align: left;">8005</td> </tr> <tr> <td style="text-align: left;">goods_name</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">商品名称</td> <td style="text-align: left;">苹果</td> </tr> <tr> <td style="text-align: left;">goods_quantity</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">商品数量</td> <td style="text-align: left;">1</td> </tr> <tr> <td style="text-align: left;">goods_price</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">商品单价,单位:分</td> <td style="text-align: left;">100</td> </tr> </tbody> </table> <p><strong>share_detail描述</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">约束</th> <th style="text-align: left;">描述</th> <th style="text-align: left;">示例</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">share_array</td> <td style="text-align: left;">JSONArray</td> <td style="text-align: left;">M</td> <td style="text-align: left;">分账数组,json数组,详细见“share_array描述”</td> <td style="text-align: left;">[{\&quot;share_mch\&quot;:\&quot;6666000134662349\&quot;,\&quot;share_amount\&quot;:\&quot;1\&quot;},{\&quot;share_mch\&quot;:\&quot;6666000134662348\&quot;,\&quot;share_amount\&quot;:\&quot;2\&quot;}]</td> </tr> </tbody> </table> <p><strong>share_array描述</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">约束</th> <th style="text-align: left;">描述</th> <th style="text-align: left;">示例</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">share_mch</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">通道商户号</td> <td style="text-align: left;">6666000134662349</td> </tr> <tr> <td style="text-align: left;">share_amount</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">分账金额,单位:分</td> <td style="text-align: left;">1</td> </tr> </tbody> </table> <p><strong>请求示例(微信小程序)</strong></p> <pre><code>{     &amp;quot;inst_no&amp;quot;: &amp;quot;60000001&amp;quot;,     &amp;quot;mch_no&amp;quot;: &amp;quot;Y52212190001&amp;quot;,     &amp;quot;pay_type&amp;quot;: &amp;quot;400&amp;quot;,     &amp;quot;pay_trace_no&amp;quot;: &amp;quot;998877665544332001&amp;quot;,     &amp;quot;pay_time&amp;quot;: &amp;quot;20230227231190&amp;quot;,     &amp;quot;total_amount&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;open_id&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;appid&amp;quot;: &amp;quot;1&amp;quot;,     &amp;quot;sign&amp;quot;: &amp;quot;ca80a3969b049138cbd27970c8d4639d&amp;quot; }</code></pre> <p><strong>请求示例(微信小程序)【有分账参数】</strong></p> <p>5%分账示例</p> <pre><code>{     &amp;quot;inst_no&amp;quot;: &amp;quot;60000001&amp;quot;,     &amp;quot;mch_no&amp;quot;: &amp;quot;852306060002&amp;quot;,     &amp;quot;pay_type&amp;quot;: &amp;quot;400&amp;quot;,     &amp;quot;pay_trace_no&amp;quot;: &amp;quot;maqwsz1taaag522443zx1s001&amp;quot;,     &amp;quot;pay_time&amp;quot;: &amp;quot;20230630184413&amp;quot;,     &amp;quot;auth_code&amp;quot;: &amp;quot;132257855069146866&amp;quot;,     &amp;quot;total_amount&amp;quot;: &amp;quot;20&amp;quot;,     &amp;quot;operator_id&amp;quot;: &amp;quot;1&amp;quot;,     &amp;quot;order_body&amp;quot;: &amp;quot;分账测试&amp;quot;,     &amp;quot;attach&amp;quot;: &amp;quot;888&amp;quot;,     &amp;quot;notify_url&amp;quot;: &amp;quot;http://cpay.xiangma365.com/openpay/common/test/notify&amp;quot;,     &amp;quot;share_type&amp;quot;: &amp;quot;1&amp;quot;,     &amp;quot;share_detail&amp;quot;:&amp;quot;{\&amp;quot;share_array\&amp;quot;:[{\&amp;quot;share_mch\&amp;quot;:\&amp;quot;6666000134662349\&amp;quot;,\&amp;quot;share_amount\&amp;quot;:\&amp;quot;19\&amp;quot;},{\&amp;quot;share_mch\&amp;quot;:\&amp;quot;6666000134657023\&amp;quot;,\&amp;quot;share_amount\&amp;quot;:\&amp;quot;1\&amp;quot;}]}&amp;quot;,     &amp;quot;sign&amp;quot;: &amp;quot;5441d778d564d452de491fd4e06c37ee&amp;quot; } </code></pre> <p>生成签名提示: 待签名字符串(只过滤null): attach=888&amp;auth_code=132257855069146866&amp;inst_no=60000001&amp;mch_no=852306060002&amp;notify_url=<a href="http://cpay.xiangma365.com/openpay/common/test/notify">http://cpay.xiangma365.com/openpay/common/test/notify</a> &amp;operator_id=1&amp;order_body=分账测试&amp;pay_time=20230630184413&amp;pay_trace_no=maqwsz1taaag522443zx1s001&amp;pay_type=400&amp;share_detail={\&quot;share_array\&quot;:[{\&quot;share_mch\&quot;:\&quot;6666000134662349\&quot;,\&quot;share_amount\&quot;:\&quot;19\&quot;},{\&quot;share_mch\&quot;:\&quot;6666000134657023\&quot;,\&quot;share_amount\&quot;:\&quot;1\&quot;}]}&amp;share_type=1&amp;total_amount=20&amp;key=72fde5d00fb44e5784d80b45fc620167</p> <p>签名结果: 5441d778d564d452de491fd4e06c37ee</p> <p><strong>请求示例(微信小程序)</strong> <strong>响应参数</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">约束</th> <th style="text-align: left;">描述</th> <th style="text-align: left;">示例</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">return_code</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">响应码:SUCCESS成功,FAIL失败,响应码仅代表通信或参数</td> <td style="text-align: left;">SUCCESS</td> </tr> <tr> <td style="text-align: left;">result_code</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">业务结果:PAY_SUCCESS 支付成功 ,PAY_IN_PROCESS 支付中 ,PAY_FAIL 支付失败,只有在return_code为SUCCESS时才会返回。</td> <td style="text-align: left;">PAY_SUCCESS</td> </tr> <tr> <td style="text-align: left;">return_msg</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">返回信息提示,“支付成功”,“支付中”,“参数不合法” 等</td> <td style="text-align: left;">支付成功</td> </tr> <tr> <td style="text-align: left;">pay_type</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">支付类型:300支付宝,400微信,600云闪付</td> <td style="text-align: left;">300</td> </tr> <tr> <td style="text-align: left;">mch_no</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">商户号</td> <td style="text-align: left;">851811130002</td> </tr> <tr> <td style="text-align: left;">mch_name</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">商户名称</td> <td style="text-align: left;">小猫生活</td> </tr> <tr> <td style="text-align: left;">shop_no</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">门店号</td> <td style="text-align: left;">86000033007</td> </tr> <tr> <td style="text-align: left;">shop_name</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">门店名称</td> <td style="text-align: left;">小猫生活</td> </tr> <tr> <td style="text-align: left;">pay_trace_no</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">支付请求流水号(商户系统内唯一)</td> <td style="text-align: left;">51c7d68424e5492199cf7f4734a2b977</td> </tr> <tr> <td style="text-align: left;">pay_time</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">请求交易时间,格式yyyyMMddHHmmss</td> <td style="text-align: left;">20181116155621</td> </tr> <tr> <td style="text-align: left;">total_amount</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">支付金额,单位:分</td> <td style="text-align: left;">100</td> </tr> <tr> <td style="text-align: left;">trade_no</td> <td style="text-align: left;">string</td> <td style="text-align: left;">M</td> <td style="text-align: left;">订单号</td> <td style="text-align: left;">20000002814118090716435200001</td> </tr> <tr> <td style="text-align: left;">appId</td> <td style="text-align: left;">string</td> <td style="text-align: left;">C</td> <td style="text-align: left;">微信公众号支付返回字段,公众号appId</td> <td style="text-align: left;">wx9bcfaaa7b194c038</td> </tr> <tr> <td style="text-align: left;">timeStamp</td> <td style="text-align: left;">string</td> <td style="text-align: left;">C</td> <td style="text-align: left;">微信公众号支付返回字段,时间戳,部分系统取到的值为毫秒级,需要转换成秒(10位数字)</td> <td style="text-align: left;">1414561699</td> </tr> <tr> <td style="text-align: left;">nonceStr</td> <td style="text-align: left;">string</td> <td style="text-align: left;">C</td> <td style="text-align: left;">微信公众号支付返回字段,随机字符串</td> <td style="text-align: left;">1234</td> </tr> <tr> <td style="text-align: left;">packages</td> <td style="text-align: left;">string</td> <td style="text-align: left;"></td> <td style="text-align: left;">微信公众号支付返回字段,订单详情扩展字符串,统一下单接口返回的prepay_id参数值,提交格式:prepay_id=123</td> <td style="text-align: left;">prepay_id=123456789</td> </tr> <tr> <td style="text-align: left;">signType</td> <td style="text-align: left;">string</td> <td style="text-align: left;">C</td> <td style="text-align: left;">微信公众号支付返回字段,签名方式</td> <td style="text-align: left;">MD5,RSA</td> </tr> <tr> <td style="text-align: left;">paySign</td> <td style="text-align: left;">string</td> <td style="text-align: left;">C</td> <td style="text-align: left;">微信公众号支付返回字段,签名</td> <td style="text-align: left;"></td> </tr> <tr> <td style="text-align: left;">ali_trade_no</td> <td style="text-align: left;">object</td> <td style="text-align: left;">O</td> <td style="text-align: left;">支付宝JSAPI支付返回字段用于调起支付宝JSAPI</td> <td style="text-align: left;"></td> </tr> <tr> <td style="text-align: left;">attach</td> <td style="text-align: left;">string</td> <td style="text-align: left;">O</td> <td style="text-align: left;">扩展字段原样返回</td> <td style="text-align: left;">1234</td> </tr> <tr> <td style="text-align: left;">code_url</td> <td style="text-align: left;">string</td> <td style="text-align: left;">C</td> <td style="text-align: left;">跳转到该地址即可发起支付,与原生参数不同时返回</td> <td style="text-align: left;"></td> </tr> <tr> <td style="text-align: left;">sign</td> <td style="text-align: left;">string</td> <td style="text-align: left;">Y</td> <td style="text-align: left;">签名字符串,拼装所有传递参数,UTF-8编码,32位md5加密转换签名字符串</td> <td style="text-align: left;">336437c53711dd466154c4162cbe1c52</td> </tr> </tbody> </table> <p><strong>响应示例(微信)</strong></p> <pre><code></code></pre> <p><strong>响应示例(支付宝)</strong></p> <pre><code></code></pre> <h3><strong>对接流程</strong></h3> <p><strong>1.通过授权获取用户 open_id</strong></p> <ul> <li> <p>小程序端调用 wx.login(Object object)接口 [获取登录凭证(code)](<a href="https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html">https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html</a> &quot;获取登录凭证(code)&quot;)</p> </li> <li>商户服务端使用第一步获取的code 换取 open_id ,后台调用接口 [获取openID](<a href="https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html">https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html</a> &quot;获取openID&quot;)</li> </ul> <pre><code>GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&amp;amp;secret=SECRET&amp;amp;js_code=JSCODE&amp;amp;grant_type=authorization_code</code></pre> <p>商户也可以使用以下接口获取openid: 接口地址:<a href="http://xipay.xiangma365.com/api/openpay/jsapi/getminiopenid">http://xipay.xiangma365.com/api/openpay/jsapi/getminiopenid</a> 请求方式 POST 请求头部 Content-Type:application/json 请求参数:</p> <pre><code>{'code':res.code,'appid':appid,'secret':secret,'mch_no':mch_no}</code></pre> <p>(其中参数appid/secret与mch_no二选择一,选择mch_no时使用渠道小程序获取openid)</p> <p>示例如下:</p> <pre><code>wx.login({ provider: &amp;quot;weixin&amp;quot;, success: res =&amp;gt; { console.log('code=====',res.code); //u商户小程序appid和secret const appid = 'wx1cdb34ade5d35a4d'; // 微信小程序appid const secret = '96f8a00c73fddddfbcdc9121b0806ff4'; // 微信小程序secret //调用request请求api转换登录凭证 wx.request({ url: 'http://xipay.xiangma365.com/api/openpay/jsapi/getminiopenid', data:{ 'code':res.code, 'appid':appid, 'secret':secret }, method:'POST', header: { 'content-type': 'application/json' }, success: function (result) { if(result.statusCode === 200) { console.log('openid=======',result.data.data); // uni.setStorageSync('openid', result.data.openid); // uni.setStorageSync('session_key', result.data.session_key); } } }) } }) </code></pre> <p><strong>2.商户服务端使用 open_id 下单</strong></p> <p>接口使用上述接口:小程序支付 请求参数</p> <pre><code>{     &amp;quot;inst_no&amp;quot;: 60000001,     &amp;quot;mch_no&amp;quot;: &amp;quot;Y52212190001&amp;quot;,     &amp;quot;open_id&amp;quot;: &amp;quot;oyf3m5sNmCpb4lkZc-iGG30CHztg&amp;quot;,     &amp;quot;pay_type&amp;quot;: &amp;quot;400&amp;quot;,     &amp;quot;pay_trace_no&amp;quot;: &amp;quot;998877665544332009&amp;quot;,     &amp;quot;pay_time&amp;quot;: &amp;quot;20230227231190&amp;quot;,     &amp;quot;total_amount&amp;quot;: &amp;quot;1&amp;quot;,     &amp;quot;sign&amp;quot;: &amp;quot;ac6e3889707135f9d244ab088fc3e75b&amp;quot; }</code></pre> <p><strong>3.小程序端发起支付</strong></p> <p>小程序端使用返回的参数发起支付 调用wx.requestPayment(OBJECT)发起微信支付</p> <pre><code>wx.requestPayment( { 'timeStamp': '', 'nonceStr': '', 'package': '', 'signType': 'MD5', 'paySign': '', 'success':function(res){}, 'fail':function(res){}, 'complete':function(res){} })</code></pre>

页面列表

ITEM_HTML