JSAPI支付接口
<p><strong>接口描述:</strong> </p>
<ul>
<li>用于支付宝生活号支付,公众号支付,微信浏览器打开链接支付,微信扫码打开链接支付等支付场景</li>
<li>微信JSAPI调起支付https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=7_7</li>
<li>支付宝JSAPI唤起收银台支付https://opendocs.alipay.com/open/common/105591</li>
</ul>
<p><strong>接口URL:</strong> </p>
<ul>
<li>测试<code>https://test.gdyfsk.com/yfpay/v3/jspay</code></li>
<li>正式<code>https://open.gdyfsk.com/yfpay/v3/jspay</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>POST </li>
</ul>
<p><strong>请求头部:</strong></p>
<table>
<thead>
<tr>
<th>标签</th>
<th>必填</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>Content-Type</td>
<td>是</td>
<td>application/json</td>
</tr>
</tbody>
</table>
<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>参数示例</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">inst_no</td>
<td style="text-align: left;">string(8)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">机构号 ,系统分配</td>
<td>900075</td>
</tr>
<tr>
<td style="text-align: left;">mch_no</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">商户号</td>
<td>Y52211090004</td>
</tr>
<tr>
<td style="text-align: left;">shop_no</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">门店号</td>
<td>86000033007</td>
</tr>
<tr>
<td style="text-align: left;">terminal_no</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">乐收赢终端号或设备SN</td>
<td>70020283</td>
</tr>
<tr>
<td style="text-align: left;">pay_type</td>
<td style="text-align: left;">string(3)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">支付类型:300支付宝,400微信</td>
<td>300</td>
</tr>
<tr>
<td style="text-align: left;">pay_trace_no</td>
<td style="text-align: left;">string(64)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">请求流水号(在商户系统内唯一)</td>
<td>51c7d68424e5492199cf7f4734a2b977</td>
</tr>
<tr>
<td style="text-align: left;">pay_time</td>
<td style="text-align: left;">string(14)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">请求支付时间,yyyyMMddHHmmss格式</td>
<td>20181116155621</td>
</tr>
<tr>
<td style="text-align: left;">total_amount</td>
<td style="text-align: left;">string(8)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">支付金额,单位:分</td>
<td>100</td>
</tr>
<tr>
<td style="text-align: left;">open_id</td>
<td style="text-align: left;">string(64)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">用户标识(微信openid/支付宝userid)没有公众号的商户看备注2</td>
<td>afcdasdasdasd3213dxdasdad</td>
</tr>
<tr>
<td style="text-align: left;">appid</td>
<td style="text-align: left;">string(64)</td>
<td style="text-align: left;">微信公众号的appid(此处取值优先于后台配置)</td>
<td style="text-align: left;">wxbca6c935a45dcdc5</td>
</tr>
<tr>
<td style="text-align: left;">order_body</td>
<td style="text-align: left;">string(128)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">订单描述</td>
<td>苹果笔记本</td>
</tr>
<tr>
<td style="text-align: left;">attach</td>
<td style="text-align: left;">string(128)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">自定义参数,原样返回</td>
<td>1234</td>
</tr>
<tr>
<td style="text-align: left;">notify_url</td>
<td style="text-align: left;">string(255)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">回调地址(如果传值就以此为主,否则默认用渠道配置)</td>
<td></td>
</tr>
<tr>
<td style="text-align: left;">undiscount_amount</td>
<td style="text-align: left;">string(8)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">不参与打折金额 单位:分)</td>
<td></td>
</tr>
<tr>
<td style="text-align: left;">food_order_type</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">点餐场景类型(针对扫码点餐专用)</td>
<td>qr_order(店内扫码点餐),pre_order(预点到店自提),home_delivery (外送到家),direct_payment(直接付款),other(其他)</td>
</tr>
<tr>
<td style="text-align: left;">goods_detail</td>
<td style="text-align: left;">object</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">详情内容,json格式的字符串</td>
<td>goods_detail":[{\"goods_id\":\"800510101\",\"goods_name\":\"ceshi\",\"goods_price\":\"40\",\"goods_quantity\":\"2\"}]"</td>
</tr>
<tr>
<td style="text-align: left;">--goods_id</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">商品编号</td>
<td>8005</td>
</tr>
<tr>
<td style="text-align: left;">--goods_name</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">商品名称</td>
<td>苹果</td>
</tr>
<tr>
<td style="text-align: left;">--goods_quantity</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">商品数量</td>
<td>1</td>
</tr>
<tr>
<td style="text-align: left;">--goods_price</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">商品单价,单位:分</td>
<td>100</td>
</tr>
<tr>
<td style="text-align: left;">share_type</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">1.乐收赢分账 2.三方分账</td>
</tr>
<tr>
<td style="text-align: left;">share_detail</td>
<td style="text-align: left;">object</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">分账详情,json格式的字符串</td>
<td>"{\"share_count\":\"2\",\"share_fee_mch\":\"851811130002\",\"share_array\":[{\"share_mch\":\"851811130002\",\"share_amount\":\"122\"},{\"share_mch\":\"851811130003\",\"share_amount\":\"322\"}]}"</td>
</tr>
<tr>
<td style="text-align: left;">--share_count</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">分账条目数</td>
<td>2</td>
</tr>
<tr>
<td style="text-align: left;">--share_fee_mch</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">承担手续费的商户</td>
<td>851811130002</td>
</tr>
<tr>
<td style="text-align: left;">--share_array</td>
<td style="text-align: left;">array</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">分账数组,json数组</td>
<td></td>
</tr>
<tr>
<td style="text-align: left;">----share_mch</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">分账商户号</td>
<td>851811130002</td>
</tr>
<tr>
<td style="text-align: left;">----share_amount</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">分账金额,单位:分</td>
<td>122</td>
</tr>
<tr>
<td style="text-align: left;">reqip</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">请求ip</td>
<td>220.181.108.156</td>
</tr>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">签名字符串,拼装所有值不为空(为null不参与,空字符串参与)</td>
<td>51c7d68424e5492199cf7f4734a2b977</td>
</tr>
</tbody>
</table>
<p><code>备注1:</code> sign 字段传递参数按照字典序用&符号连接最后拼接机构key,UTF-8编码,32位md5加密转换, 示例:a=1&b=1&c=1&d=1&key=51c7d68424e5492199cf7f4734a2b977,详细见 [接入指引](<a href="https://www.showdoc.com.cn/leshouying/10788371225650114">https://www.showdoc.com.cn/leshouying/10788371225650114</a> "接入指引")
<code>备注2:</code> 服务商模式的商户,进行JS支付时需要通过服务商公众号进行授权,详细见<a href="https://www.showdoc.com.cn/leshouying/10788378537054764">获取openid</a></p>
<p><strong>请求示例:</strong></p>
<pre><code class="language-json">{
&quot;inst_no&quot;: 900075,
&quot;mch_no&quot;: &quot;Y52211090004&quot;,
&quot;pay_type&quot;: &quot;400&quot;,
&quot;pay_trace_no&quot;: &quot;113332313422343002&quot;,
&quot;pay_time&quot;: &quot;20480776150904&quot;,
&quot;total_amount&quot;: &quot;2&quot;,
&quot;openid&quot;: &quot;afcdasdasdasd3213dxdasdad&quot;,
&quot;order_body&quot;: &quot;休休测试&quot;,
&quot;attach&quot;: &quot;888&quot;,
&quot;sign&quot;: &quot;6e461f5c95c055b3aed017b8fcb8a1a9&quot;
}</code></pre>
<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>参数示例</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">return_code</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">响应码:SUCCESS成功,FAIL失败,响应码仅代表通信或参数</td>
<td>SUCCESS</td>
</tr>
<tr>
<td style="text-align: left;">return_msg</td>
<td style="text-align: left;">string(128)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">返回信息提示,“支付成功”,“支付中”,“参数不合法” 等</td>
<td>支付成功</td>
</tr>
<tr>
<td style="text-align: left;">result_code</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">业务结果:PAY_SUCCESS 支付成功 ,PAY_IN_PROCESS 支付中 ,PAY_FAIL 支付失败,只有在return_code为SUCCESS时才会返回。</td>
<td>PAY_SUCCESS</td>
</tr>
<tr>
<td style="text-align: left;">mch_no</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">商户号</td>
<td>Y52211090004</td>
</tr>
<tr>
<td style="text-align: left;">shop_no</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">门店号</td>
<td>86000033007</td>
</tr>
<tr>
<td style="text-align: left;">mch_name</td>
<td style="text-align: left;">string(80)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">商户名称</td>
<td>银飞测试</td>
</tr>
<tr>
<td style="text-align: left;">shop_name</td>
<td style="text-align: left;">string(50)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">门店名称</td>
<td>1号店</td>
</tr>
<tr>
<td style="text-align: left;">pay_type</td>
<td style="text-align: left;">string(3)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">支付类型:300支付宝,400微信</td>
<td>300</td>
</tr>
<tr>
<td style="text-align: left;">pay_trace_no</td>
<td style="text-align: left;">string(64)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">请求流水号(必须在商户系统内唯一)</td>
<td>51c7d68424e5492199cf7f4734a2b977</td>
</tr>
<tr>
<td style="text-align: left;">pay_time</td>
<td style="text-align: left;">string(14)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">请求交易时间,yyyyMMddHHmmss</td>
<td>20181116155621</td>
</tr>
<tr>
<td style="text-align: left;">total_amount</td>
<td style="text-align: left;">string(8)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">支付金额,单位:分</td>
<td>100</td>
</tr>
<tr>
<td style="text-align: left;">trade_no</td>
<td style="text-align: left;">string(64)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">订单号</td>
<td>20000002814118090716435200001</td>
</tr>
<tr>
<td style="text-align: left;">attach</td>
<td style="text-align: left;">string(128)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">扩展字段原样返回</td>
<td>1234</td>
</tr>
<tr>
<td style="text-align: left;">appId</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">微信公众号支付返回字段,公众号appId</td>
<td></td>
</tr>
<tr>
<td style="text-align: left;">timeStamp</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">微信公众号支付返回字段,时间戳,部分系统取到的值为毫秒级,需要转换成秒(10位数字)。</td>
<td>1414561699</td>
</tr>
<tr>
<td style="text-align: left;">nonceStr</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">微信公众号支付返回字段,随机字符串</td>
<td>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=</td>
<td>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;"></td>
<td style="text-align: left;">微信公众号支付返回字段,签名方式</td>
<td>MD5,RSA</td>
</tr>
<tr>
<td style="text-align: left;">paySign</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">微信公众号支付返回字段,签名</td>
<td></td>
</tr>
<tr>
<td style="text-align: left;">ali_trade_no</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">支付宝JSAPI支付返回字段用于调起支付宝JSAPI</td>
<td></td>
</tr>
<tr>
<td style="text-align: left;">code_url</td>
<td style="text-align: left;">string(-)</td>
<td style="text-align: left;">跳转到该地址即可发起支付,与原生参数不同时返回</td>
</tr>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">string(32)</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">签名字符串,拼装所有传递参数,UTF-8编码,32位md5加密转换签名字符串</td>
<td>51c7d68424e5492199cf7f4734a2b977</td>
</tr>
</tbody>
</table>
<p><strong>返回示例:</strong></p>
<p>成功返回内容:</p>
<pre><code class="language-json">{
&quot;return_code&quot;: &quot;SUCCESS&quot;,
&quot;return_msg&quot;: &quot;预支付成功&quot;,
&quot;result_code&quot;: &quot;PAY_SUCCESS&quot;,
&quot;pay_type&quot;: &quot;400&quot;,
&quot;mch_name&quot;: &quot;银飞测试&quot;,
&quot;shop_name&quot;: &quot;&quot;,
&quot;mch_no&quot;: &quot;Y52211090004&quot;,
&quot;shop_no&quot;: &quot;&quot;,
&quot;pay_trace_no&quot;: &quot;2658408724074479a5f00486f457f5fa&quot;,
&quot;pay_time&quot;: &quot;20191205100012&quot;,
&quot;total_amount&quot;: &quot;1&quot;,
&quot;trade_no&quot;: &quot;200003529F4319120510000821375&quot;,
&quot;appId&quot;: null,
&quot;timeStamp&quot;: null,
&quot;nonceStr&quot;: null,
&quot;packages&quot;: null,
&quot;signType&quot;: null,
&quot;paySign&quot;: null,
&quot;ali_trade_no&quot;: null,
&quot;attach&quot;: &quot;附加字段&quot;,
&quot;code_url&quot;: &quot;http://pay.xxx.com/pay/buypay.do&quot;,
&quot;sign&quot;: &quot;3e76fb70ed0fe13c7c3e76739e76ef0b&quot;
}</code></pre>