{{ errorTipText }}
此文档主要是用于在游戏及应用开发商需要接入掌趣SDK时,各个用户和计费相关的接口参考说明。
用于在游戏及应用开发商需要接入掌趣BASE SDK时,了解BASE SDK如何接入,接入过程中需注意的事项等。
接入掌趣的游戏及应用的android 客户端开发者。
服务端配置:请参考 通用接入文档—> 《SDK服务端接入说明文档》
安卓包是指androidmainfest.xml中的versionName。
在掌趣自动打包系统里,serviceId是区分渠道信息的标识,研发如果要识别当前游戏包属于哪个渠道,请调用获取serviceId的接口,并和技术经理匹配各serviceId对应的渠道。
如果产品接入了第三方SDK,有需要根据包名、签名分配参数的情况,一定要提前通知技术经理。各个渠道包的包名、签名、证书等都不一样。自动打包将替换客户端包名、签名和证书。但不会自动替换第三方的参数。
如地图、语音、推送能功能的第三方SDK。具体如何实现,需要根据具体情况操作。
可以将使用到包名的地方配置为:ourpalm_package_name 。打包时掌趣打包工具会将ourpalm_package_name替换为包名。
游戏res资源文件中,png及xml文件命名最好不好过于简单,以免和第三方渠道重复。如close.png或close.xml命名的文件,可以加上游戏名前缀,game_close.png或game_close.xml
游戏需要调用Ourpalm_GetEnableInterface这个接口,根据的返回值来确认游戏是否需要启用这三个接口和相应的UI按钮展示。因为根据渠道不同会用到其中之一或者所有都不用。返回值详见Ourpalm_GetEnableInterface接口说明。
具体接口介绍参见:11 Activity生命周期相关接口的调用
Ourpalm_Entry.getInstance(this).Ourpalm_onPause()Ourpalm_Entry.getInstance(this).Ourpalm_onRestart()Ourpalm_Entry.getInstance(this).Ourpalm_onResume()Ourpalm_Entry.getInstance(this).Ourpalm_onStart()Ourpalm_Entry.getInstance(this).Ourpalm_onStop()Ourpalm_Entry.getInstance(this).Ourpalm_onDestroy()Ourpalm_Entry.getInstance(this).Ourpalm_onActivityResult()Ourpalm_Entry.getInstance(this).Ourpalm_onConfigurationChanged()Ourpalm_Entry.getInstance(this).Ourpalm_onNewIntent()
支付接口中的参数注意:
propName:商品名称(也可以理解为商品单位)。
propCount:商品数量。
注意:对该接口中的商品名称和商品数量2个参数具体说明。
如游戏中所卖商品在游戏界面显示为“100元宝或100金币”,当调用支付接口时,商品名称务必传“元宝或金币”,商品数量务必传“100”。切记不可商品名称传“100元宝或100金币”,商品数量传“1”;
如游戏中所卖商品在游戏界面显示为“月卡或礼包”一类,当调用支付接口时,商品名称请直接传“月卡或礼包”,商品数量传“1”。
切记 如果当前商品是某种虚拟游戏货币,商品名称中不要出现数量的概念。
方式一:游戏工程直接引用《OurpalmAndroid_SDK_Lib_Base完整版本号》此lib工程,工程内已包含res中的资源和lib库,assets中资源,请自行从《资源,LIB库和配置文件》目录中复制assets文件夹中内容到游戏工程的assets目录。如何引用lib工程这里不做详细说明,如不清楚如何导入lib工程到游戏工程请上网搜索,或者咨询掌趣SDK技术人员。
方式二:直接导入base sdk的aar接入。
<!-- OurpalmSDK需要的权限 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.INTERNET" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="our.test.base.demo"android:installLocation="auto"android:versionCode="1"android:versionName="1.0.1" ><!-- 如游戏本身有Application类,则需要在代码中继承ourpalm.android.channels.Info.Ourpalm_Channels_Application;如游戏本身没有Application类,则需要在此添加配置,将AndroidManifest.xml中application的名字命名为"ourpalm.android.channels.Info.Ourpalm_Channels_Application" --><application android:name="ourpalm.android.channels.Info.Ourpalm_Channels_Application"android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="ourpalm.android.opservice.Ourpalm_OpService_Activity"android:configChanges="keyboardHidden|orientation|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar" ></activity><!-- 打开指定页面Activity V3.4.0版本新增加--><activityandroid:name="ourpalm.android.view.Ourpalm_WebView_Activity"android:configChanges="keyboardHidden|orientation|screenSize"android:screenOrientation="sensor"android:theme="@android:style/Theme.Translucent.NoTitleBar" ></activity><!-- 游戏自己的启动activity类名,需要完整路径,必须配置 --><meta-dataandroid:name="ourpalm_class_name"android:value="com.ourpalm.test_ourpalm_v3.MainActivity" /><!-- 游戏请配置自己游戏的展示类型,竖屏游戏请配置成 portrait,横屏游戏请配置成landscape --><meta-dataandroid:name="ourpalm_screenOrientation"android:value="landscape" /><meta-dataandroid:name="ourpalm_gametype_console"android:value="false" /></application>
注意:APK安装位置属性必须配置为android:installLocation=”auto”

