人工下单
<p>[TOC]</p>
<h3>1、【人工下单】接口功能说明</h3>
<pre><code>乐玩方客服人工下单,会调用CP方服务端下单接口,下单成功必须响应CP方的订单号,下单失败我方梯度重试。下单成功或失败都必须响应正确的json格式。</code></pre>
<h5>请求URL</h5>
<ul>
<li>CP方提供</li>
</ul>
<h5>请求方式</h5>
<ul>
<li>POST </li>
<li>Content-Type:application/json</li>
</ul>
<h5>请求参数</h5>
<table>
<thead>
<tr>
<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;">game </td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>乐玩游戏标识</td>
</tr>
<tr>
<td style="text-align: left;">uid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>乐玩uid</td>
</tr>
<tr>
<td style="text-align: left;">serverId</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>研发区服ID</td>
</tr>
<tr>
<td style="text-align: left;">roleId</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>研发角色ID</td>
</tr>
<tr>
<td style="text-align: left;">propId</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>研发商品ID</td>
</tr>
<tr>
<td style="text-align: left;">propName</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>研发商品名称</td>
</tr>
<tr>
<td style="text-align: left;">amount</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>研发商品单价,单位分</td>
</tr>
<tr>
<td style="text-align: left;">buyQuan</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>研发商品购买数量</td>
</tr>
<tr>
<td style="text-align: left;">timeStamp</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>时间戳,单位为:s</td>
</tr>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>签名,签名方式见下说明</td>
</tr>
</tbody>
</table>
<h5>返回示例</h5>
<pre><code>// 成功
{
&quot;code&quot;: 1,
&quot;msg&quot;: &quot;ok&quot;,
&quot;d&quot;: {
&quot;orderNo&quot;: &quot;lewan30161863_1705542683352&quot;,
&quot;attach&quot;: &quot;&quot;
}
}
// 异常
{
&quot;code&quot;: -1,
&quot;msg&quot;: &quot;找不到角色信息&quot;,
&quot;d&quot;:[]
}
</code></pre>
<h5>响应参数说明</h5>
<table>
<thead>
<tr>
<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;">code </td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>请求状态,1成功,非1值视为失败,乐玩方会按时间梯度尝试重发</td>
</tr>
<tr>
<td style="text-align: left;">msg</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>请求结果说明</td>
</tr>
<tr>
<td style="text-align: left;">d.orderNo</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>cp方订单号</td>
</tr>
<tr>
<td style="text-align: left;">d.attach</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>附带参数,支付成功的回调中会带上该参数</td>
</tr>
</tbody>
</table>
<h5>签名方式</h5>
<ul>
<li><strong>参与签名字段说明</strong>
以上请求参数除sign外都需要参与签名</li>
<li><strong>签名规则</strong>
1、所有参与签名的参数,按参数名(key)字典序升序排序,以key=value格式,并用【&】连接组成签名串,最后连接<span style="color:red;font-weight:bold">服务端签名秘钥(支付密钥)</span>
2、对签名串进行MD5加密得到签名(32位小写字符串),PHP示例如下:</li>
</ul>
<pre><code>&lt;?php
function getSign($params, $secret)
{
//剔除sign字段
if (isset($params['sign'])) unset($params['sign']);
//对数组按key升序排序
ksort($params);
//拼接签名串
$formatStr = '';
foreach ($params as $key =&gt; $v) {
$formatStr .= $key . '=' . $v . '&amp;';
}
return md5(substr($formatStr, 0, -1) . $secret);
}
// 服务端签名秘钥(支付密钥)
$secret = 'abc';
// 请求参数
$params = [
'game' =&gt; 'aaa-weixin',
'roleId' =&gt; '1520001',
'serverId' =&gt; '10001',
...
];
// 签名
$sign = getSign($params, $secret);
</code></pre>