活动盒子对外接口

活动盒子对外接口


用户抽奖、兑奖事件回调

<table> <thead> <tr> <th style="text-align: left;">更新日期</th> <th style="text-align: left;">更新内容</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">2018-11-21</td> <td style="text-align: left;">抽奖事件增加 inviter和invitee字段信息(邀请码类活动的邀请关系)</td> </tr> <tr> <td style="text-align: left;">2018-1-30</td> <td style="text-align: left;">增加BIND_MOBILE事件回调</td> </tr> <tr> <td style="text-align: left;">2018-1-25</td> <td style="text-align: left;">回调内容增加了活动model字段和用户详情detail字段</td> </tr> <tr> <td style="text-align: left;">2017-1-03</td> <td style="text-align: left;">参与事件和兑奖事件回调内容中增加参与id字段: attend_id</td> </tr> </tbody> </table> <p><strong>简要描述:</strong></p> <ul> <li>用户抽奖、兑奖事件回调</li> </ul> <p><strong>请求URL:</strong></p> <ul> <li>在商家后台填写的回调地址</li> </ul> <p><strong>请求方式:</strong></p> <ul> <li>POST</li> </ul> <p><strong>参数:</strong></p> <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;">result</td> <td style="text-align: left;">是</td> <td style="text-align: left;">string</td> <td>json格式的数所</td> </tr> </tbody> </table> <p><strong>注意</strong></p> <ul> <li>在商家后台配置回调接口的时候,为了验证开发者所填的接口地址真实有效,系统会向该接口发送一个TEST_CALLBACK的事件,开发者必须返回SUCCESS字段,才能通过验证。</li> <li>回调接口在正常的情况下,只回调一次,开发者接收到回调信息时应该按要求返回SUCCESS字符串,而且响应时间不应该超过2秒。否则系统会当做请求失败。</li> <li><font color="red">如果回调接口没有正确返回SUCCESS字符串,或者接口【<strong>响应时间超过2秒</strong>】,会判定为回调失败。回调失败的情况:系统会隔一段时间后再次请求,但最多请求三次。第一次请求在事件触发的一分钟之内发起,第一次请求如果失败,会隔5分钟之后再次请求。第二次请求如果还是失败,会隔10分钟之后再次请求。如果第三次还是失败,系统将停止该次事件回调。&gt;响应时间超过2秒**,会判定为回调失败。回调失败的情况:系统会隔一段时间后再次请求,但最多请求三次。第一次请求在事件触发的一分钟之内发起,第一次请求如果失败,会隔5分钟之后再次请求。第二次请求如果还是失败,会隔10分钟之后再次请求。如果第三次还是失败,系统将停止该次事件回调。</font></li> <li>如果你是PHP语言,按要求返回SUCCESS字符串,但却提示错误的 ,有可能是你代码文件的编码带有BOM,请参考解决:<a href="http://www.jb51.net/article/53801.htm">http://www.jb51.net/article/53801.htm</a></li> </ul> <h2>接口认证事件</h2> <p><strong>回调参数示例</strong></p> <pre><code>{"result":"{\"event\":\"TEST_CALLBACK\"}"}</code></pre> <p><strong>回调参数说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">event</td> <td style="text-align: left;">string</td> <td>测试事件为 TEST_CALLBACK</td> </tr> </tbody> </table> <p><strong>备注</strong></p> <ul> <li>开发者接收到回调数据,event为TEST_CALLBACK时,直接返回SUCCESS字符串即可,纯字符串,非json格式。<font color="red">注意:TEST_CALLBACK只是为了验证接口是否真实有效,不会带上签名,所以不要验证签名</font></li> </ul> <hr /> <p><strong>用户抽奖事件</strong></p> <p><strong>回调参数示例</strong></p> <pre><code>{"result":"{\"data\":{\"activity\":{\"name\":\"\\u70b9\\u706f\",\"token\":\"act-fkupnb01srqq\",\"model\":\"light_up\"},\"attend_at\":\"2019-06-04 13:47:49\",\"attend_id\":99288,\"customer\":{\"identity\":\"oT8Vft1yyMm1-KJ1OzUyN1oGdsdQ\",\"user_type\":\"weixin\",\"detail\":{\"openid\":\"oT8Vft1yyMm1-KJ1OzUyN1oGdsdQ\",\"nickname\":\"FATE\",\"sex\":1,\"language\":\"zh_CN\",\"city\":\"\\u5e7f\\u5dde\",\"province\":\"\\u5e7f\\u4e1c\",\"country\":\"\\u4e2d\\u56fd\",\"headimgurl\":\"http:\\\/\\\/thirdwx.qlogo.cn\\\/mmopen\\\/vi_32\\\/BXV5GBffib2uF4MuouRkd1UuLmiawo8OYYCxDMDflIuXFkiaZd27KhN8z9ibNgoUl4MxrX2nTuIpKicdYiaITc8NklTw\\\/132\",\"privilege\":[]},\"inviter\":\"\",\"invitee\":\"\"},\"winning\":\"0\"},\"event\":\"ATTEND\"}"}</code></pre> <p>为上让大家看清返回的 Result 数据,result json decode 后的样子:</p> <pre><code>{ "event": "ATTEND", "data": { "activity":{ "name": "活动名称", "token": "act-xxxxx", "model":"dadishu" }, "customer":{ "user_type": "app", "identity": "testusername", "detail":{}, "inviter":"xxxxx",//邀请者 "invitee":"yyyyy"//被邀请者 }, "attend_at": "2016-05-16 07:37:47", "attend_id":123123, "winning": "1", "prize":{ //当winning=1的时候才有此字段 "id":"123", "winning_at": "2016-05-16 07:37:47", "name":"奖品名称", "sku": "sku123", "type":"coupon", "code":"NG2A-6111-34LR", } } } </code></pre> <p><strong>回调参数说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">event</td> <td style="text-align: left;">string</td> <td>抽奖事件为 ATTEND</td> </tr> <tr> <td style="text-align: left;">data</td> <td style="text-align: left;">jsonString</td> <td>回调的内容</td> </tr> <tr> <td style="text-align: left;">activity</td> <td style="text-align: left;">object</td> <td>活动详情</td> </tr> <tr> <td style="text-align: left;">token</td> <td style="text-align: left;">string</td> <td>活动token</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: left;">string</td> <td>活动名称</td> </tr> <tr> <td style="text-align: left;">model</td> <td style="text-align: left;">string</td> <td>活动模式,可以用来区分某一类活动</td> </tr> <tr> <td style="text-align: left;">customer</td> <td style="text-align: left;">object</td> <td>用户详情</td> </tr> <tr> <td style="text-align: left;">user_type</td> <td style="text-align: left;">string</td> <td>用户类型,app或weixin。app是指使用自己app的用户信息登录活动页,weixin是指使用微信授权登录活动页</td> </tr> <tr> <td style="text-align: left;">identity</td> <td style="text-align: left;">string</td> <td>用户唯一标识,当user_type=app时,返回username;当user_type=weixin时,返回openid</td> </tr> <tr> <td style="text-align: left;">detail</td> <td style="text-align: left;">object</td> <td>用户详细信息</td> </tr> <tr> <td style="text-align: left;">attend_at</td> <td style="text-align: left;">datatime</td> <td>参与时间</td> </tr> <tr> <td style="text-align: left;">attend_id</td> <td style="text-align: left;">int</td> <td>参与id</td> </tr> <tr> <td style="text-align: left;">winning</td> <td style="text-align: left;">string</td> <td>是否中奖,&quot;0&quot;代表未中奖,&quot;1&quot;代表中奖</td> </tr> <tr> <td style="text-align: left;">prize</td> <td style="text-align: left;">object</td> <td>奖品详情, 当winning=1的时候才有此字段</td> </tr> <tr> <td style="text-align: left;">winning_at</td> <td style="text-align: left;">datetime</td> <td>中奖时间</td> </tr> <tr> <td style="text-align: left;">id</td> <td style="text-align: left;">int</td> <td>奖品id</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: left;">string</td> <td>奖品名称</td> </tr> <tr> <td style="text-align: left;">sku</td> <td style="text-align: left;">string</td> <td>奖品的唯一标识</td> </tr> <tr> <td style="text-align: left;">type</td> <td style="text-align: left;">string</td> <td>奖品类型,请看奖品类型说明表</td> </tr> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">string</td> <td>奖品码,优惠券类型可以自定义,其他类型奖品由系统自动生成</td> </tr> </tbody> </table> <p><strong>奖品类型说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">coupon</td> <td>优惠券</td> </tr> <tr> <td style="text-align: left;">flow</td> <td>流量</td> </tr> <tr> <td style="text-align: left;">fee</td> <td>话费</td> </tr> <tr> <td style="text-align: left;">entity</td> <td>实物</td> </tr> <tr> <td style="text-align: left;">card</td> <td>充值卡</td> </tr> <tr> <td style="text-align: left;">coupon_code</td> <td>电子串码</td> </tr> <tr> <td style="text-align: left;">ticket</td> <td>电影票</td> </tr> </tbody> </table> <p><strong>注意</strong></p> <ul> <li><strong>开发者接收到回调参数后,请返回 SUCCESS 字符串给活动盒子系统</strong>。</li> </ul> <hr /> <h2>用户兑奖事件</h2> <p><strong>回调参数示例</strong></p> <pre><code> { "result": "{\"event\":\"ACCEPT\",\"data\":{\"activity\":{\"name\":\"\\u6d3b\\u52a8\\u540d\\u79f0\",\"token\":\"act-xxxxx\",\"model\":\"dadishu\"},\"customer\":{\"user_type\":\"app\",\"identity\":\"testusername\",\"detail\":{}},\"accept_at\":\"2016-05-16 07:37:47\",\"attend_id\":123123,\"prize\":{\"name\":\"\\u5956\\u54c1\\u540d\\u79f0\",\"sku\":\"sku123\",\"type\":\"coupon\",\"status\":\"2\",\"code\":\"NG2A-6111-34LR\",\"recharge_mobile\":\"13800138000\",\"delivery_info\":{\"name\":\"收货人\",\"mobile\":\"13800138000\",\"address\":\"收货地址信息\"}}}}" } </code></pre> <p>为上让大家看清返回的 Result 数据,result内容json decode 后的样子:</p> <pre><code>{ "event": "ACCEPT", "data": { "activity":{ "name": "活动名称", "token": "act-xxxxx", "model":"dadishu" }, "customer":{ "user_type": "app", "identity": "testusername", "detail":{} }, "accept_at": "2016-05-16 07:37:47", "attend_id":123123, "prize":{ "id":"123", "name":"奖品名称", "sku": "sku123", "type":"coupon", "status": "2", "code":"NG2A-6111-34LR", "recharge_mobile": "13800138000",//非充值类奖品值为空 "delivery_info": { //非实物奖品值为空 "name":"收货人", "mobile":"13800138000", "address":"收货地址信息" } } } }</code></pre> <p><strong>回调参数说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">event</td> <td style="text-align: left;">string</td> <td>兑奖事件为 ACCEPT</td> </tr> <tr> <td style="text-align: left;">data</td> <td style="text-align: left;">jsonString</td> <td>回调的内容</td> </tr> <tr> <td style="text-align: left;">activity</td> <td style="text-align: left;">object</td> <td>活动详情</td> </tr> <tr> <td style="text-align: left;">token</td> <td style="text-align: left;">string</td> <td>活动token</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: left;">string</td> <td>活动名称</td> </tr> <tr> <td style="text-align: left;">model</td> <td style="text-align: left;">string</td> <td>活动模式,可以用来区分某一类活动</td> </tr> <tr> <td style="text-align: left;">customer</td> <td style="text-align: left;">object</td> <td>用户详情</td> </tr> <tr> <td style="text-align: left;">user_type</td> <td style="text-align: left;">string</td> <td>用户类型,app或weixin</td> </tr> <tr> <td style="text-align: left;">identity</td> <td style="text-align: left;">string</td> <td>用户唯一标识,当user_type=app时,返回username;当user_type=weixin时,返回openid</td> </tr> <tr> <td style="text-align: left;">detail</td> <td style="text-align: left;">object</td> <td>用户详细信息</td> </tr> <tr> <td style="text-align: left;">accept_at</td> <td style="text-align: left;">datatime</td> <td>兑奖时间</td> </tr> <tr> <td style="text-align: left;">attend_id</td> <td style="text-align: left;">int</td> <td>参与id</td> </tr> <tr> <td style="text-align: left;">prize</td> <td style="text-align: left;">object</td> <td>奖品详情</td> </tr> <tr> <td style="text-align: left;">id</td> <td style="text-align: left;">int</td> <td>奖品id</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: left;">string</td> <td>奖品名称</td> </tr> <tr> <td style="text-align: left;">sku</td> <td style="text-align: left;">string</td> <td>奖品的唯一标识</td> </tr> <tr> <td style="text-align: left;">type</td> <td style="text-align: left;">string</td> <td>奖品类型 请看奖品类型说明表</td> </tr> <tr> <td style="text-align: left;">status</td> <td style="text-align: left;">string</td> <td>奖品状态</td> </tr> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">string</td> <td>奖品码,优惠券类型可以自定义,其他类型奖品由系统自动生成</td> </tr> <tr> <td style="text-align: left;">recharge_mobile</td> <td style="text-align: left;">string</td> <td>充值类奖品的手机号,非充值类奖品时值为空</td> </tr> <tr> <td style="text-align: left;">delivery_info</td> <td style="text-align: left;">object</td> <td>线上实物类奖品的收货信息,非实物类奖品时值为空</td> </tr> <tr> <td style="text-align: left;">mobile</td> <td style="text-align: left;">string</td> <td>收货手机号</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: left;">string</td> <td>收货人名称</td> </tr> <tr> <td style="text-align: left;">address</td> <td style="text-align: left;">string</td> <td>收货地址</td> </tr> </tbody> </table> <p><strong>注意</strong></p> <ul> <li> <p><strong>开发者接收到回调参数后,请返回 SUCCESS 字符串给活动盒子系统</strong>。</p> <p><strong>备注</strong></p> </li> <li>更多返回错误代码请看【<a href="http://www.showdoc.cc/8513?page_id=64989" title="全局返回码">全局返回码</a>】</li> </ul> <hr /> <h2>红包雨类型活动用户兑奖事件(BIND_MOBILE)</h2> <p>说明:红包雨类型的活动比较特殊,主要用于应用,同时分享到微信后,微信用户也可以参与,微信用户中奖后,可以输入手机号进行领奖,些操作就会产生 BIND_MOBILE字段。这样,开发者就可以知道xx手机号中了什么奖,以后用户使用手机号登录或注册开发者的app时,开发者就可以给他派奖了。</p> <p><strong>回调参数示例</strong></p> <pre><code> {"result": "{\"event\":\"BIND_MOBILE\",\"data\":{\"activity\":{\"name\":\"\\u6d3b\\u52a8\\u540d\\u79f0\",\"token\":\"act-xxxxx\",\"model\":\"dadishu\"},\"customer\":{\"user_type\":\"app\",\"identity\":\"testusername\",detail:{}},\"bind_at\":\"2016-05-16 07:37:47\",\"bind_id\":123123,\"prizes\":[{\"name\":\"\\u5956\\u54c1\\u540d\\u79f0\",\"sku\":\"sku123\",\"type\":\"coupon\",\"code\":\"NG2A-6111-34LR\"}]}"} </code></pre> <p>为上让大家看清返回的 Result 数据,下面是格式美化后的样子:</p> <pre><code>{ "event": "BIND_MOBILE ", "data": { "activity":{ "name": "活动名称", "token": "act-xxxxx", "model":"dadishu" }, "customer":{ "user_type": "app", "identity": "testusername", "detail":{} }, "bind_at": "2016-05-16 07:37:47", "bind_id":123123, "bind_mobile":"13800138000" "prizes":[ //数组,可能中多个奖品 { "id":"123", "name":"奖品名称", "sku": "sku123", "type":"coupon", "code":"NG2A-6111-34LR", } ] } }</code></pre> <p><strong>回调参数说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">event</td> <td style="text-align: left;">string</td> <td>事件为 BIND_MOBILE</td> </tr> <tr> <td style="text-align: left;">data</td> <td style="text-align: left;">jsonString</td> <td>回调的内容</td> </tr> <tr> <td style="text-align: left;">activity</td> <td style="text-align: left;">object</td> <td>活动详情</td> </tr> <tr> <td style="text-align: left;">token</td> <td style="text-align: left;">string</td> <td>活动token</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: left;">string</td> <td>活动名称</td> </tr> <tr> <td style="text-align: left;">model</td> <td style="text-align: left;">string</td> <td>活动模式,可以用来区分某一类活动</td> </tr> <tr> <td style="text-align: left;">customer</td> <td style="text-align: left;">object</td> <td>用户详情</td> </tr> <tr> <td style="text-align: left;">user_type</td> <td style="text-align: left;">string</td> <td>用户类型,app或weixin</td> </tr> <tr> <td style="text-align: left;">identity</td> <td style="text-align: left;">string</td> <td>用户唯一标识,当user_type=app时,返回username;当user_type=weixin时,返回openid</td> </tr> <tr> <td style="text-align: left;">detail</td> <td style="text-align: left;">object</td> <td>用户详细信息</td> </tr> <tr> <td style="text-align: left;">inviter</td> <td style="text-align: left;">string</td> <td>邀请者唯一标识,当活动model=invitation_code时有值,否则为空值</td> </tr> <tr> <td style="text-align: left;">invitee</td> <td style="text-align: left;">string</td> <td>被邀请者唯一标识,当活动model=invitation_code时有值,否则为空值</td> </tr> <tr> <td style="text-align: left;">bind_at</td> <td style="text-align: left;">datatime</td> <td>绑定时间</td> </tr> <tr> <td style="text-align: left;">bind_id</td> <td style="text-align: left;">int</td> <td>绑定id,可以用来去重</td> </tr> <tr> <td style="text-align: left;">bind_mobile</td> <td style="text-align: left;">string</td> <td>手机号</td> </tr> <tr> <td style="text-align: left;">prizes</td> <td style="text-align: left;">array</td> <td>奖品数组</td> </tr> <tr> <td style="text-align: left;">id</td> <td style="text-align: left;">int</td> <td>奖品id</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: left;">string</td> <td>奖品名称</td> </tr> <tr> <td style="text-align: left;">sku</td> <td style="text-align: left;">string</td> <td>奖品的唯一标识</td> </tr> <tr> <td style="text-align: left;">type</td> <td style="text-align: left;">string</td> <td>奖品类型 请看奖品类型说明表</td> </tr> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">string</td> <td>奖品码,优惠券类型可以自定义,其他类型奖品由系统自动生成</td> </tr> </tbody> </table> <p><strong>注意</strong></p> <ul> <li> <p><strong>开发者接收到回调参数后,请返回 SUCCESS 字符串给活动盒子系统</strong>。</p> <p><strong>备注</strong></p> </li> <li>更多返回错误代码请看【<a href="http://www.showdoc.cc/8513?page_id=64989" title="全局返回码">全局返回码</a>】</li> </ul> <hr /> <h2>回调验证</h2> <ul> <li>系统在回调时,会在http请求头部加上一个 Signature 字段(除了接口认证回调,因为认证回调只是认证一下接口地址的真实有效性,不涉及数据安全)。验证此字段可以有效防止伪造的请求。这个不是必须,但建议开发者都加上此项验证</li> </ul> <p>回调Signature的生成规则:</p> <p>将商家的appId,appSecret和回调数据拼接成一个字符串,再经过md5加密得签名Signture.</p> <pre><code> //商家的appId,appSercret可在商家后台查看到。 $appId = 'mc_tm29uay8xviuaaa'; $appSecret = 'af8135db262ae7555442a685402d1f2b';//注意保管,不要泄露。 $data = array(); //原始数据为数组形式。 //第一步,把数据经过json_encode方法变成字符串。 $dataString = json_encode($data); //这个内容就是即将推送的result的值 //第二步,把appId,appSecret和数据字串按顺序组成一串字符串。 $string = $appId.$appSecret.$dataString; //第三步,把组成的字符串经md5加密得到签名 $signature = md5($string); </code></pre> <hr /> <p>回调代码例子PHP版本 【注意:这仅仅是个例子,直接复制粘贴到你的框架里不一定能正确运行】</p> <pre><code>public function callback(Request $request){ //获取回调请求中头部签名字段Signature; $signatrue = $request-&gt;header('Signature'); //商家的appId,appSercret可在商家后台查看到。 $appId = 'mc_tm29uay8xviuaaa'; $appSecret = 'af8135db262ae7555442a685402d1f2b'; //获取回调数据。 $resultString = $request-&gt;get('result');//json字符串 //从json字符串转为数组 $result = json_decode($resultString,true); //第一步,把appId,appSecret和数据字串按顺序组成一串字符串。 $string = $appId.$appSecret.$resultString; //第二步,把组成的字符串经md5加密得到签名 $sign = md5($string); if($sign !== $signature){ //签名不正确,执行相关业务 }else{ $event = $result['event'];//获取回调事件 if($event == 'TEST_CALLBACK'){ return 'SUCCESS'; //如果是测试事件,直接返回SUCCESS即可 } $data = $result['data']; //获取回调参数 if($event == 'ATTEND'){ //处理参与事件业务。 } if($event == 'ACCEPT'){ //处理兑奖事件业务。 } return 'SUCCESS'; //!重点:接口需要返回 SUCCESS 字符串。 } }</code></pre> <h2><strong><em>你可能遇到的问题</em></strong></h2> <h3>1.获取不到数据。</h3> <p>以php为例,数据以json格式提交,用$_POST或$_REQUEST取不到数据 ,可以参考这篇博客 <a href="http://www.01happy.com/php-post-request-get-json-param/">http://www.01happy.com/php-post-request-get-json-param/</a> java: <a href="http://www.jianshu.com/p/c46efc3e9e96">http://www.jianshu.com/p/c46efc3e9e96</a> 其他语言可能也有类似的问题,请自行查找解决方法 java语言的md5因为编辑问题生成的结果可能会不一样,请参考以下代码:</p> <pre><code>package com.emma.biz.security; import java.security.MessageDigest; public class MD5Util { /*** * MD5加码 生成32位md5码 */ public static String string2MD5(String inStr){ MessageDigest md5 = null; try{ md5 = MessageDigest.getInstance("MD5"); }catch (Exception e){ System.out.println(e.toString()); e.printStackTrace(); return ""; } char[] charArray = inStr.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i &lt; charArray.length; i++) byteArray[i] = (byte) charArray[i]; byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i &lt; md5Bytes.length; i++){ int val = ((int) md5Bytes[i]) &amp;amp; 0xff; if (val &lt; 16) hexValue.append("0"); hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); } /** * 加密解密算法 执行一次加密,两次解密 */ public static String convertMD5(String inStr){ char[] a = inStr.toCharArray(); for (int i = 0; i &lt; a.length; i++){ a[i] = (char) (a[i] ^ 't'); } String s = new String(a); return s; } } </code></pre> <h3>2.接口获取到了数据,但没发现数据库有数据。</h3> <p>请检查一下自己项目的错误日志有没有报错。</p> <h3>3. 活动盒子的出口ip地址为:47.93.214.224</h3>

页面列表

ITEM_HTML