Youmi android offers order callback protocol

来自有米广告开发者WIKI
跳转至: 导航搜索


有米Android积分墙积分订单服务器回调协议

说明

  • 此文档只适合 Android 平台,iOS 平台开发者请看这里:有米 iOS 积分墙积分订单服务器回调协议
  • 接口统一使用的编码为:UTF-8
  • 适合于开发者使用自己的服务器来托管积分的情况。
  • 当我们收到广告主反馈的积分时,我们会实时反馈给开发者服务器。
  • 需要开发者提供一个接口来接收数据(有米的开发者后台可以设置该接口地址),接口接收数据的方式:GET。


流程

  1. 开发者在有米的开发者后台设置自己应用的积分反馈地址,例如:https://app.youmi.net/apps/setting
  2. 当有米的服务器接收到一个有效的效果记录时,就会按开发者提供的反馈地址,加上相关的参数(具体参数见下面的表格),一起反馈给开发者的服务器(GET的方式)。


参数

全称 简写 类型 说明
Order ID order string 订单ID:该值是唯一的,如果开发者接收到相同的订单号,那说明该订单已经存在。
App ID app string 开发者应用ID
Ad Name ad string 广告名,如果是应用类型的广告则是应用名
注:参数经过urlencode,请使用urldecode获取原始参数
User ID user string 用户ID:对于有米积分墙第二版及以上版本开发者可以设置自己的用户ID,例如开发者的应用是有登录功能的,则可以使用登录后的用户ID来替代有米提供的标识CID(有米为每台设备生成的唯一标识符),否则有米会自动设置为CID。
注:参数经过urlencode,请使用urldecode获取原始参数。
Channel chn int 渠道号
Points points int 用户可以赚取的积分
若 trade_type 为3或4的时候,points 积分字段将为 float 浮点型
Signature sig string 参数签名,签名算法如下。
该值的作用是校验上述参数的完整性,以防止在传输过程中被第三方篡改。

不参与签名的参数:

全称 简写 类型 说明
Adid adid int 广告id
Package Name pkg String 应用包名
Device ID device string 设备ID:android是imei
注:参数经过urlencode,请使用urldecode获取原始参数。
Time time int 产生效果的时间
Price price float 应用可以获得的收入
Trade_Type trade_type int 回调的任务类型。1=>主任务;2=>附加任务(附加任务可能会有多个);3=>分享主任务;4=>深度分享任务
Feedback Param _fb 字符串 该值是在请求过程中传入的预留参数fb,在此处回调。注意:若请求过程中没有传如fb参数,或fb参数为空,则回调时将不会拼上`_fb`参数,目前SDK不支持`_fb`参数传入


签名算法

php:

$sig = substr(md5($dev_server_secret . "||" . $order . "||" . $app . "||" . $user . "||" . $chn . "||" . $ad . "||" . $points), 12, 8);

java:

String sig = md5(dev_server_secret + "||" + order + "||" + app + "||" + user + "||" + chn + "||" + ad + "||" + points).substring(12, 20);

c#:

String input=dev_server_secret + "||" + order + "||" + app + "||" + user + "||" + chn + "||" + ad + "||" + points;
byte[] buff=Encoding.UTF8.GetBytes(input);
String sig = md5(buff).Substring(12, 8);

注意:

  • $dev_server_secret:开发者服务器端密钥,由有米单独提供给开发者。请登录后进入“https://app.youmi.net/apps/setting” 进行服务器地址设置,设置成功后就会分配一个密钥给您的应用,切记,服务器秘钥,并非应用秘钥,请做好区分。

Wall Settings.png

  • $order:指的是接口参数中的 order 参数,其他参数类似。
  • $user、$ad、$device:参与签名时是原始的参数,传输时才使用urlencode,因此校验sig时请使用原始的参数。


签名参数的校验

说明:这里的校验是指开发者在嵌入广告的初期,开发者如果发现校验不通过,才需要使用该接口进行校验,当然也可以直接咨询我们的客服。正常校验逻辑由开发者自己实现。

例如开发者测试时收到有米的请求:

http://api.kaifazhe.com/youmi.php?order=YM130402cygr_UTb42&app=30996ced018a2a5e&ad=KC%E7%BD%91%E7%BB%9C%E7%94%B5%E8%AF%9D&user=1141058&device=50ead626ae6e&chn=0&points=7&time=1364890524&sig=15b3dfe0&adid=100&pkg=abc

这时只要把前缀的 http://api.kaifazhe.com/youmi.php 替换成 http://aos.wall.youmi.net/v2/check_fb_sig 即可进行相应的测试,例如:

http://aos.wall.youmi.net/v2/check_fb_sig?order=YM130402cygr_UTb42&app=30996ced018a2a5e&ad=KC%E7%BD%91%E7%BB%9C%E7%94%B5%E8%AF%9D&user=1141058&device=50ead626ae6e&chn=0&points=7&time=1364890524&sig=15b3dfe0&adid=100&pkg=abc


返回值

  1. 有米会根据开发者服务器返回的 http 状态码(http_code)来判断该进行什么样的操作,正常情况收到的 http 状态码应该是200或者403。
  2. 如果是200,表示开发者正常接收到信息并且正常处理了。
  3. 如果是403,表示开发者拒绝了该次请求,此时中间层服务器不会再重复请求开发者服务器。
  4. 如果超时、或收到的不是2xx、301、302、303、307、400、403,有米的服务器就会放在下一次循环请求开发者服务器。
  5. 下一次循环请求开发者服务器会有一定的延迟,延迟分别为:5s, 10s, 60s, 300s, 600s, 3600s(距离上一次发送)。即最差环境下,有米最多将发送7次请求,若7次请求全部失败,则该链接将被丢弃。
  6. 因为网络等问题,开发者服务器可能会接收到订单号完全相同的多条记录,这时开发者服务器需要把重复的丢失,并以 http 状态码(http_code)403输出。