渠道支付要做開關幹嘛用呢?爲什麼要做這種東西呢?
這個教訓來分享一下,我們的遊戲上線公測了,59個渠道首發,其中包括了應用寶,UC,360等的大渠道,也包含有一些工會渠道和小渠道,上線後一切正常,但是到了下午就開始出現問題了,大渠道聯繫了我們的渠道商務說我們在做充值返利要立刻停止這種行爲,限我們3小時內處理,要不然就下架我們的遊戲。公司溝通了一圈後,一頭霧水,因爲運營和市場並沒有做這種返利活動。後來詢問大渠道後獲得了一些相關的信息和截圖,發現小渠道和一些二三級分包渠道在做4-6折不等的充值返利,我們下載了相關的apk發現多次打包和分銷渠道號等。然後就是聯繫這些渠道關閉返利,給大渠道解釋,多要一些時間等等,處理到了第二天,爲什麼會這麼久呢?因爲渠道商務人員要一家一家聯繫,聯繫對方後對方還要在去聯繫那些二三級分包渠道或者是合作渠道,這麼一級一級的關係處理的很慢,隨着時間過去渠道那裏也下班了,最終導致遊戲被大渠道下架了,而這些做返利的渠道也沒量了。說到這裏大家明白了這個需求的原因,那麼總結一下是這樣
1、 上線渠道多,有些渠道爲了業績會做充值返利
2、 大渠道的控制力很強,他們的多級渠道能力也很強,他們會比我們先發現這類問題
3、 即使和渠道說了不要做充值返利,但是他們的溝通可能會出現誤差,不能保證一定不會出現
4、 這類事處理起來費事費力牽扯衆多,短時間如果處理不好還有被大渠道下架的危險,這就得不償失了
吃一塹長一智,爲了解決這種混亂的情況,想出了這個渠道支付開關的功能,實現思路爲在用戶進行支付的時候從CDN的HTTP上下載一個配置文件,根據配置文件判斷這個渠道是否能順利支付
以下是接入遊戲渠道的支付代碼的實現代碼
public String CallPayItem(final String _in_data)
{
TypeSDKLogger.i("CallPayItem:" + _in_data);
new Thread() {
@Override
public void run() {
String payMessage;
try {
payMessage = HttpUtil.http_get(TypeSDKBonjour_vivo
.Instance().platform
.GetData(AttName.SWITCHCONFIG_URL));
if (((payMessage.equals("") || payMessage.isEmpty()) && openPay)
|| TypeSDKTool.openPay(TypeSDKBonjour_vivo
.Instance().platform
.GetData(AttName.SDK_NAME), payMessage)) {
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
TypeSDKBonjour_vivo.Instance().PayItem(_in_context, _in_data);
}
});
} else {
TypeSDKNotify_vivo notify = new TypeSDKNotify_vivo();
TypeSDKData.PayInfoData payResult = new TypeSDKData.PayInfoData();
payResult.SetData(AttName.PAY_RESULT, "0");
notify.Pay(payResult.DataToString());
Handler dialogHandler = new Handler(Looper.getMainLooper());
dialogHandler.post(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
TypeSDKTool.showDialog("暫未開放充值!!!", _in_context);
}});
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
return "client pay function finished";
}
這個項目已開源,大家有興趣可以自己研究或者參照項目編寫自己的聚合SDK
項目地址:https://code.csdn.net/typesdk_code
項目地址:https://github.com/typesdk