用户抽奖、兑奖事件回调
<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分钟之后再次请求。如果第三次还是失败,系统将停止该次事件回调。>响应时间超过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>是否中奖,"0"代表未中奖,"1"代表中奖</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->header('Signature');
//商家的appId,appSercret可在商家后台查看到。
$appId = 'mc_tm29uay8xviuaaa';
$appSecret = 'af8135db262ae7555442a685402d1f2b';
//获取回调数据。
$resultString = $request->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 < charArray.length; i++)
byteArray[i] = (byte) charArray[i];
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++){
int val = ((int) md5Bytes[i]) &amp; 0xff;
if (val < 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 < 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>