兑换系统开放接口


券码采购

<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 '{ &amp;quot;merchantId&amp;quot;: &amp;quot;166&amp;quot;, &amp;quot;businessId&amp;quot;: &amp;quot;166&amp;quot;, &amp;quot;productCode&amp;quot;: &amp;quot;87103&amp;quot;, &amp;quot;bizCode&amp;quot;: &amp;quot;87103&amp;quot;, &amp;quot;num&amp;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>{ &amp;quot;status&amp;quot;:0, &amp;quot;message&amp;quot;:&amp;quot;成功&amp;quot;, &amp;quot;data&amp;quot;: { &amp;quot;orderCode&amp;quot;: &amp;quot;O165770830800427185&amp;quot;, &amp;quot;bizCode&amp;quot;: &amp;quot;611af921-ff59-4085-ac9c-54f5b73db19c&amp;quot;, &amp;quot;productName&amp;quot;: &amp;quot;京东E卡10元&amp;quot;, &amp;quot;settlementPrice&amp;quot;: 100.2800, &amp;quot;type&amp;quot;: 2, &amp;quot;couponInfo&amp;quot;: [ { &amp;quot;cardNo&amp;quot;: &amp;quot;pl9NTIOr7CGd1F+fE/8OSvrWJ5ZB0gVZ3dWkf1ieP9onLqQf8YhqbQQ8ZEurKWWpmQDGt9ajNh1X1iVZU3QKuWz0oqe2oFCpnhtFNcDqwoOuJAkvp+SCApjDm+OCex+QBKQQGbCYo+M+v/VHS8yOwXUEWX65sTN/XomCIk5HW63TGkYx2aH6/8YxaKn7E6JmkxA3i6LRNGkzJXPvL9yUGCrFchU1KIY0+0MRQstpB2X5HOLPfabQ4luADWt1KHmmxlZg419+XchvfB8QcBvIf7I8v3ofQDKjFESjo3RkwkSX0+7XdyUCgP25MwckF69E9Wi4p+8URXkgTUXmxOXsXw\u003d\u003d&amp;quot;, &amp;quot;cdkey&amp;quot;: &amp;quot;bTVW2z9NH1+pJKOwHFXQzkvAKFEoKo9TtNy1tcPqaP72qUAQeJvoNhYGzvwv8NlLFQaAUz8qVRF/mVrIBjRoukaBID4MwS8Mqa5zW0okKT8OnO8bjeF7bTo0qrT2amRGB3HH3qGudoz8OLe4KTIz/U40Bh0tK7xfwHVld9ujEq0msNCWPOvFV2lZ/80eYU95dyp3ijw358+hXQsb0q96YwTJW+EOk5LRnADzJ0K4av0Q+dKfuSFzH2Ae4JaklJaZJhJ4kmMBRHPY8yZaqQ/pXwMtf8EHvJHJ6wqqDnv76rt/ZQhH6rGiluKPQRSeLd0kIwSXowIEIV59iaKlzzPFUg\u003d\u003d&amp;quot; }, { &amp;quot;cardNo&amp;quot;: &amp;quot;BAuy0GVcB9O55krSnqlmTF6//RmHTVbY0OsYwVIcNOKmtk1rLdeg6gY5LkUi6WFymkyU7IwFZP68E+3LFsaYY+9QZUCIv3zZ4Dpz5g7Zy/mIH7yQwthDkPxz2SgyTi7HQikj5QHr06B2qxYrVmI6IkRzX8rcVQHQ5on5xuYRHKCAIj+xmjBbpTfS1DpbCJ1zVPVdY1uEFU6uAXjoDlrN57SziiG4WfWwd8h0NCcdAj3OIBi5bdV7dI2SDhPqejwUGF+YLttZXLtmKQHrQ0cxWdIWjrCmi2BCsfSxw+6OxuZAH1hWSc9X0Ma60zQvaEWe0Xo9i3AZNxSYJ94nJYgMRg\u003d\u003d&amp;quot;, &amp;quot;cdkey&amp;quot;: &amp;quot;Vyb5mooiizHHgfyVVVYxE4RLu+Hv61L+ilDbPkfjZfzqSzEO0QuBX28Cmq/+ZeNphlqecksGBfoZE/BVyQjSFNf+6zBbJkJ6p3l07SYX/WvziGSm9gofeK9uTqPuY9ZY9eyIyxETANQe8jb0649bmLINXTvzkhTW9BSLQkytinBOwxYyLwby7Ckq6lKTRi+Iu1y3q24TfdMoRUoxBzGjXJQe2t/qoWTJc3O3JuPZai1yeUfi+2BRyvz6SHzjOCfgQFE6oLiV084g6QJyGX6Oiain2GsgomUoLIlB5jmo0ntl1iVndUJWMXpJppqfnNUnpoLclopZt6tvaV1WbTAhBQ\u003d\u003d&amp;quot; } ] } }</code></pre> <p><strong>券码解密示例</strong></p> <pre><code class="language-java">String data = openApiResponse.getString(&amp;quot;data&amp;quot;); //解密数据 CouponOrderResult couponOrderResult = JSONObject.parseObject(data, CouponOrderResult.class); List&amp;lt;CouponInfoVo&amp;gt; couponInfo = new ArrayList&amp;lt;&amp;gt;(); log.info(&amp;quot;{}&amp;quot;, couponOrderResult); couponOrderResult.getCouponInfo().forEach( item -&amp;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(&amp;quot;解密数据:{}&amp;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&amp;lt;CouponInfoVo&amp;gt; couponInfo; } public class CouponInfoVo { /** * 卡号 */ private String cardNo; /** * 卡密|短链 */ private String cdkey; /** * 有效截止日期 */ private Date validityDate; }</code></pre>

页面列表

ITEM_HTML