1 手机游戏客户端会调用掌趣sdk进行sdk初始化操作
2 掌趣sdk向掌趣用户中心服务器发起登录/注册的请求
3 掌趣用户中心服务器向掌趣sdk返回token、用户信息等等
4 掌趣sdk向游戏客户端返回登录结果,包含token和用户相关信息
5 游戏客户端上传用户信息到游戏服务器
6 服务器根据token向掌趣用户中心服务器获取用户信息
7 掌趣用户中心服务器向游戏服务器返回用户信息
8 游戏服务器向游戏客户端返回登录结果
/*** 初始化SDK** @param gameType* 游戏类型 1:网游;2:单机* @param gameVer* 游戏版本号* @param gameResVer* 游戏资源版本号,无资源版本号可传""* @param listener* 回调接口**/public void Ourpalm_Init(String gameType, String gameVer, String gameResVer, Ourpalm_CallBackListener listener)
| 参数名称 | 是否必传 | 类型 | 说明 |
|---|---|---|---|
| gameType | 必须 | String | 游戏类型,GameInfo.GameType_Online表示网游,GameInfo.GameType_Console表示单机。 |
| gameVer | 可选 | String | SDK优先读取AndroidManifest.xml里面的版本号,如未获取到则使用此参数。 |
| gameResVer | 可选 | String | 游戏资源版本号,如游戏无此概念则可以传null。 |
| listener | 必须 | Ourpalm_CallBackListener | 游戏需实现此回调中的所有接口。 |
// 初始化SDKOurpalm_Entry.getInstance(this).Ourpalm_Init("1", gameVer, gameResVer, new Ourpalm_CallBackListener() {@Overridepublic void Ourpalm_LogoutSuccess() {// TODO Auto-generated method stub// 当前渠道带有注销功能的话由游戏实现,如返回到登录界面。// 单机游戏不用实现}@Overridepublic void Ourpalm_LogoutFail(int code) {// TODO Auto-generated method stub// 当前渠道带有注销功能的话由游戏实现// 单机游戏不用实现}@Overridepublic void Ourpalm_LoginSuccess(String tokenId, String data) {// TODO Auto-generated method stub// 登录成功回调,网络游戏必须实现// 单机游戏不用实现}@Overridepublic void Ourpalm_LoginFail(int code) {// TODO Auto-generated method stub// 登录失败回调,网络游戏必须实现// 单机游戏不用实现}@Overridepublic void Ourpalm_InitSuccess() {// TODO Auto-generated method stub// 待SDK的初始化完成后,游戏开始实现游戏本身的初始化// 初始化游戏}@Overridepublic void Ourpalm_InitFail(int code) {// TODO Auto-generated method stub// SDK初始化失败的回调,游戏可以在这里实现自己的逻辑处理,可以只提示用户后退出游戏,也可以继续游戏,但SDK的某些功能可能会受到影响}@Overridepublic void Ourpalm_ExitGame() {// TODO Auto-generated method stub// 游戏使用掌趣SDK退出接口时必须实现此回调,在此处实现退出游戏的功能。MainActivity.this.finish();// android.os.Process.killProcess(android.os.Process.myPid());}@Overridepublic void Ourpalm_SwitchingAccount(boolean Success, String tokenId, String userInfo) {// TODO Auto-generated method stub// 当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:// 一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。// 二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程(游戏能在游戏中直接实现账号切换,人物改变的除外,不需返回登录界面)。// Success=true表示切换成功,Success=false表示切换失败,tokenId和userInfo同登录成功接口// 单机游戏不用实现}});
登陆注销成功:public void Ourpalm_LogoutSuccess();登陆注销失败:public void Ourpalm_LogoutFail(int code);登陆成功:public void Ourpalm_LoginSuccess(String tokenId, String data);登陆失败:public void Ourpalm_LoginFail(int code);初始化成功:public void Ourpalm_InitSuccess();初始化失败:public void Ourpalm_InitFail(int code);退出游戏:public void Ourpalm_ExitGame();切换账号回调:public void Ourpalm_SwitchingAccount(boolean Success,String tokenId, String userInfo);
以上接口中的code参数为错误码。
调用第三方SDK的登陆功能。
当为官网包时会自动调用掌趣官网登陆界面。
/*** 登陆接口*/public void Ourpalm_Login();
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_Login();
public void Ourpalm_LoginSuccess(String tokenId, String data)
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| tokenId | 必须 | String | 掌趣用户中心返回的当前登陆用户的tokenId,游戏客户需将此参数的值传给游戏服务器,游戏服务器需来掌趣用户中心进行登陆验证,验证通过才能让用户进入游戏,详看服务器登陆验证接口。 |
| data | 必须 | String | 当前登陆用户的用户信息数据,json格式 |
tokenId == 45bf7d3b-5041-451d-b660-b872ba4c831ddata == {"id":"0101540000000000000000000000000623530796","userName":"oPlat000000001000047","returnJson":{"ErrorCode":"1","ErrorDesc":"有效"}}id:掌趣用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识。userName:掌趣用户中心生成的用户名称。returnJson:第三方用户系统返回给掌趣用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。
public void Ourpalm_LoginFail(int code)
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| code | 必须 | int | 错误码详情 请查看错误码列表 |
注销当前登陆账号,注销成功后会调用游戏实现功能后的注销回调接口。
客户端需要根据Ourpalm_GetEnableInterface 返回值,判断是否需要展示UI和调用此接口
/*** 登陆注销*/public void Ourpalm_Logout()
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_Logout();
某些渠道SDK当登陆过一次后下次登陆会变成自动登陆,这个时候如果SDK内部没有注销或者切换账号的按钮,需要游戏调用此接口实现账号切换功能。
客户端需要根据Ourpalm_GetEnableInterface 返回值,判断是否需要展示UI和调用此接口
/*** 账号切换*/public void Ourpalm_SwitchAccount();
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_SwitchAccount();
成功登录并进入游戏后,游戏客户端必须调用此接口设置用户的角色信息,角色信息在其他功能接口中需要用到,如未调用则无法使用支付功能。用户首次创建或注册角色并登录时,需要调用一次注册设置(type=1)和一次登录设置(type=2);用户使用老角色登录,则只需要调用一次登录设置(type=2)。
注意:
1.游戏内没有角色注册行为的,在游戏自动给用户创建角色的时候,即认为注册。
2.用户首次创建或注册角色并登录时,需先调用注册设置(type=1),再调用登录设置(type=2)
/*** 设置游戏角色信息* @param type* 1:角色注册,2:角色登录* @param gameServerName* 当前角色所属服务器名称* @param gameServerId* 当前角色所属服务器ID(必须纯数字)* @param roleName* 当前角色名字(不支持富文本)* @param roleId* 当前角色ID(不可使用特殊符号)* @param rolelv* 当前角色等级,无等级可传""* @param roleViplv* 当前角色VIP等级,无VIP等级可传""**/public void Ourpalm_SetGameInfo(int type, String gameServerName,String gameServerId, String roleName, String roleId,String rolelv,String roleViplv)
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_SetGameInfo(1, "服务器名称", "服务器ID", "测试角色名称", "测试角色ID", "测试角色等级", "测试角色VIP等级");
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| type | 必须 | int | 1表示角色注册,2表示角色登录 |
| gameServerName | 必须 | String | 当前用户所在游戏服务器名称 |
| gameServerId | 必须 | String | 当前用户所在游戏服务器ID(必须纯数字) |
| roleName | 必须 | String | 当前角色名称(不支持富文本) |
| roleId | 必须 | String | 当前角色ID(不可使用特殊符号) |
| rolelv | 必须 | String | 当前角色等级,如无可传”” |
| roleViplv | 必须 | String | 当前角色VIP等级,如无可传”” |
用户在SDK的用户中心界面操作,可以为当前账号绑定其它登录方式(账号)。比如账号升级、Google、Facebook、邮箱等,也可以在用户中心界面为当前账号解绑,需要二次打包测试。
/ 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if (id.equals("Ucenter_BindAccount_Success")) {Logs.i("info", "bind account success");Logs.i("info", "arg[0]"+arg[0]);//arg[0] 为平台标识:facebook,google,twitter,vk,email,accountLogs.i("info", "arg[1]"+arg[1]);//arg[1]为平台返回用户参数 Json/**facebook范例:{"token_for_business":"AbwRsy594dBTNzKJ","name":"指针","picture":{"data":{"height":600,"is_silhouette":false,"url":"https:\/\/platform-lookaside.fbsbx.com\/platform\/profilepic\/?asid=1801576980023900&gaming_photo_type=unified_picture&ext=1639723523&hash=AeSpx1PW3H4p6XbHTs4","width":600}},"id":"1801576980023900","originalProductUserId":"1801576980023900"}google 范例:{"uid":"116113243026395000456","name":"刘利男"}twitter 范例:{"userId":"1438080497515515908","name":"leecm","screen_name":"leecm_test"}vk 范例:没有返回用户名字,注意判断email 范例:{"name":"testmail111@gmail.com"}account 范例:{"name":"luginsssass"}**/Toast.makeText(MainActivity.this, "账号绑定成功"+arg[0], Toast.LENGTH_LONG).show();} else if (id.equals("Ucenter_BindAccount_Fail")) {//arg[0] 为平台标识:facebook,google,twitter,vkToast.makeText(MainActivity.this, "账号绑定失败"+arg[0], Toast.LENGTH_LONG).show();}else if (id.equals("Ucenter_unBindAccount_Fail")) {//arg[0] 为平台标识:facebook,google,twitter,vkLogs.i("info", "arg[0]"+arg[0]);Toast.makeText(MainActivity.this, "解绑失败"+arg[0], Toast.LENGTH_LONG).show();}else if (id.equals("Ucenter_unBindAccount_Success")){//arg[0] 为平台标识:facebook,google,twitter,vkLogs.i("info", "arg[0]"+arg[0]);Toast.makeText(MainActivity.this, "解绑成功"+arg[0], Toast.LENGTH_LONG).show();}});
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 判断是那个接口返回的回调 Ucenter_BindAccount_Success 表示绑定成功 Ucenter_BindAccount_Fail 表示绑定失败 Ucenter_unBindAccount_Success 表示解绑成功 Ucenter_unBindAccount_Fail 表示解绑失败 |
| arg[0] | String | 具体含义参见上面的注释 |
| arg[1] | String | 具体含义参见上面的注释 |
谷歌渠道要求所有上架的应用都需要带删除账号功能,实现删除账号功能调用此接口即可。
// 删除账号Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("CloseAccountWithUserInfo");
此接口为自定义接口,可以在自定义接口中接受回调
| 参数 | 类型 | 描述 |
|---|---|---|
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.code | string | 错误码 |
| jsonParams.desc | string | 结果状态说明 |
回调示例 {“code”:”0”,”desc”:””,”success”:”1”}
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("CloseAccountWithUserInfo")){Toast.makeText(MainActivity.this, "删除账号信息:"+arg[0], Toast.LENGTH_LONG).show();}
恢复账号回调是自定义接口
| 参数 | 类型 | 描述 |
|---|---|---|
| jsonParams.status | string | 成功:”1”,失败:”0” |
| jsonParams.reset | string | 错误码 |
| jsonParams.desc | string | 结果状态说明 |
| jsonParams.id | string | userid |
回调示例:{“status”:”1”,”desc”:”恢复账号成功”,”reset”:”1000”,”id”:”0800010000000000000000000000000010000703”}
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("resumeAccountCallBack")){Toast.makeText(MainActivity.this, "恢复账号成功:"+arg[0], Toast.LENGTH_LONG).show();}
判断当前账号是否绑定邮箱,二次打包测试。
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("CheckBindEmail");
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_CheckBindEmail")){try {JSONObject checkResultJson = new JSONObject(arg[0]);JSONObject dataJson = new JSONObject(checkResultJson.getString("data"));String emailName = dataJson.getString("emailAccount");if (Ourpalm_Statics.IsNull(emailName)) {Toast.makeText(MainActivity.this,"没有绑定邮箱, arg[0] ="+arg[0], Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,"已绑定邮箱, arg[0] ="+arg[0], Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
此接口为自定义接口,可以在自定义接口中接受回调,如果返回的emailAccount字段为空串,即表示当前账号没有绑定邮箱账号,要是已绑定邮箱,emailAccount字段即为绑定的邮箱账号。
| 参数 | 类型 | 描述 |
|---|---|---|
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.code | string | 错误码 |
| jsonParams.data.curBindingPlatform | string | 绑定平台:默认为:email |
| jsonParams.data.emailAccount | string | 绑定的邮箱账号 |
回调示例:{“success”:”1”,”data”:{“curBindingPlatform”:”email”,”emailAccount”:”emailAccount”:”aaaaabbbb@126.com”},”code”:”0”}
打开绑定邮箱界面接口,如果当前账号已绑定邮箱,会回调返回绑定的邮箱账号,如果没绑定,会弹出绑定邮箱界面,玩家绑定成功后会回调返回绑定的邮箱账号,二次打包测试。
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("ShowBindEmail");
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_ShowBindEmail")){try {JSONObject checkResultJson = new JSONObject(arg[0]);JSONObject dataJson = new JSONObject(checkResultJson.getString("data"));String emailName = dataJson.getString("emailAccount");if (Ourpalm_Statics.IsNull(emailName)) {Toast.makeText(MainActivity.this,"邮箱绑定失败, arg[0] ="+arg[0], Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,"邮箱绑定成功, arg[0] ="+arg[0], Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
此接口为自定义接口,可以在自定义接口中接受回调,如果返回的emailAccount字段为空串,即表示当前账号没有绑定邮箱账号,要是邮箱绑定成功,emailAccount字段即为绑定的邮箱账号。
| 参数 | 类型 | 描述 |
|---|---|---|
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.code | string | 错误码 |
| jsonParams.data.curBindingPlatform | string | 绑定平台:默认为:email |
| jsonParams.data.emailAccount | string | 绑定的邮箱账号 |
回调示例:{“success”:”1”,”data”:{“curBindingPlatform”:”email”,”emailAccount”:”emailAccount”:”aaaaabbbb@126.com”},”code”:”0”}

