玖壹权益对接文档说明
<h1>开通说明</h1>
<p>玖壹权益对接api下单开通,需要找管理员开通相应的权限,必须要进行注册玖壹权益账号,管理员开通后,则会颁发相应的授权相关信息。</p>
<ul>
<li>
<p>appid <code>api下单用户ID</code></p>
</li>
<li>
<p>appsecret <code>api下单用户秘钥</code></p>
</li>
<li>网关地址 <code>api下单用户请求网关地址</code></li>
</ul>
<h1>ip白名单</h1>
<p>对接api下单的合作商,必须提供合作商的的IP地址,否则无法通过API进行下单。提供IP给管理员,增加即可。</p>
<h1>玖壹权益对接API接口说明</h1>
<ul>
<li>
<p>请求协议:http请</p>
</li>
<li>
<p>请求方式:POST</p>
</li>
<li>
<p>content-type:application/x-www-form-urlencoded</p>
</li>
<li>网关地址:请联系管理员</li>
</ul>
<h1>签名算法方式说明</h1>
<h3>第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。</h3>
<p>特别注意以下重要规则:</p>
<ul>
<li>
<p>参数名ASCII码从小到大排序(字典序);</p>
</li>
<li>
<p>如果参数的值为空不参与签名;</p>
</li>
<li>
<p>参数名区分大小写;</p>
</li>
<li>特别注意:<code>notify_url 必须经过 urlencode 后进行参与加密</code></li>
</ul>
<h3>第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。</h3>
<p>举例:</p>
<p>假设传送的参数如下(假设而已,实际需要提交哪些参数请以对应api说明为准):</p>
<pre><code>account: 15565601175
appid: 19190009
card_id: 43
datetime: 1649951134
money: 1025
notify_url: http://www.testxxx.com/test/callback
number: 1
out_order_id: 202209989882384</code></pre>
<p>第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:</p>
<p><code>stringA=&quot;account=15565601165&amp;appid=19190009&amp;card_id=43&amp;datetime=1649951134&amp;money=1025&amp;notify_url=http%3A%2F%2Fwww.testxxx.com%2Ftest%2Fcallback&amp;number=1&amp;out_order_id=202209989882384&quot;;</code></p>
<p>第二步:拼接API密钥并且md5加密后转为大写:</p>
<p><code>stringSignTemp=&quot;stringA&amp;appsecret=您的秘钥&quot;</code></p>
<p><code>sign=MD5(stringSignTemp).toUpperCase()=&quot;A1F62DC3902EDB420343397CE3ACA4C2&quot;</code></p>
<p>最终得到最终发送的数据结果:</p>
<pre><code>code: 1
msg: 下单成功
data: API20220403223244</code></pre>
<h1>状态码说明</h1>
<p>服务端返回格式</p>
<pre><code>{
code: 1,
msg: '下单成功',
data: '202209090232323'
}</code></pre>
<table>
<thead>
<tr>
<th>状态码 code</th>
<th>解释</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>失败(可根据msg提示,查看具体失败原因)</td>
</tr>
<tr>
<td>1</td>
<td>成功</td>
</tr>
</tbody>
</table>
<h3>附php 签名加密算法</h3>
<pre><code>/**
* @param $data // 参与签名的数据
* @param $appsecret // 用户的appsecret的秘钥
* @return string
*/
function makeSign($data, $appsecret): string
{
ksort($data);
$paramsStr = http_build_query($data).'&amp;appsecret='.$appsecret;
return strtoupper(md5($paramsStr));
}</code></pre>