Youmi android offers order callback protocol tw

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

有米 Android 積分牆積分訂單伺服器回調協議

說明

  • 此文檔只適合 Android 平台,iOS 平台開發者請看這裡:有米 iOS 積分牆積分訂單伺服器回調協議
  • 介面統一使用的編碼為:UTF-8
  • 適合於開發者使用自己的伺服器來託管積分的情況。
  • 當我們收到廣告主反饋的積分時,我們會實時反饋給開發者伺服器。
  • 需要開發者提供一個介面來接收數據(有米的開發者後台可以設置該介面地址),介面接收數據的方式:GET。


流程

  1. 開發者在有米的開發者後台設置自己應用的積分反饋地址,例如:https://www.youmi.net/apps/setting
  2. 當有米的伺服器接收到一個有效的效果記錄時,就會按開發者提供的反饋地址,加上相關的參數(具體參數見下面的表格),一起反饋給開發者的伺服器(GET 的方式)。


參數

全稱 簡寫 類型 說明
Order ID order string(18字節) 訂單ID:該值是唯一的,如果開發者接收到相同的訂單號,那說明該訂單已經存在。
App ID app string(16字節) 開發者應用ID
Ad Name ad string(50字節) 廣告名,如果是應用類型的廣告則是應用名
注:參數經過urlencode,請使用urldecode獲取原始參數
User ID user string(256字節) 用戶ID:對於有米積分牆第二版及以上版本開發者可以設置自己的用戶ID,例如開發者的應用是有登錄功能的,則可以使用登錄後的用戶ID來替代有米提供的標識CID(有米為每台設備生成的唯一標識符),否則有米會自動設置為CID。
注:參數經過urlencode,請使用urldecode獲取原始參數。
Channel chn int 渠道號
Points points int 用戶可以賺取的積分
如果該值為0,則表示可能用戶因為某些情況拿不到積分,例如用戶當天激活的次數超過最大的限制值(會和開發者進行結算,但是不會給用戶積分)
Signature sig string(8字節) 參數簽名,簽名算法如下。
該值的作用是校驗上述參數的完整性,以防止在傳輸過程中被第三方篡改。


不參與簽名的參數:

全稱 簡寫 類型 說明
Adid adid int 廣告id
Package Name pkg String 應用包名
Device ID device string 設備ID:android是imei
注:參數經過urlencode,請使用urldecode獲取原始參數。
Time time int 產生效果的時間
Price price float 應用可以獲得的收入


簽名算法

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);

注:

  1. $dev_server_secret:開發者伺服器端密鑰,由有米單獨提供給開發者。請登錄後進入“https://www.youmi.net/apps/setting” 進行伺服器地址設置,設置成功後就會分配一個密鑰給您的應用。
  2. $order:指的是介面參數中的 order 參數,其他參數類似。
  3. $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輸出。