订单状态回调
<h2>订单状态回调</h2>
<ul>
<li>订单状态发生变化时,平台会回调通知商家,通知路径优先使用下单时的传参<code>callbackUrl</code>,callbackUrl为空时则使用开户时设置的回调地址,都为空则不回调;</li>
<li>回调时以<strong>POST</strong>的方式请求,请求参数为<strong>JSON格式的字符串</strong>,方便商家验签,验签相关参数以Http头的方式传递;</li>
<li>商家接收到回调请求后应对请求验签,验签方法及示例代码可参考<em>验证签名</em>;</li>
<li>商家的回调接口处理完成后,应返回字符串<strong>SUCCESS</strong>表示成功(不区分大小写),返回其它信息或者异常表示回调失败;</li>
<li>回调失败时平台会再次尝试回调,尝试间隔为<code>15s, 30s, 3m, 10m, 20m, 30m, 60m, 3h, 6h</code></li>
<li>商家应识别订单是否回调过,防止重复回调产生业务问题</li>
</ul>
<p><strong>Type:</strong> POST</p>
<p><strong>Content-Type:</strong> application/json; charset=utf-8</p>
<p><strong>Description:</strong> 平台开放接口回调</p>
<p><strong>Request-headers:</strong></p>
<table>
<thead>
<tr>
<th>Header</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
<th>Since</th>
</tr>
</thead>
<tbody>
<tr>
<td>businessId</td>
<td>string</td>
<td>业务ID,由平台提供</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>nonce</td>
<td>string</td>
<td>随机字符串,需保证每次请求不同</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>timestamp</td>
<td>string</td>
<td>时间戳,毫秒值</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>sign</td>
<td>string</td>
<td>签名值</td>
<td>true</td>
<td>-</td>
</tr>
</tbody>
</table>
<p><strong>Body-parameters:</strong></p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
<th>Since</th>
</tr>
</thead>
<tbody>
<tr>
<td>orderCode</td>
<td>string</td>
<td>平台订单号</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>bizCode</td>
<td>string</td>
<td>业务方订单号</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>mobile</td>
<td>string</td>
<td>手机号</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>account</td>
<td>string</td>
<td>账号</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>settlementPrice</td>
<td>number</td>
<td>结算金额</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>orderStatus</td>
<td>int32</td>
<td>订单状态</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>orderMessage</td>
<td>string</td>
<td>订单状态消息</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>orderFailStatus</td>
<td>int32</td>
<td>订单异常状态</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>orderFailMessage</td>
<td>string</td>
<td>订单异常状态消息</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>orderVoucher</td>
<td>string</td>
<td>充值凭证</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>dealCompleteTime</td>
<td>long</td>
<td>充值完成时间(时间戳毫秒值)</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>consumeStatus</td>
<td>int</td>
<td>核销状态:1 未核销、2 已核销、3 已过期</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>consumeTime</td>
<td>long</td>
<td>核销时间(时间戳毫秒值)</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>type</td>
<td>int</td>
<td>券码类型,通过礼品卡采购下单的会返回该字段,1-兑换URL,2-卡号卡密</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>couponInfo</td>
<td>Array</td>
<td>券码集合,通过礼品卡采购下单的会返回该字段,卡号卡密会加密,需自行解密,解密方式参考[卡券解密](<a href="https://www.showdoc.com.cn/1550488137087711/11484918744439323">https://www.showdoc.com.cn/1550488137087711/11484918744439323</a> "卡券解密")</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>└─cardNo</td>
<td>String</td>
<td>卡号(不存在卡号时则为null)</td>
<td>false</td>
<td>-</td>
</tr>
<tr>
<td>└─cdkey</td>
<td>String</td>
<td>卡密or短链</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>└─validityDate</td>
<td>date</td>
<td>有效截止期</td>
<td>false</td>
<td>-</td>
</tr>
</tbody>
</table>
<p><strong>Request-example:</strong></p>
<pre><code>curl -X POST -H 'Content-Type: application/json; charset=utf-8' -H 'businessId:55' -H 'nonce:55' -H 'timestamp:1628757969177' -H 'sign:55' -i /v1/openapi/order/callback? --data '{
&quot;orderCode&quot;: &quot;33976&quot;,
&quot;bizCode&quot;: &quot;33976&quot;,
&quot;mobile&quot;: &quot;17780120049&quot;,
&quot;settlementPrice&quot;: 998,
&quot;orderStatus&quot;: 262,
&quot;orderMessage&quot;: &quot;success&quot;,
&quot;orderFailStatus&quot;: 285,
&quot;orderFailMessage&quot;: &quot;success&quot;,
&quot;orderVoucher&quot;: &quot;3320220520164751762855&quot;,
&quot;type&quot;: 2,
&quot;couponInfo&quot;: [
{
&quot;cardNo&quot;: &quot;pl9NTIOr7CGd1F+fE/8OSvrWJ5ZB0gVZ3dWkf1ieP9onLqQf8YhqbQQ8ZEurKWWpmQDGt9ajNh1X1iVZU3QKuWz0oqe2oFCpnhtFNcDqwoOuJAkvp+SCApjDm+OCex+QBKQQGbCYo+M+v/VHS8yOwXUEWX65sTN/XomCIk5HW63TGkYx2aH6/8YxaKn7E6JmkxA3i6LRNGkzJXPvL9yUGCrFchU1KIY0+0MRQstpB2X5HOLPfabQ4luADWt1KHmmxlZg419+XchvfB8QcBvIf7I8v3ofQDKjFESjo3RkwkSX0+7XdyUCgP25MwckF69E9Wi4p+8URXkgTUXmxOXsXw\u003d\u003d&quot;,
&quot;cdkey&quot;: &quot;bTVW2z9NH1+pJKOwHFXQzkvAKFEoKo9TtNy1tcPqaP72qUAQeJvoNhYGzvwv8NlLFQaAUz8qVRF/mVrIBjRoukaBID4MwS8Mqa5zW0okKT8OnO8bjeF7bTo0qrT2amRGB3HH3qGudoz8OLe4KTIz/U40Bh0tK7xfwHVld9ujEq0msNCWPOvFV2lZ/80eYU95dyp3ijw358+hXQsb0q96YwTJW+EOk5LRnADzJ0K4av0Q+dKfuSFzH2Ae4JaklJaZJhJ4kmMBRHPY8yZaqQ/pXwMtf8EHvJHJ6wqqDnv76rt/ZQhH6rGiluKPQRSeLd0kIwSXowIEIV59iaKlzzPFUg\u003d\u003d&quot;,
&quot;validityDate&quot;: &quot;2024-01-01&quot;
},
{
&quot;cardNo&quot;: &quot;BAuy0GVcB9O55krSnqlmTF6//RmHTVbY0OsYwVIcNOKmtk1rLdeg6gY5LkUi6WFymkyU7IwFZP68E+3LFsaYY+9QZUCIv3zZ4Dpz5g7Zy/mIH7yQwthDkPxz2SgyTi7HQikj5QHr06B2qxYrVmI6IkRzX8rcVQHQ5on5xuYRHKCAIj+xmjBbpTfS1DpbCJ1zVPVdY1uEFU6uAXjoDlrN57SziiG4WfWwd8h0NCcdAj3OIBi5bdV7dI2SDhPqejwUGF+YLttZXLtmKQHrQ0cxWdIWjrCmi2BCsfSxw+6OxuZAH1hWSc9X0Ma60zQvaEWe0Xo9i3AZNxSYJ94nJYgMRg\u003d\u003d&quot;,
&quot;cdkey&quot;: &quot;Vyb5mooiizHHgfyVVVYxE4RLu+Hv61L+ilDbPkfjZfzqSzEO0QuBX28Cmq/+ZeNphlqecksGBfoZE/BVyQjSFNf+6zBbJkJ6p3l07SYX/WvziGSm9gofeK9uTqPuY9ZY9eyIyxETANQe8jb0649bmLINXTvzkhTW9BSLQkytinBOwxYyLwby7Ckq6lKTRi+Iu1y3q24TfdMoRUoxBzGjXJQe2t/qoWTJc3O3JuPZai1yeUfi+2BRyvz6SHzjOCfgQFE6oLiV084g6QJyGX6Oiain2GsgomUoLIlB5jmo0ntl1iVndUJWMXpJppqfnNUnpoLclopZt6tvaV1WbTAhBQ\u003d\u003d&quot;,
&quot;validityDate&quot;: &quot;2024-01-01&quot;
}
]
}'</code></pre>
<p><strong>Response-example:</strong></p>
<pre><code>SUCCESS</code></pre>