米大师客户端接入

目录


一. Manifest配置

1. 权限配置

<!-- TODO GAME SDK Midas接入配置 设置屏幕兼容声明 START -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true" />
<!-- TODO GAME SDK Midas接入配置 设置屏幕兼容声明 END -->

2. Activity配置

 <!-- TODO GAME SDK Midas接⼊配置START -->
<activity
android:name="com.tencent.midas.proxyactivity.APMidasPayProxyActivity" android:theme=
"@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize" />
<activity
android:name="com.tencent.midas.wx.APMidasWXPayActivity" android:theme=
"@android:style/Theme.Translucent.NoTitleBar" android:exported="true" />
<activity
android:name="com.tencent.midas.qq.APMidasQQWalletActivity" android:launchMode="singleTop" android:theme=
"@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden" android:exported="true" >
<intent-filter>
 <action android:name="android.intent.action.VIEW" />
 <category android:name="android.intent.category.BROWSABLE"/>
         <category android:name="android.intent.category.DEFAULT"/>
         <data android:scheme="qwallet100703379"/>
<!-- TODO GAME 这⾥为⽶⼤师的默认配置,游戏不要修改   -->
</intent-filter>
</activity>
<activity android:name="com.tencent.midas.jsbridge.APWebJSBridgeActivity" android:theme=
"@android:style/Theme.Translucent.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/>
<!-- TODO GAME SDK Midas接⼊配置END -->

kehuduanjieru_01.png
注意:如果android:targetVersion ⼤于26,上述activity不要设置android:screenOrientation
// 参考官⽹的内容更新了manifest上的配置注意事项 --by tal

3. ysdkconf.ini上配置OFFER_ID
kehuduanjieru_02.png

4. Assets中添加插件
kehuduanjieru_03.png
将YSDKRes的assets中的MidasPay.zip完整拷贝到游戏apk的assets中.另外,需要注意的是如果使⽤过⽼版本YSDK,集成过TencentPay.apk的,请删除;否则会导致拉 起⽀付时报如下错误:
kehuduanjieru_04.png

二. 游戏币模式

1. 概述
这部分内容主要介绍游戏币模式的主要业务流程,包括⽀付、扣款和退款三个流程,其中⽀付需要YSDK客户端和后台同时参与,其余流程仅需YSDK后台就可以完成

2. 请求参数

参数名称 描述
ZoneId 大区ID
saveValue 充值数额
isCanChange 设置的充值数额是否可改
resData 游戏代币图标的⼆进制数据
ysdkExtInfo 默认填"ysdkExt"
listener 充值的回调

3. 请求示例

/**
 * 游戏币充值
 *@param zoneId ⼤区id
 *@param saveValue 充值数额
 *@param isCanChange 设置的充值数额是否可
 *@param resData 游戏代币图标的⼆进制数据 
 *@param ysdkExtInfo 默认填"ysdkExt" 
 *@param listener充值的回调

 */
public static void recharge(String zoneId, String saveValue, boolean isCanChange,
byte[] resData,String ysdkExtInfo,PayListener listener)

//接口调用示例

