sifangpay/resources/views/admin/layouts/apidoc.blade.php

975 lines
36 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<fieldset class="layui-elem-field layui-field-title site-title">
<legend><a name="quickstart">接口文档(2019年6月10日更新最新)</a></legend>
</fieldset>
<p>
<a href="{{ config_cache('config.doc') }}" target="_blank" class="layui-btn layui-btn-normal">点击下载SDK和文档</a>
</p>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
<legend>新增特性</legend>
</fieldset>
<ul class="layui-timeline">
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<h3 class="layui-timeline-title">6月10日</h3>
<p>
增加支付宝,微信,银行固码收款,微信支付宝收款
<br>支付类型传递tr_alipay,tr_weixin,tr_bank,tr_wxal
</p>
</div>
</li>
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<h3 class="layui-timeline-title">3月13日</h3>
<p>
增加数字货币通道,支持数字货币交易
<br>数字货币交易,支持全世界交易,只需要增加多一个支付类型:citpay,支付的手机号码参数:mobile,就可以了,其他的保持不变
</p>
<p>直接金额必须大于或等于100元</p>
</div>
</li>
</ul>
<div class="layui-card">
<div class="layui-card-header">文档用途</div>
<div class="layui-card-body">
本操作文档用来指导商户实现与电子商务支付网关系统的顺利对接。请相关技术开发人员详细阅读本文档
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">阅读对象</div>
<div class="layui-card-body">
商户系统设计人员、编程人员及测试人员
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">安全说明</div>
<div class="layui-card-body">
技术对接过程中 可能存在损失的几种情况(一定要注意)!
<div class="layui-text">
1<b class="text-red">密钥一定要妥善保存</b>,丢失之后不法分子可能会模拟异步通知导致未支付的订单因为验签通过而发货,造成损失!<br/>
2,订单支付成功之后我们会发送<b class="text-red">处理结果到异步通知notify_url</b><b
class="text-red">验签通过后,注意通知中的支付金额是否与用户实际支付金额相同</b><br/>
3<b class="text-red">同步通知result_url是用户跳转地址</b>,支付完成后或用户点击返回、查询等会调转到该地址,同时会调用查询接口查询订单信息,<b
class="text-red">但是此信息不能做为支付依据!</b>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">支付流程描述</div>
<div class="layui-card-body">
技术对接过程中 可能存在损失的几种情况(一定要注意)!
<div class="layui-text">
1) 商户根据客户的支付行为生成订单,包括商户号、订单号、金额、等支付要素,并提交付款请求。<br/>
2) 我们会对请求数据进行处理。收到付款请求数据后,会先进行安全校验等验证,一系列验证通过后便会处理完成这次发送过来的数据请求。<br/>
3)
用户支付完成后我们将支付结果返回异步通知由我们服务器主动发起通知根据商户提供的notify_url参数调用商户在请求时设定好的页面路径如果参数notify_url如果商户没设定则不会进行该操作<br/>
4) 商户接收到支付的成功异步通知请求后,输出反馈信息给我们,并完成相关业务逻辑。<br/>
5) 在第4步执行完成后会进行同步通知。根据商户提供的result_url参数在用户当前页面上通过自动跳转的方式跳回商户设定好的页面路径地址如果参数result_url为空则不会进行该操作
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">支付提交说明</div>
<div class="layui-card-body">
<h4>
提交请求方式: <b class="text-red">post</b>
</h4>
<div class="">
签名拼接参数和顺序,
<h3> 1.拼接参数</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">app_id=123456&amp;money=2.00&amp;notify_url=http://xx.com/NOTIFY&amp;out_trade_sn=20165655656&amp;return_url=http://xx.com&amp;token=xx89
</textarea>
<h3>2.把拼接参数转换成小写</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">app_id=123456&amp;money=2.00&amp;notify_url=http://xx.com/notify&amp;out_trade_sn=20165655656&amp;return_url=http://xx.com&amp;token=xx89
</textarea>
<p>上面有个NOTIFY要转换成小写notify反正只要字符串里面有大写都要转换成小写</p>
<h3>3.md5(拼接字符串转换小写的字符)</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">md5(app_id=123456&amp;money=2.00&amp;notify_url=http://xx.com/notify&amp;out_trade_sn=20165655656&amp;return_url=http://xx.com&amp;token=xx89)
</textarea>
4.刚才实例得到签名是:
<p>
0f754dfd10a22bc680f14a585a318356
</p>
5.你可以进行这样的参数作为验证参考
<p>注意金额一定是2位数小数点比如100需要补100.00</p>
<h5 class="text-red">最后提交支付参数最低包含如下</h5>
<p>
<pre class="layui-code">
[app_id] => 20190106135156mQY7BS
[money] => 60.00
[notify_url] => http://localhost/paydemo/php/demo1/paynotify.php
[out_trade_sn] => 201901110924141291
[return_url] => http://localhost/paydemo/php/demo1/payreturn.php
[sign] => b03121a7149a4159c5fdd39b3c7ec6ef
[version] => v1,
[pay_type]=>支付类型
</pre>
</p>
<div>模拟提交form参考
<form class="layui-form layui-form-pane" lay-filter="layuiadmin-form-role" id="layuiadmin-form-role"
style="padding: 20px 20px 20px 0">
<table>
<tr>
<td width="120">app_id</td>
<td><input type="text" name="app_id" value="123456"></td>
</tr>
<tr>
<td>notify_url</td>
<td><input type="text" name="notify_url" value="http://xx.com/notify"></td>
</tr>
<tr>
<td>out_trade_sn</td>
<td><input type="text" name="out_trade_sn" value="20165655656"></td>
</tr>
<tr>
<td>sign</td>
<td><input type="text" name="sign" value="0f754dfd10a22bc680f14a585a318356"></td>
</tr>
<tr>
<td>pay_type</td>
<td><input type="text" name="pay_type" value="money"></td>
</tr>
<tr>
<td>title</td>
<td><input type="text" name="title" value="可选"></td>
</tr>
<tr>
<td>attach</td>
<td><input type="text" name="attach" value="附加信息可选"></td>
</tr>
<tr>
<td>version</td>
<td><input type="text" name="version" value="v1"></td>
</tr>
<tr>
<td colspan="2" style="margin-top: 250px;text-align: center;padding-top: 20px">
<input type="button" value="提交支付">
</td>
</tr>
</table>
</form>
<p>
alipay支付宝即时到账电脑/移动支付web,wap支付
</p>
<p>
alipayscan扫码支付。
</p>
<p>
weixinh5微信H5支付
</p>
<p>
weixinscan微信扫码支付也就是PC支付。
</p>
<p>
usdtpay 数字货币USDT,比如比特币USDT币
</p>
<p>
citpay 数字货币,比如比特币USDT币
</p>
<p>
tr_wxalbank 微信支付宝所有银行多码合一
</p>
<p>
tr_wxal 微信支付宝2种支持收款支付
</p>
<p>
tr_weixin 固码微信收款支付
</p>
<p>
tr_alipay 固码支付宝收款支付
</p>
<p>
tr_bank 固码银行收款支付
</p>
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">支付请求接口参数</div>
<div class="layui-card-body">
<h4>
提交请求方式: <b class="text-red">post</b>
</h4>
<div class="layui-text">
<table class="layui-table">
<tbody>
<tr class="firstRow">
<td width="119" valign="center">
<p>
参数
</p>
</td>
<td width="113" valign="center">
<p>
参数说明
</p>
</td>
<td width="55" valign="center">
<p>
签名
</p>
</td>
<td width="110" valign="center">
<p>
类型
</p>
</td>
<td width="208" valign="center">
<p>
备注
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
app_id
</p>
</td>
<td width="113" valign="center">
<p>
商户id
</p>
</td>
<td width="55" valign="center">
<p class="text-red">
</p>
</td>
<td width="110" valign="center">
<p>
字符串
</p>
</td>
<td width="208" valign="center">
<p>
必须
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
out_trade_sn
</p>
</td>
<td width="113" valign="center">
<p>
商户订单号
</p>
</td>
<td width="55" valign="center">
<p class="text-red">
</p>
</td>
<td width="110" valign="center">
<p>
字符串最长50位
</p>
</td>
<td width="208" valign="center">
<p>
必须
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
username
</p>
</td>
<td width="113" valign="center">
<p>
会员昵称
</p>
</td>
<td width="55" valign="center">
<p>
</p>
</td>
<td width="110" valign="center">
<p>
字符串
</p>
</td>
<td width="208" valign="center">
<p>
必须
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
user_id
</p>
</td>
<td width="113" valign="center">
<p>
会员id
</p>
</td>
<td width="55" valign="center">
<p>
</p>
</td>
<td width="110" valign="center">
<p>
整型数字
</p>
</td>
<td width="208" valign="center">
<p>
必须
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
title
</p>
</td>
<td width="113" valign="center">
<p>
产品名称
</p>
</td>
<td width="55" valign="center">
<p>
</p>
</td>
<td width="110" valign="center">
<p>
字符串最常200位
</p>
</td>
<td width="208" valign="center">
<p>
可为空
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
money
</p>
</td>
<td width="113" valign="center">
<p>
价格
</p>
</td>
<td width="55" valign="center">
<p class="text-red">
</p>
</td>
<td width="110" valign="center">
<p>
float保留2位小数
</p>
</td>
<td width="208" valign="center">
<p>
必须,必须是2位小数点1.00,0.50
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p class="text-red">
mobile
</p>
<p>新增参数</p>
</td>
<td width="113" valign="center">
<p>
支付手机号码
</p>
</td>
<td width="55" valign="center">
<p></p>
<p>
<span class="text-red">数字货币citpay必填</span>
</p>
</td>
<td width="110" valign="center">
<p>
字符串最长11位
</p>
</td>
<td width="208" valign="center">
<p>
数字货币交易的使用,需要手机号码来完成支付
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
attach
</p>
</td>
<td width="113" valign="center">
<p>
附加信息
</p>
</td>
<td width="55" valign="center">
<p>
</p>
</td>
<td width="110" valign="center">
<p>
字符串最长255位
</p>
</td>
<td width="208" valign="center">
<p>
原样返回,可为空
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
return_url
</p>
</td>
<td width="113" valign="center">
<p>
同步地址
</p>
</td>
<td width="55" valign="center">
<p class="text-red">
</p>
</td>
<td width="110" valign="center">
<p>
字符串最长255位
</p>
</td>
<td width="208" valign="center">
<p>
必须
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
notify_url
</p>
</td>
<td width="113" valign="center">
<p>
异步回调地址
</p>
</td>
<td width="55" valign="center">
<p class="text-red">
</p>
</td>
<td width="110" valign="center">
<p>
字符串最长255位
</p>
</td>
<td width="208" valign="center">
<p>
必须
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
pay_type
</p>
</td>
<td width="113" valign="center">
<p>
支付类型
</p>
</td>
<td width="55" valign="center">
<p>
</p>
</td>
<td width="110" valign="center">
<p>
目前支持全部
</p>
<p>
</p>
</td>
<td width="208" valign="center">
<p>
alipay支付宝即时到账电脑/移动支付web,wap支付
</p>
<p>
alipayscan扫码支付。
</p>
<p>
weixinh5微信在线H5支付
</p>
<p>
weixinscan微信扫码在线支付也就是PC支付。
</p>
<p>
usdtpay 数字货币USDT,比如比特币USDT币
</p>
<p>
citpay 数字货币,比如比特币USDT币
</p>
<p>
tr_wxalbank 微信支付宝所有银行多码合一
</p>
<p>
tr_wxal 微信支付宝二码合一
</p>
<p>tr_weixin 固码微信收款支付</p>
<p>tr_alipay 固码支付宝收款支付</p>
<p>tr_bank 固码银行收款支付</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
pay_channel
</p>
</td>
<td width="113" valign="center">
<p>
产品id
</p>
</td>
<td width="55" valign="center">
<p>
</p>
</td>
<td width="110" valign="center">
<p>
字符串
</p>
<p>
</p>
</td>
<td width="208" valign="center">
<p>
可传,可不传 没有明确给产品id时不用传
</p>
</td>
</tr>
<tr>
<td width="119" valign="center"
>
<p>
sign
</p>
</td>
<td width="113" valign="center"
>
<p>
签名认证串
</p>
</td>
<td width="55" valign="center"
>
</td>
<td width="110" valign="center"
>
<p>
字符串
</p>
</td>
<td width="208" valign="center">
<p>
必须
</p>
</td>
</tr>
<tr>
<td width="119" valign="center">
<p>
version
</p>
</td>
<td width="113" valign="center">
<p>
版本号
</p>
</td>
<td width="55" valign="center">
<p>
</p>
</td>
<td width="110" valign="center">
<p>
字符串
</p>
</td>
<td width="208" valign="center">
<p>
如果不传入默认是v1,请填写:v1版本后续增加会说明。
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">说明</div>
<div class="layui-card-body">
<div class="layui-text">
<p>1、签名认证sign的生成app_id ,money ,notify_url, out_trade_sn, return_url, token这些按照 <span
class="text-red">键值</span>升序排序,然后<span class="text-red">组合成地址url字符串</span>,然后<span
class="text-red">转换成小写</span>,进行<span class="text-red">md5加密</span>.</p>
<div class="layui-elem-quote m-t-10">
<p>如果您不知道排序顺序最后的形成的排序是app_id、money、notify_url、out_trade_sn、return_url、token</p>
</div>
<p>2、回调地址必须是绝对能访问的地址回调地址是无法获得用户登陆状态session和cookies请注意地址比如http://www.xx.com/notify</p>
<p>3、提交之后,如果我们这边风控监控,存在的时候会返回通道关闭,通常都是直接到支付的</p>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">回调参数</div>
<div class="layui-card-body">
<h4>同步回调方式是:get</h4>
<h4 class="text-grep">异步回调方式是:post,回调请求的ip为 58.82.232.41 请加白</h4>
<div class="layui-text">
<table class="layui-table">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>参数</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>money</td>
<td>充值金额</td>
<td></td>
</tr>
<tr>
<td>pay_money</td>
<td>成功支付金额</td>
<td></td>
</tr>
<tr>
<td>out_trade_sn</td>
<td>您的支付订单号</td>
<td></td>
</tr>
<tr>
<td>order_sn</td>
<td>平台订单号</td>
<td></td>
</tr>
<tr>
<td>pay_order_sn</td>
<td>支付交易流水号</td>
<td>
<p class="text-red">数字货币没有交易流水号返回</p>
</td>
</tr>
<tr>
<td>attch</td>
<td>附加信息</td>
<td>您提交过来的信息我们将原样返回字符串如果是数组请使用json然后urlencode过来</td>
</tr>
<tr>
<td>sign</td>
<td>签名认证字符串</td>
<td></td>
</tr>
<tr>
<td>pay_status</td>
<td>订单状态</td>
<td>pay_status 订单状态:1,交易成功,0,未支付2,处理中,3交易失败</td>
</tr>
<tr>
<td>return_url</td>
<td>同步回调地址</td>
<td></td>
</tr>
<tr>
<td>notify_url</td>
<td>异步回调地址</td>
<td></td>
</tr>
</tbody>
</table>
<div class="layui-card">
<div class="layui-card-header text-red">回调验证签名说明</div>
<div class="layui-card-body">
<div class="">
<h3> 1.拼接参数</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">app_id=123456&amp;money=2.00&amp;notify_url=http://xx.com/NOTIFY&amp;out_trade_sn=20165655656&amp;return_url=http://xx.com&amp;token=xx89
</textarea>
<h3>2.把拼接参数转换成小写</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">app_id=123456&amp;money=2.00&amp;notify_url=http://xx.com/notify&amp;out_trade_sn=20165655656&amp;return_url=http://xx.com&amp;token=xx89
</textarea>
<p>上面有个NOTIFY要转换成小写notify反正只要字符串里面有大写都要转换成小写</p>
<h3>3.md5(拼接字符串转换小写的字符)</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">md5(app_id=123456&amp;money=2.00&amp;notify_url=http://xx.com/notify&amp;out_trade_sn=20165655656&amp;return_url=http://xx.com&amp;token=xx89)
</textarea>
4.刚才实例得到签名是:
<p>
0f754dfd10a22bc680f14a585a318356
</p>
<h3><b class="text-red">注意,这里很容易验签出错</b></h3>
<h3>5.回调签名md5(token+刚才得到的签名pay_money=值pay_status=)</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">md5(xx89(md5(转换小写(app_id=123456&amp;money=2.00&amp;notify_url=http://xx.com/notify&amp;out_trade_sn=20165655656&amp;return_url=http://xx.com&amp;token=xx89)))pay_money=1.00pay_status=1)
</textarea>
<p>app_id由我们开户给你获得</p>
</div>
</div>
</div>
<div class="layui-elem-quote m-t-10">
<p>如果您的订单,完成更新,请返回 <b class="text-red">success</b>告知我们,我们将不会再次发送回调 </p>
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">查询订单</div>
<div class="layui-card-body">
<h4 class="text-grep">查询方式是:post接口为 /order/check</h4>
<div class="layui-text">
<table class="layui-table">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>参数</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>app_id</td>
<td>app_id</td>
<td></td>
</tr>
<tr>
<td>time</td>
<td>时间戳</td>
<td></td>
</tr>
<tr>
<td>order_sn</td>
<td>平台订单号</td>
<td></td>
</tr>
<tr>
<td>sign</td>
<td>签名认证字符串</td>
<td></td>
</tr>
</tbody>
</table>
<div class="layui-card">
<div class="layui-card-header text-red">查询订单签名说明</div>
<div class="layui-card-body">
<div class="">
<h3> 1.拼接参数</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">app_id=123456&order_sn=20165655656&amp;time=111111&amp;token=xx89
</textarea>
<h3>2.把拼接参数转换成小写</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">app_id=123456&order_sn=20165655656&amp;time=111111&amp;token=xx89
</textarea>
<p>反正只要字符串里面有大写,都要转换成小写</p>
<h3>3.md5(拼接字符串转换小写的字符)</h3>
<textarea readonly style="width: 100%; " class="layui-textarea">md5(app_id=123456&order_sn=20165655656&amp;time=111111&amp;token=xx89)
</textarea>
4.得到签名是:
<p>
0f754dfd10a22bc680f14a585a318356
</p>
<p>app_id由我们开户给你获得</p>
</div>
</div>
</div>
<h4 class="text-grep">返回参数说明</h4>
<table class="layui-table">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>参数</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>error</td>
<td>错误为0时为成功</td>
<td></td>
</tr>
<tr>
<td>msg</td>
<td>错误</td>
<td></td>
</tr>
<tr>
<td>order</td>
<td>订单信息</td>
<td></td>
</tr>
</tbody>
</table>
<h4 class="text-grep">order 信息只有在error 为0时才返回</h4>
<table class="layui-table">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>参数</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>order_sn</td>
<td>订单号</td>
<td></td>
</tr>
<tr>
<td>order_money</td>
<td>金额</td>
<td></td>
</tr>
<tr>
<td>pay_money</td>
<td>金额</td>
<td></td>
</tr>
<tr>
<td>pay_status</td>
<td>状态 </td>
<td>pay_status 订单状态:1,交易成功,0,未支付2,处理中,3交易失败</td>
</tr>
<tr>
<td>order_at</td>
<td>订单时间</td>
<td></td>
</tr>
<tr>
<td>sign</td>
<td>签名</td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>