1 base sdk向掌趣计费中心发起支付请求;
2 掌趣计费中心生成订单号,并向base sdk返回支付结果;
3 掌趣计费中心通知游戏服务器发货;
4 游戏服务器发送虚拟物品至玩家手机游戏客户端;
5 游戏服务器向计费中心返回发货结果;
调用自有支付功能或者第三方SDK的支付功能,实现游戏中的道具购买。
注意:对该接口中的商品名称和商品数量2个参数具体说明,如游戏中所卖商品在游戏界面显示为“100元宝”,当调用支付接口时,商品名称请传“元宝”,商品数量请传“100”,切记不可商品名称传“100元宝”,商品数量传“1”。
/**** @param propId* 游戏自定义的商品ID* @param chargeCash* 商品价格* @param currencyType* 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元10泰铢)* @param propName* 商品名称* @param propCount* 商品数量* @param propDes* 商品描述* @param Gameurl* 掌趣计费中心回调游戏发货地址* @param ExtendParams* 扩展参数* @param callBack* 支付回调接口* @param rolelv* 角色等级* @param roleviplv* 角色VIP等级* @param userId* 掌趣SDK登录成功返回的userId* @param serverId* 玩家登录的游戏服id* @param roleId* 玩家角色id* @param purchaseInfo* 游戏自定义参数,值为json字符串,其中包含礼包ID(package_id,order_funnel_id,dev_order_id),暂时用于数据统计*/public void Ourpalm_Pay(final String propId, final String chargeCash, final String currencyType,final String propName, final String propCount, final String propDes, final String Gameurl,final String ExtendParams, final Ourpalm_PaymentCallBack callBack, final String rolelv,final String roleviplv,final String userId, final String serverId, final String roleId, final String purchaseInfo)
注:Android相比于iOS新增 userId、serverId、roleId等参数
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| propId | 必须 | String | 游戏自定义的道具ID 必传。 |
| chargeCash | 必须 | String | 道具价格,单位为分。 |
| currencyType | 必须 | String | 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元) |
| propName | 必须 | String | 道具名称 |
| propCount | 必须 | String | 道具数量 |
| propDes | 必须 | String | 道具描述 |
| Gameurl | 必须 | String | 游戏发放道具服务器地址,用户支付成功后掌趣计费中心会回调此地址告知游戏进行道具发放。 |
| ExtendParams | 可选 | String | 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器。 |
| callBack | 必须 | Ourpalm_PaymentCallBack | 客户端回调类 |
| rolelv | 必须 | String | 角色等级,请传数字,如游戏中无角色等级可以传null |
| roleviplv | 必须 | String | 角色VIP等级,请传数字,如游戏中无角色VIP等级可以传null |
| userId | 必须 | String | 掌趣SDK登录成功后返回的userId |
| serverId | 必须 | String | 玩家登录的游戏服id |
| roleId | 必须 | String | 玩家角色id |
| purchaseInfo | 必须 | String | 买量BI要求的自定义数据,json字符串,需要携礼包ID(package_id)、研发生成的付费会话唯一ID(order_funnel_id)、研发订单ID(dev_order_id)等,{\”order_funnel_id\”:\”95b49366-acb8-41a1-ba94-5577bd362074\”,\”package_id\”:\”200279\”,\”dev_order_id\”:\”36291\”} |
Ourpalm_Entry.getInstance(this).Ourpalm_Pay("商品ID", "100", "1", "商品名称", "1", "商品描述", "回调地址", "我是扩展参数",new Ourpalm_PaymentCallBack() {@Overridepublic void Ourpalm_PaymentSuccess(int code, String ssid, String channelOrderId, String pbid) {Logs.i("info", "Ourpalm_PaymentSuccess ssid == " + ssid +", channelOrderId = " + channelOrderId + " , pbid = " + pbid);Toast.makeText(MainActivity.mMainActivity, "花钱成功了。。。*_*", Toast.LENGTH_SHORT).show();}@Overridepublic void Ourpalm_PaymentFail(int code, String ssid, String channelOrderId, String pbid) {Logs.i("info", "Ourpalm_PaymentFail code = " + code + "ssid == " + ssid +", channelOrderId = " + channelOrderId + " , pbid = " + pbid);Toast.makeText(MainActivity.mMainActivity, "支付失败了", Toast.LENGTH_SHORT).show();}@Overridepublic void Ourpalm_OrderSuccess(int code, String ssid, String channelOrderId, String pbid) {Logs.i("info", "Ourpalm_OrderSuccess code = " + code + "ssid == " + ssid +", channelOrderId = " + channelOrderId + " , pbid = " + pbid);Toast.makeText(MainActivity.mMainActivity, "下单成功了", Toast.LENGTH_SHORT).show();}}, RoleLv, RoleVipLv, userId, serverId, roleId, purchaseInfo);
public void Ourpalm_PaymentSuccess(int code, String ssid, String channelOrderId, String pbid);
public void Ourpalm_PaymentFail(int code, String ssid, String channelOrderId, String pbid);
/* "下单成功"表示当前订单已经成功提交,但用户是否进行支付,以计费中心服务器的通知为准。 下单成功代表支付流程结束。下单成功回调触发以后不会在有支付成功和支付失败的回调,游戏需要根据服务器通知为准。*/public void Ourpalm_OrderSuccess(int code, String ssid, String channelOrderId, String pbid);
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| code | 必须 | int | 结果状态说明 |
| ssid | 必须 | string | 掌趣sdk生成的订单号,如支付失败或者用户取消支付时可能返回为空。 |
| channelOrderId | 必须 | string | 第三方渠道原始订单号,目前暂时只有google渠道才返回,如支付失败或者下单成功时可能返回为空。 |
| pdid | 必须 | string | 游戏自定义id |
注:1、Android端和iOS端返回错误码不一致。2、Android返回参数key为小写{String ssid, String pbid},iOS端返回json中的key为小驼峰{ “desc”:成功描述,”propId”:”道具ID”,”reset”:”120”,”ssId”:”订单号}
游戏登录成功后,调用此接口,打开客服反馈页面
游戏需要自己设计UI展示以及展示位置,当用户点击此按钮时,调用接口,打开客服反馈页面。
Ourpalm_OpService_Entry.getInstance().EnterServiceQuestion();
调用该接口会拉起AIHelp智能客服页面。
注意:android包要使用AIHelpSDK接口,需要业务同学先在dev后台-三方参数-三方能力中添加AIHelp sdk,再二次打包测试。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("aihelp_openServiceDialog","{\"entranceId\":\"CS01\",\"userTags\":\"paid\",\"customData\":\"{\"baseLevel\":\"123\",\"loadingProgress\":\"25\"}\"}");
| 参数 | 描述 |
|---|---|
| id | 接口id 本接口为:aihelp_openServiceDialog |
| jsonParam.entranceId | 自定义入口ID,需要业务同学在AIHelp后台配置 |
| jsonParam.userTags | 用户标签(可选),需要业务同学在AIHelp后台配置 |
| jsonParam.customData | 自定义用户数据(可选), 对应json串: {“key”:”value”, “key”:”value”} |
entranceId和userTags这两个参数都需要业务同学事先在AIHelp后台配置,customData是自定义用户数据json串,由研发和业务同学一起确认需要传哪些参数。
事例:
JSONObject customDataJson = new JSONObject();customDataJson.put("baseLevel", "123");customDataJson.put("loadingProgress", "25");aihelpJson.put("customData", customDataJson.toString());Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("aihelp_openServiceDialog",aihelpJson.toString());
调用该接口会拉起AIHelp智能客服页面。
注意:android包要使用AIHelpSDK接口,需要业务同学先在dev后台-三方参数-三方能力中添加AIHelp sdk,再二次打包测试。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("aihelp_openFAQs","{\"entranceId\":\"E001\",\"userTags\":\"paid\",\"customData\":\"{\"baseLevel\":\"123\",\"loadingProgress\":\"25\"}\"}");
| 参数 | 描述 |
|---|---|
| id | 接口id 本接口为:aihelp_openFAQs |
| jsonParam.entranceId | 自定义入口ID,需要业务同学在AIHelp后台配置 |
| jsonParam.userTags | 用户标签(可选),需要业务同学在AIHelp后台配置 |
| jsonParam.customData | 自定义用户数据(可选), 对应json串: {“key”:”value”, “key”:”value”} |
entranceId和userTags这两个参数都需要业务同学事先在AIHelp后台配置,customData是自定义用户数据json串,由研发和业务同学一起确认需要传哪些参数。
事例:
JSONObject aihelpJson = new JSONObject();aihelpJson.put("entranceId", "E001");aihelpJson.put("userTags", "paid");JSONObject customDataJson = new JSONObject();customDataJson.put("baseLevel", "120");customDataJson.put("loadingProgress", "100");aihelpJson.put("customData", customDataJson.toString());Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("aihelp_openFAQs", aihelpJson.toString());
提供helpshift在线客服功能及打开FAQ页面功能。
调用此接口,可以拉起HelpShift在线客服反馈页面。
/*** 打开helpshift客服弹框* @param id 接口id* @param tag 客服入口打点*/Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("helpShift_openServiceDialog","opentags");
| 参数 | 描述 |
|---|---|
| id | 接口id 本接口为:helpShift_openServiceDialog |
| tag | 客服入口打点标识 |
注意:当游戏设立多个客服入口时,每个入口都要设定一个tag,同时需要把所有的tag值都提供给运营同学,运营同学在helpShift后台Settings-WORKFLOWS-Tags下添加所有定义好的tag.
调用此接口,可以拉起HelpShift FAQ页面。
/*** 打开helpshift FAQ弹窗* @param id 接口id*/Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("helpShift_openFAQs");
| 参数 | 描述 |
|---|---|
| id | 接口id 本接口为:helpShift_openFAQs |
调用此接口,可以拉起指定问题id的helpshift客服FAQ页面,问题id由运营同学提供。
/*** 打开helpshift指定FAQ弹窗** @param activity* @param questionPublishId*/Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("helpShift_openSingleFAQ", "25");
| 参数 | 描述 |
|---|---|
| id | 接口id 本接口为:helpShift_openSingleFAQ |
| questionPublishId | 指定问题id |
调用此接口,可以拉起指定问题id的helpshiftFAQ列表页面,问题id由运营同学提供。
/*** 打开指定问题id的faq列表** @param activity* @param questionPublishId*/Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("helpShift_openFAQSection", "29");
| 参数 | 描述 |
|---|---|
| id | 接口id 本接口为:helpShift_openFAQSection |
| questionPublishId | 指定问题id |
调用此接口,可以设置helpshift用户信息,如果登录前调用,userId传空串,登录成功选服后,sdk会自动此调用。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("helpShift_setUserInfo", userId, userName, roleId, serverId, vLevel, roleName);
| 参数 | 描述 |
|---|---|
| id | 接口id 本接口为:helpShift_setUserInfo |
| userId | 用户id |
| userName | 用户名称 |
| roleId | 角色id |
| serverId | 玩家区服id |
| vLevel | 角色vip等级 |
| roleName | 角色名称 |
客服人员回复消息后,玩家重进后会收到此回调
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if (id.equals("helpShift_NotificationCount")){//arg[0] 为回复通知数,"0"表示没有新的通知Logs.i("info", "arg[0]"+arg[0]);Toast.makeText(MainActivity.this, "helpshift回复通知数="+arg[0], Toast.LENGTH_LONG).show();}}});
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 本接口为:helpShift_NotificationCount |
| arg[0] | String | 0表示没有新的回复 |
兑换礼包码
CP接入礼包码功能时,由SDK来直接提示错误提示语。
/*** 礼包码兑换接口* @param GiftCode 礼包码* @param url 发货地址* @param extendParams 扩展参数* @param mListener 回调*/public void Ourpalm_GiftExchange(String GiftCode, String url,final String extendParams,final Ourpalm_GiftExchangeCallBack mListener);
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| GiftCode | 必须 | String | 礼包码 |
| url | 必须 | String | 游戏发货服务器地址 |
| extendParams | 可选 | String | 透传参数,成功回调内,将会返回此参数 |
| mListener | 必须 | GiftExchangeCallBack | 结果回调,成功回调内参数说明packageId |
Ourpalm_Entry.getInstance(this).Ourpalm_GiftExchange("用户输入的礼包码", "游戏发货服务器地址", "透传参数",new Ourpalm_GiftExchangeCallBack());
/*** 操作成功* packageId 礼包码ID* extendParams 游戏透传参数(游戏传进来的透传参数)*/public void Ourpalm_Success(String packageId, String extendParams);
/** 操作失败* @param code* 错误码*/public abstract void Ourpalm_Fail(int code);
因为某些第三方SDK需要用到生命周期中的某些方法,所以游戏客户端Activity中 必须调用掌趣SDK中定义的生命周期方法,否则可能会出现不可预估的问题。
@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Ourpalm_Entry.getInstance(this).Ourpalm_onStart();}
@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Ourpalm_Entry.getInstance(this).Ourpalm_onResume();}
@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Ourpalm_Entry.getInstance(this).Ourpalm_onPause();}
@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Ourpalm_Entry.getInstance(this).Ourpalm_onStop();}
@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();Ourpalm_Entry.getInstance(this).Ourpalm_onRestart();}
@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Ourpalm_Entry.getInstance(this).Ourpalm_onDestroy();}
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);Ourpalm_Entry.getInstance(this).Ourpalm_onActivityResult(requestCode, resultCode, data);}
@Overridepublic void onConfigurationChanged(Configuration newConfig) {// TODO Auto-generated method stubsuper.onConfigurationChanged(newConfig);Ourpalm_Entry.getInstance(this).Ourpalm_onConfigurationChanged(newConfig);}
@Overrideprotected void onNewIntent(Intent intent) {// TODO Auto-generated method stubsuper.onNewIntent(intent); Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_onNewIntent(intent);}
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data); Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_onActivityResult(this, requestCode, resultCode, data);}
“用户中心”,“切换账号”,“登录注销”等接口必须接入。
提供此接口用来引导游戏合理使用以上三个接口。根据SDK返回的值,判断是否在相应渠道客户端中显示或隐藏UI展示,以及和是否调用以上三个接口。
比如当前渠道需要调用用户中心接口,则需要将用户中心按钮显示出来并实现其接口调用的功能,如不需要,则需要隐藏用户中心的按钮。其他功能同理。
此三个功能SDK只提供功能接口,无UI显示,所以需要游戏实现展示或者隐藏“用户中心”,“切换账号”,“登录注销”的UI按钮。根据返回值给予显示或者隐藏。
/*** 获取当前渠道游戏包是否要调用“用户中心”,“切换账号”,“登陆注销”等接口*/public String Ourpalm_GetEnableInterface()
String enable = Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_GetEnableInterface();
{"Logout":"Disabled","SwitchAccount":"Disabled","UserCenter":"Enabled"}Enabled: 表示需要调用Disabled: 表示不需要调用例如以上返回数据说明:登陆注销接口不需要调用;切换账号接口不需要调用,进入用户中心接口需要调用。
进入第三方渠道SDK的用户中心或者论坛界面,或者进入官网SDK的用户中心界面。
客户端调用,根据第三方渠道SDK要求来决定是否调用
/*** 进入用户中心接口,如果是用官网登陆的则进入官网的用户中心*/public void Ourpalm_GoCenter()
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_GoCenter();
调用第三方SDK的退出提示接口,如第三方SDK无退出提示接口则调用掌趣的退出 提示界面或者直接退出游戏。
/*** 调用第三方SDK退出提示页面,如果第三方SDK无退出提示页面则调用掌趣提示页面* @param usetip* 是否使用掌趣SDK的退出提示界面*/public void Ourpalm_ExitGame(boolean usetip)
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| usetip | 必须 | Boolean | 决定是否使用掌趣SDK自带的退出提示界面, 如果第三方SDK带有退出提示界面,此参数无效 |
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif (keyCode == KeyEvent.KEYCODE_BACK) {Ourpalm_Entry.getInstance(this).Ourpalm_ExitGame(true);return true;}return super.onKeyDown(keyCode, event);}
打开后能在logcat看到SDK的日志输出,TAG为“info”和”msg”, 用于游戏接入SDK的调试阶段,出正式游戏包时请务必关闭日志输出。
/*** 是否打开日志* @param log 是否打开日志输出*/public void SetLogs(boolean log)
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| log | 必须 | Boolean | 是否打开日志输出 |
// 设置打开日志输出Ourpalm_Entry.getInstance(this).SetLogs(true);
获取当前游戏包中的ServiceId。
/*** @return 业务ID*public String getServiceId();
Ourpalm_Entry.getInstance(this).getServiceId();
获取当前游戏包内打入的渠道ID。
/*** @return 渠道ID*public String getChannelId();
Ourpalm_Entry.getInstance(this).getChannelId();
获取当前游戏包内打入的机型组ID。
/*** @return 机型组ID*/public String getDeviceGroupId();
Ourpalm_Entry.getInstance(this).getDeviceGroupId();
获取当前游戏包内打入的语言ID。
/*** @return 语言ID*/public String getLocaleId();
Ourpalm_Entry.getInstance(this).getLocaleId();
获取当前游戏包内打入的OPID。
/*** @return OPID*/public String getOpId();
Ourpalm_Entry.getInstance(this).getOpId();
1.需要先调用初始化接口Ourpalm_Init后 再调用 本接口获取 ServiceCode;
2.游戏研发人员 获取ServiceCode后,联系掌趣服务器端同学联调服务端日志,获取ServiceCode接入工作正式完成。
/*** 获取ServiceCode* @param gameResVer* 游戏资源版本号,无资源版本号可传""** @return 返回ServiceCode*/public String Ourpalm_getServiceCode(final String gameResVer);
// 获取掌趣serviceCode接口,游戏需要调用(SDK接口)Ourpalm_ServiceCode_Entry.getInstance(this).Ourpalm_getServiceCode("资源版本号");
打开后能在logcat看到SDK的日志输出,TAG为“info”, 用于游戏接入SDK的调试阶段,出正式游戏包时请务必关闭日志输出。
/*** 是否打开日志** @param log*/public void SetLogs(boolean log)
// 设置打开日志输出,出正式包时务必注释掉,或者传falseOurpalm_ServiceCode_Entry.getInstance(this).SetLogs(true);
打开指定url的web页面接口(可用于论坛、社区、活动)。
/*** 加载指定URL的Web页面** @param webUrl* 页面URL** @author lgc 2018年04月11日 上午11:17:52*/public void Ourpalm_OpenSpecificWebView(String webUrl)
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| webUrl | 必须 | String | web页面url |
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_OpenSpecificWebView("http://www.baidu.com");
游戏登录成功后调用本接口可以打开系统分享界面,给其它玩家分享邀请内容及邀请码,其它玩家可以通过分享app上的邀请链接拉起或安装游戏包。
注意:游戏必须接入base sdk的onNewIntent 这个生命期接口。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(id, inviteMsg, inviteCode);
参数说明:
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| id | 必传 | String | 接口id 本接口为:OpenInstall_sendShareInvite |
| inviteMsg | 必传 | String | 邀请内容 |
| inviteCode | 必传 | String | 邀请码 |
接口示例
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("OpenInstall_sendShareInvite", "test openinstall invite", "testvalue");
其它玩家可以通过分享app上的邀请链接拉起或安装游戏包时,会收到这个回调。其中,arg[0]即为邀请者的邀请码。
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if (id.equals("OpenInstall_InviteData")) {Logs.i("info", " Ourpalm_Spreads OpenInstall_InviteData = " + arg[0]);}}});
游戏内切换多语言时调用。
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
游戏必须在主activity中实现生命周期接口attachBaseContext,具体代码如下:
@Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(Ourpalm_LocaleUtils.attachBaseContext(base));}
Ourpalm_LocaleUtils.updateLocale(Context, Locale);
| 参数名 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| context | 必传 | Context | 传入上下文 |
| locale | 必传 | Locale | 设置地域语言(参见下面的地域语言参数说明) |
Ourpalm_LocaleUtils.updateLocale(MainActivity.this,Ourpalm_LocaleUtils.LOCALE_CHINESE);
| Locale参数名 | 语言及对应的国家 |
|---|---|
| LOCALE_CHINESE | 简体中文_中国 |
| LOCALE_CHINESE_HK | 繁体中文_中国香港 |
| LOCALE_PH | 英语_菲律宾 |
| LOCALE_SG | 英语_新加坡 |
| LOCALE_GB | 英语_英国 |
| LOCALE_English | 英语_其他地区 |
| LOCALE_TL | 菲律宾语_菲律宾 |
| LOCALE_IND | 印尼语_印尼 |
| LOCALE_TH | 泰语_泰国 |
| LOCALE_MY | 简体中文_马来西亚 |
| LOCALE_RS | 俄语_俄罗斯 |
| LOCALE_DE | 德语_德国 |
| LOCALE_FR | 法语_法国 |
| LOCALE_ES | 西班牙语_西班牙 |
| LOCALE_PL | 波兰语_波兰 |
| LOCALE_BR | 葡萄牙语_巴西 |
| LOCALE_IT | 意大利语_意大利 |
| LOCALE_KR | 韩语_韩国 |
| LOCALE_TR | 土耳其语_土耳其 |
| LOCALE_VI | 越南语_越南 |
| LOCALE_JP | 日语_日本 |
根据google渠道要求,在欧盟及美国发行的游戏新用户首次启动需要弹隐私协议,
只有玩家同意后才能进入游戏。
sdk启动后会自动检测是否需要显示隐私协议。如果玩家已同意过协议,则下次启动不会自动弹出协议界面;
但如果协议内容有更新,则会再次弹出。
本接口暂时保留,目前暂时不可用,用于以后在游戏内需要显示隐私协议时调用。
调用此接口,如果玩家当前ip是欧盟或美国,会拉起隐私协议弹窗。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_OpenPrivacyProtocol();
隐私弹窗点击“不同意”、“同意”、隐私协议更新或不需要展示隐私协议时,游戏都会收到此回调。
特别注意:必须在调用sdk初始化接口Ourpalm_Init前调用Ourpalm_SetSpreadsCallBack接口。
同时,游戏必须等待协议回调通知,然后才能调用登录和打点等其它SDK功能
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if (id.equals("OpenPrivacyProtocol")){//arg[0] 是否显示隐私弹窗Logs.i("info", "arg[0]"+arg[0]);Toast.makeText(MainActivity.this, "已调用隐私协议弹窗接口。。。, Toast.LENGTH_LONG).show();}}});
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 本接口为:OpenPrivacyProtocol |
| arg[0] | String | 0已点击隐私弹窗同意按钮 1不用展示隐私弹窗 |
arg[0]的可选值有:
| 可选值 | 意义 | 说明 |
|---|---|---|
| 0 | 点击隐私弹窗同意按钮 | 显示弹窗并且用户点击了同意协议 |
| 1 | 不用展示隐私弹窗 | 不需要展示协议、或者用户已经同意过协议 |
| 2 | 点击隐私弹窗拒绝按钮 | 显示弹窗并且用户点击了不同意协议 |
| 3 | 隐私协议更新,并点击隐私弹窗同意按钮 | 隐私协议内容有变化,并且用户又同意了新版本的协议 |
| 4 | 该产品没有配置隐私协议功能 |
调用此接口后,可以向阿里云后台上传网络信息,检测网络异常原因,及时修复。
public void Ourpalm_NetworkDiagnosis(String checkTargetArray, String extParams, String isDisplay)
参数1:checkTargetArray 参数为检测目标的地址的数组
例子1:[{"http_url":"待检测的url","host":"host地址","http":"1"},{"host":"host地址","ping":"1"},{"host":"host地址","mtr":"1"}]例子2:[{"host":"ip地址/host地址","tcp_port":端口号,"tcp_ping":"1"},{"host":"ip地址/host地址","ping":"1"},{"host":"ip地址/host地址","mtr":"1"}]注:检测时传参 http和tcp可以任选其一,但是ping和mtr都需要加上
参数2:extParams 参数为检测信息中可附带的额外信息,没有的值可为空(“”)
"{\"reason\":\"serverlist\",\"serverId\":\"10001\",\"userId\":\"0000011101\"}"参数3:isDisplay :游戏调用时传 “0”, 游戏是无感上传
接口调用:
String checkTargetArray = "[\n" +"{\"http_url\":\"https:\\/\\/www.baidu.com\",\"host\":\"www.baidu.com\",\"http\":\"1\"},"+"{\"host\":\"www.baidu.com\",\"ping\":\"1\"},"+"{\"host\":\"www.baidu.com\",\"mtr\":\"1\"}"+"]";String extParams ="{\"reason\":\"serverlist\",\"serverId\":\"10001\",\"userId\":\"0000011101\"}";Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_NetworkDiagnosis(checkTargetArray, extParams, "0");
sdk支持使用admob显示广告,获得广告收入,需要二次打包测试。
游戏调用此接口,可以显示视频激励广告。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("ShowAdmobRewardedAd");
广告显示过程中,admob提供了多个阶段的回调事件,SDK会使用回调事件”Callback_AdmobRewardedAd”传给游戏。
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if (id.equals("Callback_AdmobRewardedAd")){//arg[0] Admob广告回调信息,是一个json串Logs.i("info", "arg[0]"+arg[0]);Toast.makeText(MainActivity.this, "Admob广告回调信息:"+arg[0], Toast.LENGTH_LONG).show();}}});
arg[0]对应Admob广告回调信息,是一个json字符串:
| 参数 | 类型 | 描述 |
|---|---|---|
| jsonParams.adState | string | 广告显示阶段 |
| jsonParams.adDesc | string | 阶段描述(中文),仅用于联调 |
adState和adDesc的可选值有:
{"adState":"PreparedSuccess","adDesc":"广告准备成功"}{"adState":"PreparedFailed","adDesc":"广告准备失败"}{"adState":"Show","adDesc":"广告开始展示"}{"adState":"ShowFailed","adDesc":"广告播放失败"}{"adState":"Clicked","adDesc":"广告已被点击"}{"adState":"VideoAdCompleted","adDesc":"广告播放完毕"}{"adState":"Closed","adDesc":"广告已关闭"}
游戏调用此接口后,可以返回Google商品id对应的商品信息(商品ID、商品价格、商品货币单位、商品title、商品描述及以微单位显示的商品价格),注意需要游戏传入google后台配置的商品id。
/*** 获取Google商品信息** @param id* SkuDetails 获取Google商品信息固定参数* @param value1* JSONArray字符串,商品列表信息*/Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("SkuDetails","[\"ubi.heroes.ad60\", \"ubi.heroes.ad60\"]");
注意:可以获取多个google商品id 对应的商品信息。
if (id.equals("SkuDetails")) {Logs.i("info", "SkuDetails sku_list =" + arg[0]);if (arg[0].equals("")) {// 获取道具列表失败Toast.makeText(MainActivity.this, "获取道具信息功能失败", Toast.LENGTH_LONG).show();} else {// 输出道具列表信息Toast.makeText(MainActivity.this, "获取道具信息功能成功", Toast.LENGTH_LONG).show();try {JSONArray sku_list = new JSONArray(arg[0]);for (int i = 0; i < sku_list.length(); i++) {JSONObject sku = sku_list.getJSONObject(i);Logs.i("info"," sku productId = " + sku.getString("productId") + " price = " + sku.getString("price")+ " title = " + sku.getString("title") + " type = " + sku.getString("type")+ " priceCurrencyCode =" + sku.getString("priceCurrencyCode")+ " description = " + sku.getString("description")+ " priceAmountMicros =" + sku.getLong("priceAmountMicros"));} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();};}}
| 参数 | 描述 |
|---|---|
| sku | google商品信息列表 |
| sku.getString(“productId”) | google 商品id |
| sku.getString(“price”) | google 商品价格 |
| sku.getString(“title”) | google 商品title |
| sku.getString(“priceCurrencyCode”) | google 商品货币单位 |
| sku.getString(“description”) | google 商品描述 |
| sku.getString(“priceAmountMicros”) | google 以微单位显示的商品价格,其中 1,000,000 个微单位等于 1 个单位的货币。例如,如果 price 为 “€7.99”,则 price_amount_micros 为 “7990000” |
游戏调用此接口后,可以返回Google订阅商品id对应的商品信息(商品ID、商品价格、商品货币单位、商品title、商品描述及以微单位显示的商品价格),注意需要游戏传入google后台配置的订阅商品id。
/*** 获取Google订阅计费点商品信息** @param id* SubsSkuDetails 获取Google商品信息固定参数* @param value1* JSONArray字符串,商品列表信息*/Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("SubsSkuDetails", "[\"ubi.heroes.ad9.99e\"]");
注意:可以获取多个google订阅商品id 对应的商品信息。
if (id.equals("SubsSkuDetails")) {Logs.i("info", "SubsSkuDetails sku_list =" + arg[0]);if (arg[0].equals("")) {// 获取道具列表失败Toast.makeText(MainActivity.this, "获取道具信息功能失败", Toast.LENGTH_LONG).show();} else {// 输出道具列表信息Toast.makeText(MainActivity.this, "获取道具信息功能成功", Toast.LENGTH_LONG).show();try {JSONArray sku_list = new JSONArray(arg[0]);for (int i = 0; i < sku_list.length(); i++) {JSONObject sku = sku_list.getJSONObject(i);Logs.i("info"," sku productId = " + sku.getString("productId") + " price = " + sku.getString("price")+ " title = " + sku.getString("title") + " type = " + sku.getString("type")+ " priceCurrencyCode =" + sku.getString("priceCurrencyCode")+ " description = " + sku.getString("description")+ " priceAmountMicros =" + sku.getLong("priceAmountMicros"));} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();};}}
| 参数 | 描述 |
|---|---|
| sku | google订阅商品信息列表 |
| sku.getString(“productId”) | google 商品id |
| sku.getString(“price”) | google 商品价格 |
| sku.getString(“title”) | google 商品title |
| sku.getString(“priceCurrencyCode”) | google 商品货币单位 |
| sku.getString(“description”) | google 商品描述 |
| sku.getString(“priceAmountMicros”) | google 以微单位显示的商品价格,其中 1,000,000 个微单位等于 1 个单位的货币。例如,如果 price 为 “€7.99”,则 price_amount_micros 为 “7990000” |
根据游戏传入的google预注册商品id判断玩家是否在Google商店领取过预注册商品。
此功能最好在游戏账号登录成功后调用。
注意:传入的google预注册商品id是google后台申请的原始预注册商品id。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("CheckGooglePreRegistrationCode",{'pregift':'opm_tw_gg_pregift'}");
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 本接口为:CheckGooglePreRegistrationCode |
| JsonParam.pregift | String | google预注册商品id |
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id + ", arg[0] =" + arg[0]);if (id.equals("CheckGooglePreRegistrationCode")) {// 是否领取预注册奖励回调if (arg[0].equals("0")) {Toast.makeText(MainActivity.this, "没有可以领取的奖励", Toast.LENGTH_LONG).show();} else if (arg[0].equals("1")) {Toast.makeText(MainActivity.this, "可以领取奖励", Toast.LENGTH_LONG).show();}}}});
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 判断是那个接口返回的回调,本接口为:CheckGooglePreRegistrationCode |
| arg[0] | String | 0 没有可以领取的奖励 1 可以领取奖励 |
领取google预注册奖励接口,用户进入游戏登录角色后调用。
Ourpalm_Channel_Spreads("ConsumeGooglePreRegistrationCode",{'pregift':'opm_tw_gg_pregift','roleId':'testroleId123','roleName':'testrolename123','serverId':'605','gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver','extendParams':'extendParams'}");
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 本接口为:ConsumeGooglePreRegistrationCode |
| JsonParams.pregift | String | google预注册商品id |
| JsonParams.roleId | String | 角色id |
| JsonParams.roleName | String | 角色名称 |
| JsonParams.serverId | String | 游戏服Id |
| JsonParams.gameUrl | String | 预注册礼包发货地址 |
| JsonParams.extendParams | String | 游戏自定义参数 |
if (id.equals("ConsumeGooglePreRegistrationCode")) {//领取预注册奖励回调if (arg[0].equals("0")) {Toast.makeText(MainActivity.this, "领取失败", Toast.LENGTH_LONG).show();} else if (arg[0].equals("1")) {Toast.makeText(MainActivity.this, "领取成功", Toast.LENGTH_LONG).show();}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 判断是那个接口返回的回调,本接口为:ConsumeGooglePreRegistrationCode |
| arg[0] | String | 0 领取失败 1 领取成功 |
用于玩家在google play商店兑换google礼品卡促销码后,领取相关道具时使用的接口,需要在角色登录后才可进行调用,如果游戏已接入google预注册商品领取功能,需要先调用预注册领取接口后再调用本接口。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity). Ourpalm_Channel_Spreads("CheckGooglePromotionCode",{'gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver'");
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 本接口为:CheckGooglePromotionCode |
| gameUrl | String | google play card促销码发货url |
用于玩家在google play商店Points兑换礼包后,领取相关道具时使用的接口,需要在角色登录后才可进行调用,如果游戏已接入google预注册商品领取功能,需要先调用预注册领取接口后再调用本接口。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity). Ourpalm_Channel_Spreads("CheckGooglePointsCode","{'gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver'," +"'extendParams':'extendParams_PointsTest'}");
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 本接口为:CheckGooglePointsCode |
| gameUrl | String | google Points商品发货url |
| extendParams | String | 游戏自定义参数 |
if (id.equals("CheckGooglePointsCode")) {//兑换google points奖励回调if (arg[0].equals("0")) {Toast.makeText(MainActivity.this, "Points兑换失败", Toast.LENGTH_LONG).show();} else if (arg[0].equals("1")) {Toast.makeText(MainActivity.this, "Points兑换成功", Toast.LENGTH_LONG).show();}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 判断是那个接口返回的回调,本接口为:CheckGooglePointsCode |
| arg[0] | String | 0 兑换失败 1 兑换成功 |
解决游戏后台运行情况下,在google商店兑换google points礼包后,返回游戏收不到货的问题。
通过sdk自定义回调Ourpalm_SetSpreadsCallBack通知游戏可以调用google points领取接口,具体事例如下:
if (id.equals("GooglePointsCodeResume")) {//onResume时是否可以领取google points奖励回调if (arg[0].equals("1")) {Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("CheckGooglePointsCode",{'gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver'," +"'extendParams':'extendParams_PointsTest'}");}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 判断是那个接口返回的回调,本接口为:GooglePointsCodeResume |
| arg[0] | String | 1 需要调用领取google points接口 |
用于玩家在google play商店游戏详情页面兑换eap礼包后,领取相关道具时使用的接口,需要在角色登录后才可进行调用,如果游戏已接入google预注册商品领取功能,需要先调用预注册领取接口后再调用本接口。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity). Ourpalm_Channel_Spreads("CheckGoogleEapCode","{'gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver'," +"'extendParams':'extendParams_EapTest'}");
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 本接口为:CheckGoogleEapCode |
| gameUrl | String | google Eap商品发货url |
| extendParams | String | 游戏自定义参数 |
if (id.equals("CheckGoogleEapCode")) {//兑换google Eap奖励回调if (arg[0].equals("0")) {Toast.makeText(MainActivity.this, "Eap兑换失败", Toast.LENGTH_LONG).show();} else if (arg[0].equals("1")) {Toast.makeText(MainActivity.this, "Eap兑换成功", Toast.LENGTH_LONG).show();}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 判断是那个接口返回的回调,本接口为:CheckGoogleEapCode |
| arg[0] | String | 0 兑换失败 1 兑换成功 |
功能说明 :
接口定义 :
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("to_GooglePlay");
参数说明:
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| Value1 | 必传 | String | 接口ID |
接口实例:
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("to_GooglePlay");
功能说明 :
接口定义 :
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("showAppReview");
参数说明:
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| Value1 | 必传 | String | 接口ID |
接口实例:
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("showAppReview");
if (id.equals("showAppReview")) {//兑换google Eap奖励回调if (arg[0].equals("success")) {Toast.makeText(MainActivity.this, "评分成功", Toast.LENGTH_LONG).show();} else{Toast.makeText(MainActivity.this, "评分失败", Toast.LENGTH_LONG).show();}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 判断是那个接口返回的回调,本接口为:showAppReview |
| arg[0] | String | success 评分成功 fail/cancel 评分失败 |
注:
- google应用内评分。弹出评价界面即返回评价成功。
- 评价提交后,取消评论,亦认为已评论成功
- 每个账号只能评价一次(多次调用不会重复显示评价框)
- 当应用评价后,继续点击评价,不会显示弹窗,但是会收到回调评价成功
此接口用于发送游戏自定义日志,以及广告统计打点日志
函数原型
public void Ourpalm_SendGameInfoLog(String logID, String logKey,HashMap<String, Object> logValue)
函数参数说明
| 参数名 | 类型 | 用途 | 注解 |
|---|---|---|---|
| logID | string | 日志id | 由平台定义,游戏自定义为”1003” |
| logKey | string | 日志关键字 | 游戏自定义为”role-act” |
| logValue | HashMap | 日志内容 | json格式字符串 |
logId和LogKey对应表
| logId | Logkey | 描述 |
|---|---|---|
| 8 | role-credit | 玩家充值日志 |
| 9 | role-item-update | 玩家虚拟物品变更 |
| 10 | role-prop-update | 玩家属性变更 |
| 1001 | role-task | 任务 |
| 1002 | role-stage | 副本,场景 |
| 1003 | role-act | 自定义事件 |
| 2001 | role-interact | 自定义交互事件 |
注意事项
- 这些参数值和结构,由平台定义,研发需按平台要求的结构传。- logID和logKey是一一对应的,项目大多数都是使用1003日志。- 注意1,确保启动游戏的时候正常调用了PCSDK初始化方法后,再调用发日志接口;启动游戏时调用的PCSDK初始化方法有别于安装时调用的方法,无须设置 disable_sdk_act_log 这个参数。- 注意2,actId 为事件ID,只支持字母,数字,下划线命名,不支持中文。- 注意3,actName 为事件名称,支持中文。- 注意4,detail 为需要随本次发生事件一并记录的额外信息,可以是普通字符串,也可以是json字符串,不要包含竖线 | ,总长度不要超过 1000 个字符。
代码示例
//发送游戏日志-->登陆场景加载成功HashMap<String, Object> roleInfo = new HashMap<String, Object>();roleInfo.put("roleLevel", "0");roleInfo.put("roleVipLevel", "0");roleInfo.put("actId", "LoginSceneLoaded");roleInfo.put("actName", "登陆场景加载成功");roleInfo.put("detail", "begin");Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_SendGameInfoLog("1003", "role-act", roleInfo);
接口内日志事件key和事件logvalue 的key值需要开发人员根据广告BI部门提供的统计日志说明文档使用,并且根据掌趣数据产品组提供的统计日志说明文档每条统计的描述在相应的逻辑处调用本接口并且传了相应的事件key和logvalue。
函数原型
/*** 游戏端发送第三方的日志** @param logKey* 日志事件KEY* @param logValue* 日志事件内容 HashMap key-val格式*/public void Ourpalm_SendAnalyticsInfoLog(String logKey,HashMap<String, Object> logValue);
函数原型
| 参数名 | 类型 | 用途 | 注解 |
|---|---|---|---|
| logKey | string | 日志关键字 | 由广告BI部门定义的广告事件key |
| logValue | string | 日志内容 | json格式字符串,Hashtable序列化而来。根据具体用途自定义包含哪些字段 |
注意事项
- 这些参数值和结构,由广告BI部门定义,研发需按要求的结构传。
代码示例
更多广告打点相关示例请参阅:
第三方广告平台通用接入说明
//注册事件HashMap<String, Object> logValue = new HashMap<String, Object>();Ourpalm_Entry.getInstance(MainActivity).Ourpalm_SendAnalyticsInfoLog("registration", logValue);//充值打点日志,必须要传price和currency两个参数,注意,需要传支付下单时对应的币种和价格,另外,还可以添加一个可选参数表示当前订单是否是沙盒订单(如需使用,请提前联系平台对接人进行配置)//举例:充值0.99美元,需要事件参数HashMap<String, Object> logValue = new HashMap<String, Object>();logValue.put("price", "0.99");logValue.put("currency", "USD");logValue.put("istest", "true");//这个参数可选,传true表示是沙盒订单,传false表示正式订单,传这个参数时需要联系平台对接人在dev后开启相关配置。 Ourpalm_Entry.getInstance(NewMainActivity.mMainActivity).Ourpalm_SendAnalyticsInfoLog("purchase", logValue);
使用自定义接口Ourpalm_Channel_Spreads获取这些信息,列表如下:
| id | 含义 | 备注 |
|---|---|---|
| getAppsFlyerID | appsflyer_id | 会立即返回结果 |
| getAdjustAdid | adjust_adid | 需要处理异步回调以获得更新的值 |
| getAppInstanceId | firebase的appInstanceId | 需要处理异步回调以获得更新的值 |
| getHuaweiOAID | (华为设备的)oaid | 需要处理异步回调以获得更新的值 |
| getAdvertisingId | google advertisingId | 需要处理异步回调以获得更新的值 |
| getBaseDeviceInfo | 基础设备信息集合(BaseDeviceInfo) | 会立即返回结果 |
| getBaseAppInfo | 基础产品信息集合(BaseAppInfo) | 会立即返回结果 |
代码示例
String getAdjustAdid = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("getAdjustAdid");String getAppsFlyerID = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("getAppsFlyerID");String getAppInstanceId = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("getAppInstanceId");Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("getHuaweiOAID"); //总是通过回调方法返回结果String getAdvertisingId = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("getAdvertisingId");String getBaseDeviceInfo = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("getBaseDeviceInfo");String getBaseAppInfo = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("getBaseAppInfo");
注意:如果所获取的信息无法同步返回,则会通过回调方式异步返回。
通过注册的自定义接口回调Ourpalm_SetSpreadsCallBack返回数据,根据功能id判断是哪个查询。
if (id.equals("getAdjustAdid")) {Logs.i("info", "getAdjustAdid arg[0]="+arg[0]);} else if (id.equals("getAppsFlyerID")) {Logs.i("info", "getAppsFlyerID arg[0]="+arg[0]);} else if (id.equals("getAppInstanceId")) {Logs.i("info", "getAppInstanceId arg[0]="+arg[0]);} else if (id.equals("getHuaweiOAID")) {Logs.i("info", "getHuaweiOAID arg[0]="+arg[0]);} else if (id.equals("getAdvertisingId")) {Logs.i("info", "getAdvertisingId arg[0]="+arg[0]);} else if (id.equals("getBaseAppInfo")) {Logs.i("info", "getBaseAppInfo arg[0]="+arg[0]);} else if (id.equals("getBaseDeviceInfo")) {Logs.i("info", "getBaseDeviceInfo arg[0]="+arg[0]);}
json格式的字符串,包含信息如下表所列:
| id | 含义 | 备注 |
|---|---|---|
| platform_id | 操作系统 | 0:Android, 1: IOS, 2: PC |
| device_id | 设备ID | sdk生成的随机设备ID |
| is_emulator | 是否运行在模擬器环境 | “0”或”1”,需要特殊权限,暂不可用 |
| cpuInfo | 设备cpu参数 | RAM、CPU核数、CPU频率、CPU芯片 |
| company | 设备厂商 | oUa中的”手机品牌” |
| resolution | 像素 | 设备分辨率(宽*高) |
| androidId | deviceAndroidId | 安卓设备有,其它设备为空或者”0” |
| idfa | ios设备IDFA | ios设备独有,其他设备为空或者”0” |
| idfv | ios设备IDFV | ios设备独有,其他设备为空或者”0” |
| oaid | 华为广告标识符 | 部分安卓设备有,其他设备为空或者”0” |
| appInstanceId | firebase appInstanceId | firebase appInstanceId |
| appsflyerId | appsflyerId | |
| adjust_adid | adjust_adid | |
| advertisingId | GAID | google advertisingId,需要异步获取 |
json格式的字符串,包含信息如下表所列:
| id | 含义 | 备注 |
|---|---|---|
| app_id | 应用ID | 安卓appid和包名相同 iOS的appid为全数字的id |
分享链接内容到FB。
/*** 分享功能** @param value1* share 分享功能固定参数* @param value2* 分享连接的title* @param value3* 分享内容的介绍* @param value4* 分享链接url*/Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("share","", "", "http://chs.98kof.game-bean.com/");
| 参数 | 重要性 | 类型 | 描述 |
|---|---|---|---|
| value1 | 必须 | String | 接口id。本接口为 share |
| value2 | 必须 | String | 分享内容Title,可以为空字符串”” |
| value3 | 必须 | String | 分享内容,可以为空字符串”” |
| value4 | 必须 | String | 分享链接url |
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubif (id.equals("PhotoShare")) {// 分享功能结束if (arg[0].equals("0")) {Toast.makeText(MainActivity.this, "分享成功", Toast.LENGTH_LONG).show();} else if (arg[0].equals("1")) {Toast.makeText(MainActivity.this, "分享失败 错误", Toast.LENGTH_LONG).show();} else if (arg[0].equals("2")) {Toast.makeText(MainActivity.this, "分享失败 用户取消", Toast.LENGTH_LONG).show();}}}}
分享图片内容到FB。 使用此功能,用户设备上必须有FB客户端,不然分享失败。
/*** 分享功能** @param value1* share 分享功能固定参数* @param value2* 分享图片的存储路径,全路径*/Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("PhotoShare",imagepath);
| 参数 | 重要性 | 类型 | 描述 |
|---|---|---|---|
| value1 | 必须 | String | 接口id。本接口为 PhotoShare |
| value2 | 必须 | String | 分享图片的本地存储全路径 |
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubif (id.equals("PhotoShare")) {// 分享功能结束if (arg[0].equals("0")) {Toast.makeText(MainActivity.this, "分享成功", Toast.LENGTH_LONG).show();} else if (arg[0].equals("1")) {Toast.makeText(MainActivity.this, "分享失败 错误", Toast.LENGTH_LONG).show();} else if (arg[0].equals("2")) {Toast.makeText(MainActivity.this, "分享失败 用户取消", Toast.LENGTH_LONG).show();}}}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 接口id 判断是那个接口返回的回调,本接口为:PhotoShare |
| arg[0] | String | 0 分享成功 1 分享失败,未知错误 2 分享失败,用户取消分享 |
功能说明:
游客账号绑定账号密码
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_bindOurpalmAccount", "{\"accountName\":\"lugin09181\",\"pwd\":\"as123456\",\"confirmPwd\":\"as123456\"}");
接口回调:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_bindOurpalmAccount")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String data = dataJson.getString("bindPlatformJson");String msg = dataJson.getString("desc");String curType = dataJson.getString("bindType");if (status.equals("1")) {Toast.makeText(MainActivity.mMainActivity,curType + " bind success, res = " + data, Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.mMainActivity,curType + " bind fail, res = " + msg, Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
此接口为自定义接口,可以在自定义接口中接受回调,绑定成功时
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_bindOurpalmAccount |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.code | string | “0” |
| jsonParams.desc | string | 绑定失败时,返回绑定失败的msg |
| jsonParams.bindType | string | 绑定类型,成功时才有此字段, “account” |
| jsonParams.bindPlatformJson | string | 此绑定方式可提供的额外数据,成功时才有此字段 |
绑定成功时,bindPlatformJson对应参数值,范例如下:
{\”name\”:\”lugin0920\”}
功能说明:
修改官网账号密码
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_modifyAccountPwd", "{\"accountName\":\"lugin09181\",\"oldPwd\":\"as123456\",\"newPwd\":\"as1234567\"}");
接口回调:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_modifyAccountPwd")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String msg = dataJson.getString("desc");if (status.equals("1")) {Toast.makeText(MainActivity.this,"modifyAccountPwd success, res=" + msg, Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,"modifyAccountPwd fail, res=" + msg, Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_modifyAccountPwd |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.desc | string | 密码修改失败时,返回失败的msg |
功能说明:
当用户忘记密码时,已绑定邮箱的官网账号,可以通过此接口重置密码
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_resetAccountPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\"}");
接口回调:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_resetAccountPwd")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String msg = dataJson.getString("desc");if (status.equals("1")) {Toast.makeText(MainActivity.this,"reset account, " + " success, res=" + msg,Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,"reset account, " + " fail, res=" + msg,Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_resetAccountPwd |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.desc | string | 密码重置失败时,返回失败的msg |
功能说明:
使用官网账号进行切换
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_switchOurpalmAccount", "{\"accountName\":\"lugin09181\",\"pwd\":\"as123456\"}");
回调接口同Ourpalm_SwitchingAccount。
功能说明:
发送邮箱验证码
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_sendEmailCode", "{\"email\":\"liguangcai@ourpalm.com\",\"usage\":\"bind\"}");
usage 参数说明
| usage | 含义 |
|---|---|
| bind | 在绑定邮箱时获取邮箱验证码 |
| unbind | 在解绑邮箱时获取邮箱验证码 |
| resetAccountPwd | 在重置账号密码时获取邮箱验证码 |
| resetEmailPwd | 在重置邮箱密码时获取邮箱验证码 |
回调接口:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_sendEmailCode")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String msg = dataJson.getString("desc");if (status.equals("1")) {Toast.makeText(MainActivity.this,"sendEmailCode success, res=" + msg,Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,"sendEmailCode fail, res=" + msg,Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_sendEmailCode |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.desc | string | 邮箱验证码发送失败时,返回失败的msg |
功能说明:
用户绑定邮箱账号,调用此接口前必须先调用获取邮箱验证码接口(16.2.1)获取邮箱验证码。
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_bindEmailAccount", "{\"emailName\":\"liguangcai@ourpalm.com\",\"pwd\":\"as123456\",\"code\":\"123456\"}");
回调接口:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_bindEmailAccount")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String data = dataJson.getString("bindPlatformJson");String msg = dataJson.getString("desc");String curType = dataJson.getString("bindType");if (status.equals("1")) {Toast.makeText(MainActivity.this,curType + " bind success, res = " + data, Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,curType + " bind fail, res = " + msg, Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
此接口为自定义接口,可以在自定义接口中接受回调,绑定成功时
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_bindEmailAccount |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.code | string | “0” |
| jsonParams.desc | string | 绑定失败时,返回绑定失败的msg |
| jsonParams.bindType | string | 绑定类型,成功时才有此字段, “email” |
| jsonParams.bindPlatformJson | string | 此绑定方式可提供的额外数据,成功时才有此字段 |
绑定成功时,bindPlatformJson对应参数值,范例如下:
{\”name\”:\”liguangcai@ourpalm.com\”}
功能说明:
用户解绑邮箱,调用此接口前必须先调用获取邮箱验证码接口(16.2.1)获取邮箱验证码。
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_unBindEmailAccount", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\"}");
回调接口:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_unBindEmailAccount")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String msg = dataJson.getString("desc");if (status.equals("1")) {Toast.makeText(MainActivity.this,"unBindEmail success, res=" + msg, Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,"unBindEmail fail, res=" + msg, Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_unBindEmailAccount |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.desc | string | 邮箱解绑失败时,返回失败的msg |
功能说明:
修改邮箱密码
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_modifyEmailPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"oldPwd\":\"as123456\",\"newPwd\":\"as1234567\"}");
回调接口:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_modifyEmailPwd")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String msg = dataJson.getString("desc");if (status.equals("1")) {Toast.makeText(MainActivity.this,"modifyEmailPwd success, res=" + msg, Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,"modifyEmailPwd fail, res=" + msg, Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_modifyEmailPwd |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.desc | string | 邮箱修改密码失败时,返回失败的msg |
功能说明
用户忘记邮箱账号密码时,可通过此接口重置邮箱密码,
通过邮箱详情界面找回密码时,不需要输入邮箱验证,可直接通过已绑定的邮箱账号找回,此时参数code传空即可。在切换邮箱界面找回密码,必须先调用获取邮箱验证码接口(16.2.1)获取邮箱验证码,,此时参数code不能为空。
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_resetEmailPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\"}");
回调接口:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_resetEmailPwd")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String msg = dataJson.getString("desc");if (status.equals("1")) {Toast.makeText(MainActivity.this,"reset email, " + " success, res=" + msg,Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,"reset email, " + " fail, res=" + msg,Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_resetEmailPwd |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.desc | string | 邮箱找回密码失败时,返回失败的msg |
功能说明:
使用邮箱账号进行切换
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_switchEmailAccount", "{\"emailName\":\"liguangcai@ourpalm.com\",\"pwd\":\"as123456\"}");
回调接口同Ourpalm_SwitchingAccount。
功能说明:
绑定第三方账号,facebook, google, vk, twitter。
其中参数accountType需要传入”facook”、”google”、”vk”或”twitter”中的一个。
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_bindThirdAccount", "{\"accountType\":\"google\"}");
回调接口:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_bindThirdAccount")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String data = dataJson.getString("bindPlatformJson");String msg = dataJson.getString("desc");String curType = dataJson.getString("bindType");if (status.equals("1")) {Toast.makeText(MainActivity.this,curType + " bind success, res = " + data, Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,curType + " bind fail, res = " + msg, Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_bindThirdAccount |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.code | string | “0” |
| jsonParams.desc | string | 绑定失败时,返回绑定失败的msg |
| jsonParams.bindType | string | 绑定类型,成功时才有此字段, 可能的值:”facook”、”google”、”vk”或”twitter” |
| jsonParams.bindPlatformJson | string | 此绑定方式可提供的额外数据,成功时才有此字段 |
绑定成功时,bindPlatformJson对应参数值,范例如下:
{\"sub\":\"115322977269159722415\",\"email_verified\":\"true\",\"kid\":\"b2620d5e7f132b52afe8875cdf3776c064249d04\",\"iss\":\"https:\\\/\\\/accounts.google.com\",\"typ\":\"JWT\",\"given_name\":\"掌\",\"picture\":\"https:\\\/\\\/lh3.googleusercontent.com\\\/a\\\/ACg8ocLy2zcKmAsgnfkPrfiRaBtmmUOLEZ-rCIYINK2r_kucaian7aDN=s96-c\",\"aud\":\"318433458372-ddf34vrsqh27bin4m5h77bl5otorejq3.apps.googleusercontent.com\",\"azp\":\"318433458372-vlpj7nr5lrbqoafchirr6ta0dri086qp.apps.googleusercontent.com\",\"name\":\"掌掌\",\"exp\":\"1726826514\",\"family_name\":\"掌\",\"iat\":\"1726822914\",\"alg\":\"RS256\",\"email\":\"zqkjjszc@gmail.com\"}
功能说明:
解绑第三方账号,facebook, google, vk, twitter。
注意:只有已绑定的第三方账号才能调用此接口。
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_unBindThirdAccount", "{\"accountType\":\"google\"}");
回调接口:
// 特殊功能回调接口。Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {@Overridepublic void Ourpalm_Spreads(String id, String... arg) {// TODO Auto-generated method stubLogs.i("info", " Ourpalm_Spreads id = " + id);if(id.equals("Callback_unBindThirdAccount")){try {JSONObject dataJson = new JSONObject(arg[0]);String status = dataJson.getString("success");String msg = dataJson.getString("desc");if (status.equals("1")) {Toast.makeText(MainActivity.this,"unBind success", Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this,"unBind fail msg =" + msg , Toast.LENGTH_LONG).show();}} catch (Exception e) {}}
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 固定为:Callback_unBindThirdAccount |
| jsonParams.success | string | 成功:”1”,失败:”0” |
| jsonParams.desc | string | 第三方账号解绑失败时,返回失败的msg |
功能说明:
切换第三方账号,facebook, google, vk, twitter。
接口示例:
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_Channel_Spreads("API_switchThirdAccount", "{\"accountType\":\"google\"}");
回调接口同Ourpalm_SwitchingAccount。
| 状态码 | 说明 |
|---|---|
| -1 | 未知错误 |
| -2 | SDK联网URL错误 |
| -3 | 第三方登陆验证返回失败 |
| -4 | 支付失败,未知错误 |
| -5 | 无网络 |
| 0 | 初始化失败 |
| 10 | 登陆错误,未知错误 |
| 11 | 登陆取消 |
| 12 | 登陆数据错误,账号或密码为空 |
| 13 | 登陆验证失败 |
| 14 | 登陆验证参数错误 |
| 15 | 获取系统用户名错误 |
| 16 | 单机隐式登录失败 |
| 20 | 注册失败,未知错误 |
| 21 | 注册失败,验证错误 |
| 22 | 注册数据错误,账号或密码为空 |
| 30 | 修改密码错误 |
| 31 | 修改密码错误,用户id或者密码为null或者格式错误 |
| 32 | 修改密码错误,参数错误 |
| 33 | 找回密码错误,参数错误 |
| 40 | 绑定用户信息错误 |
| 41 | 绑定用户信息错误,验证错误 |
| 42 | 绑定用户信息错误,参数错误 |
| 43 | 接口所需参数传递为空或者格式不正确 |
| 100 | 支付相关参数错误 |
| 101 | 支付成功 |
| 102 | 支付失败 |
| 103 | 支付取消 |
| 104 | 下单成功 |
| 105 | 下单失败 |
| 106 | 解析支付协议失败 |
| 107 | 当前支付方式不可用 |
| 205 | 账号封停 |
| 300 | 官网支付webview页面报错 |
| 状态码 | 说明 |
|---|---|
| 21134 | roleId格式不正确 |
| 21137 | gameServerId格式不正确 |
| 21143 | gameServerId在平台没有启用 |
| 21146 | 请求报文头格式不正确 |
| 21147 | 手机平台ID格式不正确 |
| 21148 | 设备名称格式不正确 |
| 21149 | 设备系统版本号格式不正确 |
| 21150 | 设备分辨率格式不正确 |
| 21151 | 设备UDID格式不正确 |
| 21152 | 运营商格式不正确 |
| 21153 | 设备厂商格式不正确 |
| 21185 | 激活码不得为空 |
| 21186 | 发货失败 |
| 21187 | 激活码不存在或不可用 |
| 21188 | 激活码已过期 |
| 21189 | 激活码未领取 |
| 21190 | 激活码已使用 |
| 21191 | 该用户已兑换过激活码 |
| 21192 | 该设备已兑换过激活码 |
| 21193 | 活动暂停中 |
| 21194 | 激活码已经用完 |
| 21195 | 网络异常 |
| 21196 | 服务内部错误 |
| 21197 | 传入的激活码有错误 |
| 21198 | 传入的礼包ID有错误 |
| 21199 | 用户未登录 |
| 21200 | 兑换超过用户最大限制 |
| 21201 | 游戏产品有误 |
| 21202 | 策略关系不存在 |
| 21203 | 联运渠道或推广渠道有误 |
| 21204 | 推广渠道有误 |
| 21205 | 机型组有误 |
| 21206 | 语言有误 |
| 21207 | 逻辑服策略不存在 |
| 21208 | 逻辑服有误 |
| 21227 | 用户每天兑换次数超出上限 |
| 21228 | 用户每周兑换次数超出上限 |
| 21229 | 用户每月兑换次数超出上限 |
| 23157 | 礼包码未到生效时间 |
| 23158 | 失败 |
货币ID是没有限定位数的纯自增值,详情:货币类型详情列表
| 货币ID | 货币名 | 货币单位 |
|---|---|---|
| 1 | 人民币 | 分 |
| 2 | 美元 | 美分 |
| 3 | 日元 | 円 |
| 4 | 港币 | 分 |
| 5 | 英镑 | 便士 |
| 6 | 新加坡币 | 分 |
| 7 | 越南盾 | 盾 |
| 8 | 台币 | 元 |
| 9 | 韩元 | 分 |
| 10 | 泰铢 | 萨当 |
| 14 | 马来西亚林令吉 | 分 |
| 17 | 菲律宾币 | 仙 |
| 19 | 印尼卢比 | 卢比 |
| 21 | 柬埔寨瑞尔 | 瑞尔 |
| 22 | 加拿大元 | 分 |
| 28 | 巴西雷亚尔 | 分 |
| 29 | 智利比索 | 分 |
| 32 | 欧元 | 分 |
| 67 | 墨西哥比索 | 分 |
| 70 | 秘鲁新索尔 | 分 |
| 93 | 哥斯达黎加科朗 | 分 |
| 95 | 俄罗斯卢布 | 戈比 |
| 110 | 巴拉圭瓜尼 | 分 |
| 122 | 缅甸元 | 分 |
| 125 | 哥伦比亚比索 | 分 |