券码采购
<h3>券码采购</h3>
<p><strong>URL:</strong> /v1/openapi/order/coupon</p>
<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>
<tr>
<td>signType</td>
<td>string</td>
<td>签名方式:SHA256-RSA、MD5。默认:SHA256-RSA</td>
<td>false</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>merchantId</td>
<td>string</td>
<td>商家ID</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>businessId</td>
<td>string</td>
<td>业务ID</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>productCode</td>
<td>string</td>
<td>产品CODE</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>bizCode</td>
<td>string</td>
<td>商家订单号</td>
<td>true</td>
<td>-</td>
</tr>
<tr>
<td>num</td>
<td>int</td>
<td>采购数量,一次最大50</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/coupon? --data '{
&quot;merchantId&quot;: &quot;166&quot;,
&quot;businessId&quot;: &quot;166&quot;,
&quot;productCode&quot;: &quot;87103&quot;,
&quot;bizCode&quot;: &quot;87103&quot;,
&quot;num&quot;: 1
}'</code></pre>
<p><strong>Response-fields:</strong></p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
<th>Since</th>
</tr>
</thead>
<tbody>
<tr>
<td>status</td>
<td>int32</td>
<td>状态码</td>
<td>-</td>
</tr>
<tr>
<td>message</td>
<td>string</td>
<td>返回消息</td>
<td>-</td>
</tr>
<tr>
<td>data</td>
<td>object</td>
<td>数据对象</td>
<td>-</td>
</tr>
<tr>
<td>└─orderCode</td>
<td>string</td>
<td>平台订单号</td>
<td>-</td>
</tr>
<tr>
<td>└─bizCode</td>
<td>string</td>
<td>商家订单号</td>
<td>-</td>
</tr>
<tr>
<td>└─productName</td>
<td>string</td>
<td>产品名称</td>
<td>-</td>
</tr>
<tr>
<td>└─settlementPrice</td>
<td>number</td>
<td>结算金额</td>
<td>-</td>
</tr>
<tr>
<td>└─type</td>
<td>int</td>
<td>券码类型</td>
<td>1-兑换URL,2-卡号卡密</td>
</tr>
<tr>
<td>└─couponInfo</td>
<td>Array</td>
<td>券码集合</td>
<td>卡号卡密会加密,需自行解密</td>
</tr>
<tr>
<td>cardNo</td>
<td>String</td>
<td>卡号(不存在卡号时则为null)</td>
</tr>
<tr>
<td>cdkey</td>
<td>String</td>
<td>卡密or短链</td>
</tr>
<tr>
<td>validityDate</td>
<td>date</td>
<td>有效截止期</td>
</tr>
</tbody>
</table>
<p><strong>Response-example:</strong></p>
<pre><code>{
&quot;status&quot;:0,
&quot;message&quot;:&quot;成功&quot;,
&quot;data&quot;:
{
&quot;orderCode&quot;: &quot;O165770830800427185&quot;,
&quot;bizCode&quot;: &quot;611af921-ff59-4085-ac9c-54f5b73db19c&quot;,
&quot;productName&quot;: &quot;京东E卡10元&quot;,
&quot;settlementPrice&quot;: 100.2800,
&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;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;
}
]
}
}</code></pre>
<p><strong>券码解密示例</strong></p>
<pre><code class="language-java">String data = openApiResponse.getString(&quot;data&quot;);
//解密数据
CouponOrderResult couponOrderResult = JSONObject.parseObject(data, CouponOrderResult.class);
List&lt;CouponInfoVo&gt; couponInfo = new ArrayList&lt;&gt;();
log.info(&quot;{}&quot;, couponOrderResult);
couponOrderResult.getCouponInfo().forEach( item -&gt; {
CouponInfoVo couponInfoVo = new CouponInfoVo();
try {
if (StringUtil.isNotBlank(item.getCardNo())) {
byte[] decrypt = RSAUtils.decrypt(Base64.getDecoder().decode(item.getCardNo().getBytes(StandardCharsets.UTF_8)), RSAUtils.getPrivateKey(privateKeyStr));
couponInfoVo.setCardNo(new String(decrypt));
}
couponInfoVo.setCdkey(new String(RSAUtils.decrypt(Base64.getDecoder().decode(item.getCdkey().getBytes(StandardCharsets.UTF_8)), RSAUtils.getPrivateKey(privateKeyStr))));
} catch (Exception e) {
e.printStackTrace();
}
couponInfo.add(couponInfoVo);
});
log.info(&quot;解密数据:{}&quot;, JSONObject.toJSONString(couponInfo));
public class CouponOrderResult {
/**
* 平台订单号
*/
private String orderCode;
/**
* 商家订单号
*/
private String bizCode;
/**
* 产品名称
*/
private String productName;
/**
* 结算金额
*/
private BigDecimal settlementPrice;
/**
* 兑换URL、卡号卡密
*/
private Integer type;
/**
* 券码集合
*/
private List&lt;CouponInfoVo&gt; couponInfo;
}
public class CouponInfoVo {
/**
* 卡号
*/
private String cardNo;
/**
* 卡密|短链
*/
private String cdkey;
/**
* 有效截止日期
*/
private Date validityDate;
}</code></pre>