String zoneId = "1"; String saveValue ="1";
boolean isCanChange = false;
Bitmap bmp = BitmapFactory.decodeResource(mMainActivity.getResources(), R.drawable.sample_yuanbao);
ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, baos); 
byte[] appResData = baos.toByteArray();
String ysdkExt = "ysdkExt";
YSDKApi.recharge(zoneId, saveValue,isCanChange,appResData,ysdkExt,new PayListener() {
@Override
public void OnPayNotify(PayRet ret) { if(PayRet.RET_SUCC == ret.ret){
//⽀付流程成功
switch (ret.payState){
//⽀付成功
case PayRet.PAYSTATE_PAYSUCC: mMainActivity.sendResult(
"⽤户⽀付成功,⽀付⾦额"+ret.realSaveNum+";" +
 "使⽤渠道:"+ret.payChannel+";" + "发货状态:
"+ret.provideState+";" + "业务类型:
"+ret.extendInfo+";建议查询余
额:"+ret.toString());
break;
//取消⽀付
case PayRet.PAYSTATE_PAYCANCEL: mMainActivity.sendResult("⽤户取消⽀
付:"+ret.toString());
break;
//⽀付结果未知
case PayRet.PAYSTATE_PAYUNKOWN: mMainActivity.sendResult("⽤户⽀付结果未知,建议查询余
额:"+ret.toString());
break;
//⽀付失败
case PayRet.PAYSTATE_PAYERROR: mMainActivity.sendResult("⽀付异常"+ret.toString()); break;
}
}else{
switch (ret.flag){
case eFlag.User_LocalTokenInvalid:
//⽤户取消⽀付 mMainActivity.sendResult("登陆态过期,请重新登
陆:"+ret.toString());
mMainActivity.letUserLogout(); break;
case eFlag.Pay_User_Cancle:
//⽤户取消⽀付 mMainActivity.sendResult("⽤户取消⽀
付:"+ret.toString());
break;
case eFlag.Pay_Param_Error: mMainActivity.sendResult("⽀付失败,参数错
误"+ret.toString());
break;
case eFlag.Error: default:
mMainActivity.sendResult("⽀付异常"+ret.toString());
break;
        }
    }
  }
});

4. 返回参数

参数名称' 描述
Ret 0 成功 1 失败
flag 0 成功 非0失败
msg ret不为0的时候,错误信息(utf-8编码)

注:支付不以客户端的结果为准

三 直购模式

1. 概述
直购模式支持单机和网游游戏。
客户端下单模式是指⽤户直接通过下述api调⽤唤起腾讯⽀付⻚⾯引导⽤户完成付费,⽤户付费结束后,结果会通过参数重的YSDKPayListener回调给游戏,同时⽶⼤师会调⽤游戏在⽶⼤师配置的 回调地址发货。

2. 请求参数

参数名称 描述
iscanchange 是否可以在拉起的⽀付⻚⾯进⾏变更
zoneId 分区id
item ⽀付项
item.id 游戏内⾃定义的道具id
Item.name 道具的名称,⽀付时会显示在⽀付⻚⾯上
Item.desc 道具描述
Item.price 道具单价,单价以Q点(⻆)为单位
Item.num 购买数量,在⽀付⻚⾯上不可修改
itemunit 物品单位
midasAppkey 游戏中⽶⼤师的appkey
resData 游戏代币图标的⼆进制数据
midasExt ⽶⼤师透传参数,会调⽤发货接⼝时透传给游戏
ysdkExtInfo YSDK透传参数,会在listener中回调给游戏
listener 充值回调

3. 请求示例

String zoneId = "1";
PayItem item = new PayItem(); item.id = "ID1";
item.name = "道具名称";
item.desc = "道具描述"; item.price = 1;
item.num = 5;
Bitmap bmp = BitmapFactory.decodeResource(mMainActivity.getResources(), R.drawable.sample_yuanbao);
ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] appResData = baos.toByteArray();
String ysdkExt = "ysdkExt"; String midasExt = "midasExt";
YSDKApi.buyGoods(false,zoneId,item,"sdsfdsfdf",appResData,midasExt,ysdk Ext,new PayListener() {
@Override
public void OnPayNotify(PayRet ret) { if(PayRet.RET_SUCC == ret.ret){
//⽀付流程成功
switch (ret.payState){
//⽀付成功
case PayRet.PAYSTATE_PAYSUCC: mMainActivity.sendResult(
"⽤户⽀付成功,⽀付⾦额"+ret.realSaveNum+";" +
"使⽤渠道:"+ret.payChannel+";" + "发货状态:"+ret.provideState+";" + "业务类型:"+ret.extendInfo+";建议查询余
额:"+ret.toString());
break;
//取消⽀付
case PayRet.PAYSTATE_PAYCANCEL: mMainActivity.sendResult("⽤户取消⽀
付:"+ret.toString());
break;
//⽀付结果未知
case PayRet.PAYSTATE_PAYUNKOWN: mMainActivity.sendResult("⽤户⽀付结果未知,建议查询余
额:"+ret.toString());
break;
//⽀付失败
case PayRet.PAYSTATE_PAYERROR: mMainActivity.sendResult("⽀付异常"+ret.toString()); break;
}
}else{
switch (ret.flag){
case eFlag.User_LocalTokenInvalid:
//⽤户取消⽀付 mMainActivity.sendResult("登陆态过期,请重新登
陆:"+ret.toString());
mMainActivity.letUserLogout(); break;
case eFlag.Pay_User_Cancle:
//⽤户取消⽀付 mMainActivity.sendResult("⽤户取消⽀
付:"+ret.toString());
 break;
case eFlag.Pay_Param_Error: mMainActivity.sendResult("⽀付失败,参数错
误"+ret.toString());
 break;

4. 返回参数

参数名称 描述
Ret 0 成功 1 失败
flag 0 成功 非0失败
msg ret不为0的时候,错误信息(utf-8编码)

注:支付不以客户端的结果为准

四.测试及发布审核

游戏开发者在开发完成后,需要在测试环境对充值、查询余额、扣费等环境进⾏测试,测试通过后需要 切换到现⽹环境并提交审核。

以上信息是否解决您的问题?

Copyright © 1998 - 2021 Tencent. All Rights Reserved.

腾讯公司 版权所有

返回顶部