iOS国内SDK接入说明

1 接入指南

1.1 获取配置文件

接入前,需要由掌趣项目负责人完成渠道申报并在掌趣后台进行配置,从而获取到该游戏的渠道参数、掌趣配置文件。

1.2 掌趣SDK构成

掌趣 IOS SDK支持 iPhone、iPad、iPod Touch设备,要求armv7、armv7s或arm64架构,操作系统要求Mac要求Lion以上,Xcode要求7以上,iOS SDK要求7.0以上。
掌趣iOS SDK主要由以下几部分构成,如下图:


[1] Ourpalmlib掌趣封装静态库
只支持armv7、armv7s和arm64架构,固件要求iOS8.0以上
[2] Thirdilb第三方静态库.a或Framework
掌趣静态库封装调用的第三方静态库或Framework
[3] OpenSource第三方开源库
掌趣SDK所使用的第三方开源库或源文件,避免SDK与游戏产生冲突
[4] Splash掌趣SDK提供的闪屏支持
闪屏为xcode自带闪屏显示后的闪屏,最多支持3张。使用请在info.plist中设置Ourpalm_Splash字段,类型Number,数量即闪屏数量(不包括xcode自带闪屏), 分辨率以及命名方式请参照demo。若需改变闪屏显示时间请在info.plist中设置Ourpalm_SplashInterval字段,类型string,建议设置范围2-5秒,闪屏默认间隔2秒。
若需要添加视频闪屏请在info.plist中设置Ourpalm_SplashVideo字段,类型bool,YES为显示视频闪屏。掌趣资源文件ourpalm_res.bundle中有一个默认视频logoMovie.mp4。若需替换请自行将其替换或使用打包工具,文件名不可修改、格式必须为mp4!视频闪屏的出现的时间点永远在xcode默认闪屏之后,并且支持视频闪屏+图片闪屏的模式。图片闪屏在视频闪屏结束后自动插播!

1.3 搭建开发环境

1.3.1 工程配置

Xcode->Project->Build Settings工程配置
[1] 添加库的连接参数
请在工程文件Build Settings处,找到Other Linker Flags,并添加以下内容


[2] 请将Apple LLVM 5.0 – Language – C++中C++ Standard Library项修改为以下内容


注意:
(1)Compiler Default的默认值在xcode5中为libstdc++,但在xcode6中的默认值为libc++。
(2)如果游戏需要支持C++11的新特性,C++ Standard Library需要设置为libc++,如下图,并且需要使用llvm文件中的静态库


[3] 其他编译设置

1.3.2 Framework添加及配置(请特别注意!)

请将OurpalmSDK文件夹拖到你的工程Groups&Files面板中,截图如下
1.3.2_1
添加Framework后,请注意Optional的库,如下图:
1.3.2_2

1.3.3 设置URL Schemes(请特别注意!)

需添加2个URL Schemes 如下图:
1.为游戏的bundleId
2.为jdpauth2d143b3351cbdf8bb8a12353e0e6dc37
1.3.3_1
具体方法:选中工程中的Target,选中Info标签页,找到底下的URL Types,展开,点击加号,创建URL Scheme
1.3.3_2

1.3.4 xcode必要配置(请特别注意!)

[1] 支持HTTP设置
ios9 下苹果要求 App 内访问网络必须使用 HTTPS ,现阶段不能马上改成 https。
请在 Info.plist 中添加 NSAppTransportSecurity 类型 Dictionary.在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 类型 Boolean,值设为 YES。如下图


[2] 白名单设置
单独接入appstore包时不能添加alipay的白名单,有可能被拒审!
请保留weixin白名单配置)*

  1. <key>LSApplicationQueriesSchemes</key>
  2. <array>
  3. <string>weixin</string>
  4. </array>

[3] 相册、日历、拍照权限设置
使用Xcode8打包时,中访问相册和日历功能需要设置权限使用描述,如下图
相册、日历权限添加

  1. <key>NSCalendarsUsageDescription</key>
  2. <string>需要使用日历</string>
  3. <key>NSPhotoLibraryUsageDescription</key>
  4. <string>需要使用相册</string>
  5. <key>NSCameraUsageDescription</key>
  6. <string>需要使用相机</string>

[4] 崩溃、卡顿监控
若游戏不使用该功能,请将OPCrashMonitor.a从工程中去除。
[5] 去除系统冗余日志输出(非必须)
使用Xcode8调试时请做以下设置,防止无用的系统日志在控制台输出,如下图


[6] entitlements设置
由于需要在keychain中记录设备唯一标识,需要在Capabilities中设置keychain sharing的权限,具体如下图:
entitlements设置

1.3.4 dSYM符号化文件配置(请特别注意!)

[1] dSYM文件
在XCODE编译项目之后,会在app旁看见一个同名的dSYM文件。dSYM文件是iOS编译后保存16进制函数地址映射信息的文件,每次应用程序build后,都会生成对应的xxx.app, xxx.app.dSYM文件。通过此文件可以将16进制地址转换成可读的函数地址,精确定位crash位置,如下图所示:



[2] 工程配置

1.3.5 掌趣info.plist参数配置表(请特别注意!)

参数名称 必要性 类型 默认值 功能
Ourpalm_InitOrientation 必须 String UIInterface
Orientation
Landscape
Right
游戏初始化方向
竖屏:
UIInterfaceOrientationPortrait
右横屏:
UIInterfaceOrientationLandscapeRight
左横屏:
UIInterfaceOrientationLandscapeLeft
Ourpalm_GameResVersion 必须 String 1.0 游戏资源版本号
Ourpalm_Debugmodel 必须 Boolean YES 出包前请将其设置成NO。
主要用于查看控制台日志。
YES:调试模式
NO:出包模式
Ourpalm_GameOnline 必须 Boolean YES 游戏类型
YES: 网游
NO:单机
Ourpalm_AutoOrientation 非必须 Boolean YES 设置SDK界面是否支持旋转
YES:支持
NO:关闭
Ourpalm_Splash 非必须 Number 0 SDK闪频数量
(不包括xcode自带闪屏)
Ourpalm_SplashVideo 非必须 Boolean NO 掌趣提供的视频闪屏,
xcode自带闪屏结束后出现,
若有添加Ourpalm_Splash,
图片闪频在视频结束后出现。
该视频保存在ourpalm_res.bundle中,
开发者可自行替换logoMovie.mp4,
格式命名不可修改。
Ourpalm_SplashInterval 非必须 String 2 掌趣每张图片闪屏显示时长
(1.0-5.0秒之间)
Ourpalm_FSInterval 非必须 String 0 Xcode自带闪屏延长显示时长
(1.0-5.0秒之间)
Ourpalm_FVLocation 非必须 Number 1 首次安装悬浮球显示的位置。
1:左上
2:左中
3:左下
4:右上
5:右中
6:右下
Ourpalm_Push 非必须 Boolean YES 掌趣远程推送开关
YES:允许推送
NO:关闭推送
Ourpalm_ShowInitLoading 非必须 Boolean NO 是否显示登录前的Loading框
YES:显示
NO:关闭
Ourpalm_BlockInterval 非必须 String 0 游戏卡顿监测间隔(>=5.0秒)、
如果主线程阻塞超过
该时长会发送1条卡顿日志,
去除该字段或设置为0即取消监控
Ourpalm_DefferingSG 非必须 String UIRectEdgeAll 阻塞对应区域的第一次系统手势
UIRectEdgeAll,
UIRectEdgeNone,
UIRectEdgeTop,
UIRectEdgeLeft,
UIRectEdgeBottom,
UIRectEdgeRight
Ourpalm_HI_AutoHidden 非必须 Boolean NO 是否自动隐藏
iPhoneX的HomeIndicator
YES:隐藏
NO:显示
Ourpalm_FVLocationX 非必须 Number 0 自定义设置
首次安装app时悬浮球坐标
坐标X
Ourpalm_FVLocationY 非必须 Number 0 自定义设置
首次安装app时悬浮球坐标
坐标Y
  1. <key>Ourpalm_AutoOrientation</key>
  2. <true/>
  3. <key>Ourpalm_BlockInterval</key>
  4. <string>10</string>
  5. <key>Ourpalm_Debugmodel</key>
  6. <true/>
  7. <key>Ourpalm_FSInterval</key>
  8. <string>0</string>
  9. <key>Ourpalm_FVLocation</key>
  10. <integer>2</integer>
  11. <key>Ourpalm_GameOnline</key>
  12. <true/>
  13. <key>Ourpalm_GameResVersion</key>
  14. <string>1.0</string>
  15. <key>Ourpalm_InitOrientation</key>
  16. <string>UIInterfaceOrientationLandscapeRight</string>
  17. <key>Ourpalm_Push</key>
  18. <true/>
  19. <key>Ourpalm_ShowInitLoading</key>
  20. <false/>
  21. <key>Ourpalm_Splash</key>
  22. <integer>3</integer>
  23. <key>Ourpalm_SplashInterval</key>
  24. <string>1.5</string>
  25. <key>Ourpalm_SplashVideo</key>
  26. <true/>
  27. <key>Ourpalm_DefferingSG</key>
  28. <string>UIRectEdgeAll</string>
  29. <key>Ourpalm_HI_AutoHidden</key>
  30. <false/>

1.4 接入准备

服务端配置:请参考 通用接入文档—> 《SDK服务端接入说明文档》

2 初始化

2.1 启动接口

功能说明
应用启动时,初始化SDK,并添加奔溃、阻塞监控
接口定义

  1. bool ApplicationDidFinishLaunchingWithOptions(void *application,void *launchOptions);

接口示例

  1. - (BOOL)application:(UIApplication *)application
  2. didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  3. {
  4. //注意这里不可添加其他代码
  5. OPGameSDK::GetInstance().ApplicationDidFinishLaunchingWithOptions(application, launchOptions);
  6. //…
  7. }

2.2 初始化接口

功能说明
1、初始化第三方SDK,同时获取SDK所需要的初始化数据
2、检查版本更新,初始化内部封装了第三方的更新接口
接口定义

  1. void Init(void* controller,OPInitParam opInfo);

注意:
1.初始化接口在不同游戏引擎添加的位置不同,具体参看代码示例
2.游戏本身的初始化最好在SDK的初始化结束并成功后开始,因为部分渠道的SDK有自动展示LOGO的功能,如果游戏的初始化先于SDK的初始化或两者并行可能会造成渠道的LOGO展示部出来或显示时间很短的BUG
3.由于SDK已集成收集奔溃日志的功能,如果游戏使用的是U3D引擎,需要将UnityAppController.mm中的部分代码进行注释,如下图:

参数说明

参数名称 重要性 类型 说明
controller 必填 UIViewController* 游戏rootViewcontroller

接口示例

  1. //初始化回调函数
  2. void initCallBack(bool result,constchar* jsonStr)
  3. {
  4. //返回初始化结果
  5. }

(1)对于coco2d-x引擎:
初始化接口必须放在cocos2d::CCApplication::sharedApplication()->run();之后,且需要添加代码self.window.rootViewController = viewController;

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  2. {
  3. //。。。
  4. self.window.rootViewController = viewController;
  5. [windowmakeKeyAndVisible];
  6. cout<<"OPGameSDK LOG:游戏开始初始化!"<<endl;
  7. cocos2d::CCApplication::sharedApplication()→run();
  8. cout<<"OPGameSDK LOG:OurplamSDK开始初始化!"<<endl;
  9. OPSDK::GetInstance().init(self.viewController);
  10. }

(2)对于unity3d引擎:
初始化接口必须放在OnUnityReady();之后。

  1. - (void)startUnity:(UIApplication*)application
  2. {
  3. //。。。。。。
  4. OnUnityReady();
  5. //掌趣SDK初始化
  6. cout<<"OPGameSDK LOG:OurplamSDK开始初始化!"<<endl;
  7. OPSDK::GetInstance().init(self.viewController);
  8. }
  9. void OPSDK::init(void* rootViewController)
  10. {
  11. // 初始化回调设置
  12. OPGameSDK::GetInstance().InitCallBack(initCallBack);
  13. // 登录注册回调设置
  14. OPGameSDK::GetInstance().RegisterLoginCallBack(loginCallBack);
  15. // 登出回调设置
  16. OPGameSDK::GetInstance().RegisterLogoutCallBack(logoutCallBack);
  17. //设置购买回调
  18. OPGameSDK::GetInstance().SetListener(this);
  19. //初始化接口
  20. OPGameSDK::GetInstance().Init(self.viewController);
  21. }

2.3 获取SDK可用接口信息

功能说明
获取SDK接口是否可用
接口示例

  1. OPGameSDK::GetInstance().GetEnableInterface();

返回数据如下,JSON格式
{
“SwitchAccount” : 1,
“Logout” : 1,
“ShowPausePage” : 0,
“EnterAppCenter” : 0,
“ShowToolBar” : 1,
“HideToolBar” : 1,
“UserFeedback” : 1,
“RegisterLogin” : 1,
“EnterUserSetting” : 0,
“EnterAppBBS” : 0,
“IsLogin” : 1,
“EnterPlatform” : 1
}
1: 表示接口可用
0: 表示接口不可用

返回数据说明:
切换账号接口 可用
注销账号接口 可用
暂停页接口 不可用
游戏大厅接口 不可用
显示悬浮球接口 可用
关闭悬浮球接口 可用
客服反馈接口 可用
注册登录接口 可用
用户设置接口 不可用
进入论坛接口 不可用
登录状态接口 可用
用户中心接口 可用

2.4 获取渠道信息接口

功能说明
获取当前SDK渠道信息
接口定义

  1. const char* GetChannelInfo();

接口示例

  1. OPGameSDK::GetInstance().GetChannelInfo();

返回数据如下,JSON格式
{“channelId”:”3101430031014300”,”channelName”:”appstore”,”deviceGroupId”:”0002”,”localeId”:”01”,”serviceId”:”1000053831014300000”}

说明:
serviceId 业务ID
channelId 渠道ID
deviceGroupId 机型组ID
localeId 语言ID

为了方便游戏接入,提供以下接口获取:
(1)获取业务ID
OPGameSDK::GetInstance().GetServiceId ();

(2)获取渠道ID
OPGameSDK::GetInstance().GetChannelId();

(3)获取渠道名称
OPGameSDK::GetInstance().GetChannelName();

(4)获取机型组ID
OPGameSDK::GetInstance().GetDeviceGroupId();

(5)获取语言ID
OPGameSDK::GetInstance().GetLocaleId();

2.5 设置openURL

功能说明
在调用第三方app进行支付时,设置该接口,在支付完成后回调游戏。

接口定义

  1. bool HandleOpenURL(void* url);
  2. void HandleOpenURL(void* url, void* application);
  3. bool HandleOpenURL(void* application,void* url,void* sourceApplication,void* annotation);

接口示例 (以下三个方法必须都添加)

  1. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
  2. {
  3. if (OPGameSDK::GetInstance().HandleOpenURL(url)) {
  4. returnYES;
  5. }
  6. returnNO;
  7. }
  8. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  9. sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
  10. {
  11. if(OPGameSDK::GetInstance().HandleOpenURL(application,url,sourceApplication,annotation)) {
  12. returnYES;
  13. }
  14. returnNO;
  15. }
  16. - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
  17. {
  18. if(OPGameSDK::GetInstance().HandleOpenURL(app, url,
  19. [options valueForKey:@"UIApplicationOpenURLOptionsSourceApplicationKey"],
  20. [options valueForKey:@"UIApplicationOpenURLOptionsAnnotationKey"])) {
  21. return YES;
  22. }
  23. return NO;
  24. }

2.6 屏幕旋转设置

功能说明
通过从Info.plist文件中获取的Ourpalm_AutoOrientation参数来设置游戏是否支持自动旋转。但还需要在appDelegate.mm中设置以下方法
接口定义

  1. unsigned int ApplicationSupportedInterfaceOrientationsForWindow(void *application,void *window);

接口示例

  1. - (NSUInteger)application:(UIApplication *)application
  2. supportedInterfaceOrientationsForWindow:(UIWindow *)window
  3. {
  4. if (OPGameSDK::GetInstance().ApplicationSupportedInterfaceOrientationsForWindow()) {
  5. returnOPGameSDK::GetInstance().
  6. ApplicationSupportedInterfaceOrientationsForWindow(application, window);
  7. }
  8. returnUIInterfaceOrientationMaskAll;
  9. }

2.7 页面旋转接口

功能说明
用于控制界面旋转,请添加至rootViewController中
接口示例

  1. Objective-C
  2. - (BOOL)shouldAutorotate
  3. {
  4. return OPGameSDK::GetInstance().ShouldAutoRotate();
  5. }
  6. Unity3D
  7. BOOL ShouldAutorotate_DefaultImpl(id self_, SEL _cmd)
  8. {
  9. return OPGameSDK::GetInstance().ShouldAutoRotate();
  10. }

2.8 进入前台接口

功能说明
在游戏进入前台时候调用,暂停页已封装入此接口,请添加至AppDelegate.mm中,U3D游戏为AppController.mm中
接口示例

  1. - (void)applicationWillEnterForeground:(UIApplication*)application
  2. {
  3. OPGameSDK::GetInstance().ApplicationWillEnterForeground(application);
  4. }

3 登录功能

3.1 登录流程


1.手机游戏客户端会调用掌趣sdk进行sdk初始化操作
2.掌趣sdk向掌趣用户中心服务器发起登录/注册的请求
3.掌趣用户中心服务器向掌趣sdk返回token、用户信息等等
4.掌趣sdk向返回游戏客户单登录结果和用户信息
5.游戏客户端上传用户信息到游戏服务器
6.服务器根据token向掌趣用户中心服务器获取用户信息
7.掌趣用户中心服务器向游戏服务器返回用户信息
8.游戏服务器向游戏客户端返回登录结果

3.2 登录接口

功能说明
登录掌趣用户中心。游戏客户端调用登录接口(RegisterLogin)前,需要通过设置登录回调接口(RegisterLoginCallBack)将回调函数指针传给SDK,登录成功后,掌趣SDK会通过回调函数通知游戏客户端。

接口定义

  1. //设置登录回调接口
  2. void RegisterLoginCallBack(void (* pf)(bool result,constchar* jsonStr));
  3. //登录接口
  4. void RegisterLogin(OPUserType sdkType=kNoneType);

参数说明

参数名称 重要性 类型 说明
OPUserType 必填 enum 掌趣官网登录类型

接口示例

  1. //回调函数
  2. void loginCallBack(bool result,constchar* jsonStr)
  3. {
  4. //返回登录结果
  5. }
  6. //设置登录回调接口
  7. OPGameSDK::GetInstance().RegisterLoginCallBack(loginCallBack);
  8. //登录接口
  9. OPGameSDK::GetInstance().RegisterLogin();

其中对应的OPUserType类型
kRegister=1, //注册
kNormalLogin, //常规登陆
kPhoneLogin, //手机登陆
kEmailLogin, //邮箱登陆
kQuickLogin, //快速登陆

返回的JSON数据格式说明
登录成功时 {“userId”:”掌趣平台分配的用户唯一id,区分大小写”,
“returnJson”:{第三方SDK平台返回的数据,一般情况下游戏无需关心},
“tokenId”:”掌趣分配的tokenId”,
“currentUserType”:”当前用户类型 speedy=快登用户、common=普通用户名密码用户、phone=手机号注册用户、thirdHidden=第三方隐性用户”,
“userName”:”掌趣平台中的用户名”}

登录失败时 {“desc”:”失败描述”,
“reset”:”状态码”,”status”:”1”}

实名相关:
“status”: “1” 认证中, “2”认证成功, “-1” 认证失败
“isAdult”: “0” 未成年, “1” 成年

注意:

  1. 返回失败时,SDK会弹出提示框!对于请求超时(状态码为101),不会弹出提示框,游戏可自动重新连接或自己添加提示框。
  2. 用户区分大小写,相同字母和数字、大小写不同的用户ID代表的是两个不同的用户账号。因此,游戏在使用和存储掌趣用户ID时,务必要严格区分大小写,以免造成游戏内账号和角色的混乱等问题。
  3. 如果游戏有自己的用户ID,必须和掌趣用户中心的用户ID一一对应,不得出现一对多或者多对一的情况。也不得根据其他条件,组合生成新的用户ID,否则将会出现账号丢失的情况。

3.3 PC二维码扫码登录

功能说明
用于支持PC端的游戏,使用手机进行扫码登录,该接口需要在账号登录成功后调用。

接口定义

  1. void CodeScanner();

接口示例

  1. OPGameSDK::GetInstance().CodeScanner();

3.4 设置角色信息

功能说明
当游戏角色注册(登录)成功时设置游戏角色注册(登录)信息。

注:
1、游戏角色注册成功后,调用该接口设置角色注册信息。
2、游戏角色登录成功后,调用该接口设置角色登录信息,否则无法计费。
3、此类型是用于兼容第三方SDK中,角色升级的一种类型。

接口定义

  1. void SetGameLoginInfo(OPGameInfo opGameInfo,OPGameType opGameType);

参数说明

参数名称 重要性 类型 说明
opGameInfo 必须 OPGameInfo 设置游戏账号信息
opGameType 必须 OPGameType 用户标识游戏角色注册登录状态注册:kGameRegister 登录:kGameLogin 角色升级:kGameRoleUpgrade

OPParam参数说明

参数名称 重要性 类型 说明
mGame_RoleName 必须 std::string 游戏角色名称(不支持富文本)
mGame_RoleId 必须 std::string 游戏角色 id
mGame_ServerId 必须 std::string 游戏服务器id
mGame_ServerName 必须 std::string 游戏服务器名称
mGame_RoleLevel 非必须 std::string 游戏角色等级
mGame_RoleVipLevel 非必须 std::string 游戏角色vip等级

接口示例

  1. OPGameInfogameInfo;
  2. gameInfo.mGame_RoleId = "123456"; //游戏角色id
  3. gameInfo.mGame_RoleName = "Jack"; //游戏角色名称
  4. gameInfo.mGame_ServerId = "123"; //游戏服务器id
  5. gameInfo.mGame_ServerName = "test"; //游戏服务器名称
  6. gameInfo.mGame_RoleLevel = "1"; //游戏角色等级
  7. gameInfo.mGame_RoleVipLevel = "1"; //游戏角色vip等级
  8. //游戏角色注册成功时调用
  9. OPGameSDK::GetInstance().SetGameLoginInfo(gameInfo,kGameRegister);
  10. //游戏角色登录成功时调用
  11. OPGameSDK::GetInstance().SetGameLoginInfo(gameInfo,kGameLogin);

3.5 注销接口

功能说明
注销当前登陆账号。游戏客户端调用注销接口(LogOut)前,需要通过设置注销回调接口(RegisterLogoutCallBack)将回调函数指针传给SDK,注销成功后,掌趣SDK会通过回调函数通知游戏客户端。

接口定义

  1. void LogOut();

接口示例

  1. //回调函数
  2. void logoutCallBack(bool result,constchar* jsonStr)
  3. {
  4. //返回的JSON数据格式说明
  5. 调用登出接口,登出成功时
  6. {"Type":"Logout"} //如果jsonStr == NULL,默认为调用登出接口,登出成功
  7. 调用切换账号,登出成功时
  8. {"Type":"SwitchAccount"}
  9. }
  10. //设置注销回调接口
  11. OPGameSDK::GetInstance().RegisterLoginCallBack (logoutCallBack);
  12. //注销接口
  13. OPGameSDK::GetInstance().LogOut();

3.6 切换账号

功能说明
注销当前登录账号,切换成功后会调用注销回调函数通知游戏客户端。

接口定义

  1. void SwitchAccount();

接口示例

  1. //回调函数
  2. void logoutCallBack(bool result,constchar* jsonStr)
  3. {
  4. //返回的JSON数据格式说明
  5. 调用登出接口,登出成功时
  6. {"Type":"Logout"} //如果jsonStr == NULL,默认为调用登出接口,登出成功
  7. 调用切换账号,登出成功时
  8. {"Type":"SwitchAccount"}
  9. }
  10. //设置注销回调接口
  11. OPGameSDK::GetInstance().RegisterLoginCallBack (logoutCallBack);
  12. //切换账号接口
  13. OPGameSDK::GetInstance().SwitchAccount();

4 支付功能

4.1 支付流程


1.掌趣sdk向掌趣计费服务器发起支付请求
2.掌趣计费服务器生成订单号,并向sdk返回支付结果
3.掌趣计费服务器通知游戏服务器发货
4.游戏服务器发送虚拟物品至玩家手机游戏客户端
5.游戏服务器向计费服务器返回发货结果

4.2 支付接口

功能说明
游戏客户端通过调用计费接口,实现游戏中的道具购买。游戏客户端调用计费接口(Purchase)前,需要继承PurchaseListener,通过设置接口(SetListener)将对象指针传给SDK,计费成功后,掌趣SDK会通过OnPurchaseResult通知游戏客户端。
接口定义

  1. void SetListener(PurchaseListener* listener);
  2. //计费接口
  3. void Purchase(OPPurchaseParam params);

参数说明

参数名称 重要性 类型 说明
mPrice 必填 std::string 商品价格,单位详见3.4货币类型及对应ID
mCurrencyType 必填 std::string 货币类型,详见3.4货币类型及对应ID
mPropName 必填 std::string 商品名称,不含数字
mPropId 必填 std::string 游戏自定义的商品ID,必传。
mPropNum 必填 std::string 商品数量,只能是数字
mPropDescribe 非必填 std::string 商品描述
mDeleverUrl 必填 std::string 发货地址
mExtendParams 非必填 std::string 游戏自定义扩展参数
mGameRoleLevel 非必填 std::string 游戏角色等级
mGameRoleVipLeve 非必填 std::string 游戏角色VIP等级

接口示例

  1. class OPTest : public PurchaseListener
  2. { //通知计费结果
  3. void OnPurchaseResult(bool result, constchar* goodid);
  4. }
  5. void OPTest::OPPurchase
  6. {
  7. OPPurchaseParamparams;
  8. params.mPrice = "100"; //商品价格
  9. params.mCurrencyType = "1"; //货币类型,人民币为1
  10. params.mPropName = "宝石"; //商品名称,不含数字
  11. params.mPropId = "4261299"; //游戏自定义商品id
  12. params.mPropNum = "100"; //商品数量,只能是数字
  13. params.mPropDescribe = ""; //商品描述
  14. params.mDeleverUrl = ""; //发货地址(必填)
  15. params.mExtendParams = ""; //自定义参数
  16. params.mGameRoleLevel = ""; //游戏角色等级(可选)
  17. params.mGameRoleVipLevel = ""; //游戏VIP等级(可选)
  18. OPGameSDK::GetInstance().SetListener(this);
  19. OPGameSDK::GetInstance().Purchase(params); //购买接口
  20. }

5 礼包码兑换功能

功能说明
兑换礼包码
接口定义

  1. void ExchangeGameCode(const char *gamecode,const char *deleverUrl,const char *extendParams);

参数说明

参数名称 重要性 类型 说明
gamecode 必填 const char * 礼包码
deleverUrl 必填 const char * 礼包码发货地址
extendParams 非必填 const char * 游戏自定义参数

接口示例

  1. void OPSDK::OnGamecodeResult(bool result, const char* jsonStr)
  2. {
  3. // 返回礼包码兑换结果
  4. }
  5. void OPSDK:: ExchangeGameCode()
  6. {
  7. const char* gamecode = “”;
  8. const char* deleverUrl = http://wwww”;
  9. const char* extendParams = “”;
  10. OPGameSDK::GetInstance().ExchangeGameCode(gamecode,deleverUrl,extendParams);
  11. }

6 客服功能

功能说明
在登录游戏后,调用此接口打开用户反馈界面
接口示例

  1. OPGameSDK::GetInstance().UserFeedback();

7 推送功能(使用推送必须添加)

7.1 APNS

功能说明
掌趣APNS推送所必须添加的接口,请在appdelegate.mm中添加以下方法
接口示例

  1. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
  2. {
  3. OPGameSDK::GetInstance().DidRegisterForRemoteNotificationsWithDeviceToken(application, deviceToken);
  4. }
  5. - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
  6. {
  7. OPGameSDK::GetInstance().DidFailToRegisterForRemoteNotificationsWithError(application, error);
  8. }
  9. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
  10. {
  11. OPGameSDK::GetInstance().DidReceiveRemoteNotification(application, userInfo);
  12. }

注意事项:
使用Xcode8以上IDE出包,需要将Push Notifications的权限打开,否则无法过审appstore.

7.2 获取推送唯一标识(服务器接口推送必接)

功能说明
获取掌趣服务器推送所需的推送唯一标识,详情请参考服务器推送文档接口示例

  1. OPGameSDK::GetInstance().GetPushIdentity();

7.3 本地推送

功能说明
此接口主要用于游戏定时通知用户相关活动,具体推送规则如下:
1.调用一次接口创建一条推送
2.所有本地推送会在下次重启游戏时清除
3.推送时间以客户端本机时间为准
4.创建相同的推送会触发相应的次数
参数说明

参数名称 重要性 类型 说明
intervalType 非必填 NSString * 推送间隔(日、周、月)默认为每日
date 必填 NSString * 推送日期,例: 20180701
hour 必填 NSString * 推送小时(24小时制),例: 18
min 必填 NSString * 推送分钟,例: 59
content 必填 NSString * 推送内容
title 非必填 NSString * 推送标题(iOS8以上系统才显示)
  1. NSMutableDictionary *notify = [[[NSMutableDictionary alloc] init] autorelease];
  2. // 每日 day 每周 week 每月 month
  3. [notify setObject:@"day" forKey:@"intervalType"];
  4. [notify setObject:@"20170703" forKey:@"date"];
  5. [notify setObject:@"15" forKey:@"hour"];
  6. [notify setObject:@"44" forKey:@"min"];
  7. [notify setObject:@"我是内容" forKey:@"content"];
  8. [notify setObject:@"我是标题" forKey:@"title"];
  9. OPGameSDK::GetInstance().CreatNewLocalNotification(notify);

8 其他功能

8.1 ServiceCode接入流程

功能说明
获取ServiceCode用于服务端日志统计
1.将OPGameKit.framework添加至工程中
2.在调用SDK初始化接口后调用以下方法即可,详情可参见demo
接口示例

  1. const char* gameResVersion = "1.0"; //游戏资源版本号
  2. OPGameKit::GetInstance().GetServiceCode(gameResVersion);

8.2 悬浮球接口

功能说明
显示和关闭悬浮球。根据接口GetEnableInterface()来判断当前渠道是否支持该接口
接口示例

  1. OPGameSDK::GetInstance().ShowToolBar(OPToolBarAtTopLeft);
  2. OPGameSDK::GetInstance().HideToolBar();

8.3 进入用户中心接口

功能说明
进入用户中心界面。根据接口GetEnableInterface()来判断当前渠道是否支持该接口。
接口示例

  1. OPGameSDK::GetInstance().EnterPlatform();

8.4 重新获取sessionId接口

功能说明
调用该接口重新获取sessionId,主要应用于支持长时间后台挂起后返回游戏不需要重新登录的游戏能够正常使用需要sessionId进行的各种业务。

  1. 请先设置监听接口
  2. // 设置刷新TokenId回调
  3. OPGameSDK::GetInstance().RefreshTokenIdCallBack(refreshTokenIdCallBack);
  4. 在需要重新获取TokenId的时候调用
  5. OPGameSDK::GetInstance(). RefreshTokenId();
  6. 最后在回调中拿到最新的TokenId
  7. void refreshTokenIdCallBack(bool result, const char* jsonStr)
  8. {
  9. if (result) {
  10. cout<<"refreshSessionIdCallBack:已获取最新SessionId"<<endl;
  11. cout<<jsonStr<<endl;
  12. } else {
  13. cout<<"刷新TokenId失败"<<endl;
  14. }
  15. }

8.5 打开带导航条的webview

功能说明
调用native的webview显示页面,带有刷新、前进、后退、关闭的功能

  1. 调用时传入URL即可
  2. OPGameSDK::GetInstance().OpenWebviewWithNavbar(url);

8.6 游戏内手机号收集功能

8.6.1 检查当前账号是否已经绑定手机号

功能说明
判断当前玩家是否绑定过手机号
参数说明

参数名称 重要性 类型 说明
pfunc 必填 block 回调函数
  1. OPGameSDK::GetInstance().QueryPhoneCellectStatus(GetQueryPhoneCollectStatusCallBack);
  2. void GetQueryPhoneCollectStatusCallBack(const char* returnJson)
  3. {
  4. NSLog(@"GetQueryPhoneCollectStatusCallBack=%@", [NSString stringWithUTF8String:returnJson]);
  5. }
  6. 查询返回数据:GetQueryPhoneCollectStatusCallBack == {“data”:{“phoneNum”:”1581124XXXX”,”isCollected”:”1”},”errorCode”:”01020001”,”errorDesc”:”成功”,”status”:”1”}
  7. 注意:游戏只需要判断isCollectedisCollected=1代表绑定过,isCollected=其他数值代表未绑定过

8.6.2 发送验证码

功能说明
发送验证码到指定手机
参数说明

参数名称 重要性 类型 说明
phoneNum 必填 NSString * 当前手机号
pfunc 必填 block 回调函数
  1. OPGameSDK::GetInstance().GetVerifyCode(@"15101154324", GetVerifyCodeCallBack);
  2. void GetVerifyCodeCallBack(const char* returnJson)
  3. {
  4. NSLog(@"GetVerifyCodeCallBack=%@", [NSString stringWithUTF8String:returnJson]);
  5. }
  6. 查询返回数据:GetVerifyCodeCallBack == {“data”:{},”errorCode”:”01010025”,”errorDesc”:”发送未绑定手机验证码成功”,”status”:”1”}
  7. 注意:游戏只需要判断statusstatus=1代表发送成功,status=其他数值代表发送失败

8.6.3 收集手机号

功能说明
收集当前玩家的手机号
参数说明

参数名称 重要性 类型 说明
phoneNum 必填 NSString * 当前手机号
verifyCode 必填 NSString * 当前手机收到的验证码
pfunc 必填 block 回调函数
  1. OPGameSDK::GetInstance().GetPhoneNumber(@"15101154324", @"123123", GetPhoneNumberCallBack);
  2. void GetPhoneNumberCallBack(const char* returnJson)
  3. {
  4. NSLog(@"GetPhoneNumberCallBack=%@", [NSString stringWithUTF8String:returnJson]);
  5. }
  6. 查询返回数据:GetPhoneNumberCallBack == {“data”:{},”errorCode”:”01020001”,”errorDesc”:”成功”,”status”:”1”}
  7. 注意:游戏只需要判断statusstatus=1收集成功,status=其他数值代表收集失败

9 附录

9.1 客户端错误码

状态码 说明
101 连接超时
102 网络异常,请检查网络
103 数据异常
104 SDK初始化参数错误
105 SDK语言配置文件错误
106 Ourpalm.cfg配置文件错误
107 SDK未初始化成功
108 SDK未设置登录回调
109 未设置服务器id
110 未设置价格
111 未设置货币类型
112 未设置商品名称
113 未设置商品id
114 未设置虚拟货币单位
115 未设置虚拟货币数量
116 未设置发货地址
117 未设虚拟货币单位
118 未设商品数量
119 用户取消支付
120 支付失败
121 支付页面加载失败
200 支付成功
201 下单成功

9.2 用户中心错误码

用户中心错误码 信息
01010001 成功
01010002 次数已经达到上限,请12小时后再发送
01010003 该用户没有绑定手机
01010004 原密码不正确
01010005 没有找到该用户信息
01010006 令牌验证错误
01010007 验证码不正确
01010008 验证码超时
01010009 该用户已经绑定手机
01010010 用户昵称不存在
01010011 昵称已存在,请重新输入
01010012 该账号已存在
01010013 Email不存在,请重新输入Email
01010014 发送验证码失败
01010014 繁体-发送验证码失败
01010015 失败
01010016 邮箱验证失败
01010017 邮箱验证成功
01010018 密码修改失败
01010019 密码修改成功
01010020 昵称修改失败
01010021 昵称修改成功
01010022 手机验证码发送失败
01010023 手机验证码发送成功
01010024 发送未绑定手机验证码失败
01010025 发送未绑定手机验证码成功
01010026 用户绑定失败
01010027 用户绑定成功
01010028 手机绑定失败
01010029 手机绑定成功
01010030 邮箱绑定失败
01010031 邮箱绑定成功
01010032 手机验证码验证失败
01010033 手机验证码验证成功
01010034 重置密码失败
01010035 重置密码成功
01010036 获取用户信息失败
01010037 获取用户信息成功
01010038 该用户暂未绑定手机
01010039 该手机号已被绑定,请更换手机号
01010040 用户名不能是手机号
01010041 用户名不能是邮箱
01010043 邮箱绑定失败
01010044 密码修改失败,新密码与原密码相同
01010045 用户密码为空
01010046 登录密码不正确
01010047 手机解绑失败
01010048 第三方用户已绑定
01010049 账号为6-18位,数字、字母、”_”
01010050 密码为6-14位,数字、字母组合
01010051 该账号不存在
01010052 昵称不合法
01010053 接口参数不正确,请确认
01010054 输入的身份证号码格式有误
01010055 当前用户已做过验证
01010056 真实姓名格式有误
01010057 角色信息参数有误
01010058 参数不全或不完整
01010059 用户名未作更改
01010060 未获取到用户信息
01010061 游戏服Id不得为空
01010062 用户Id不能为空
01010063 产品接口未配置
01010064 调用查询角色接口出错
01010065 未查询到角色
01020001 成功
01020002 密码错误,请重试
01020003 密码错误,请重试
01020004 注册失败
01020005 失败
01020006 该账号已存在
01020007 账号为6-18位,数字、字母、”_”
01020008 限制登录
01020009 限制首登
01020010 限制初始化
01020011 当前玩家的手持设备的IP地址已经被游戏封停
01020012 玩家的手持设备已经被游戏封停
01020013 当前玩家账号已经被游戏封停
01020014 没有找到该用户信息
01020015 查询激活信息失败
01020016 激活的tokenId不正确
01020017 用户激活失败
01020018 激活码无效
01020019 密码为6-14位,数字、字母组合
01020020 请使用已激活的账号登录
01020021 激活码已经被使用
01020022 您已经激活过其他设备,不能在多台设备上激活
01020023 用户密码不能为空
01020024 该账号不存在
01020025 内测阶段,暂不支持第三方登录
01020026 您的账号存在安全隐患,请联系客服:4000688900
01020027 没有该用户信息
01020028 设备信息获取失败
01020029 验证码有误
01020030 验证码已过期
01020031 注册手机号不能为空
01020032 验证码不能为空
01020033 该手机号已被绑定,请更换手机号
01020034 登录失败,请使用账号密码重试!
01030000 心跳处理成功
01030001 心跳处理失败
01030002 sessionId为空
01030003 session已过期
01040000 成功
03010000 已经被激活
03010001 角色查询参数不全
03010002 参数不全
03010003 角色已注册
03010004 注册发生错误

9.3 计费中心错误码

计费 错误码 信息
21000 成功
21001 请求的json串格式不正确
21002 json对象格式不正确
21003 json字符串转换为对象错误
21004 道具格式不正确
21005 返回bean格式不正确
21006 没有筛出计费点
21007 驱动格式不正确
21099 全局异常错误
21100 common节点格式不正确
21101 options节点格式不正确
21102 common中interfaceId不能为空
21103 tokenId格式不正确
21104 serviceId格式不正确
21105 deviceGroupId格式不正确
21106 localeId格式不正确
21107 pCode格式不正确
21108 netSource格式不正确
21120 device格式不正确
21121 mac格式不正确
21122 手机号码错误
21123 发货地址格式不正确
21130 批价ID格式不正确
21131 道具ID格式不正确
21132 sdkVersion格式不正确
21133 userId格式不正确
21134 roleId格式不正确
21135 roleName格式不正确
21136 gameType格式不正确
21137 gameServerId格式不正确
21138 gameClientVersion格式不正确
21139 当前业务下没有该道具
21140 计费点ID格式不正确
21141 充值金额格式不正确
21142 货币类型格式不正确
21143 gameServerId在平台没有启用,需要在平台上配置游戏服ID
21144 游戏产品不存在
21145 平台操作失败.
21146 请求报文头格式不正确
21147 手机平台ID格式不正确
21148 设备名称格式不正确
21149 设备系统版本号格式不正确
21150 设备分辨率格式不正确
21151 设备UDID格式不正确
21152 运营商格式不正确
21153 设备厂商格式不正确
21154 手机号格式不正确
21155 用户ID格式不正确
21156 代计费功能同步渠道异常
21157 超过用户日最大计费金额
21158 超过用户月最大计费金额
21159 黑名单用户
21160 充值失败
21161 超过计费点日最大计费金额
21162 超过计费点月最大计费金额
21163 道具名称不能为空
21164 通知发货成功
21165 计费失败
21166 等待支付结果
21167 指令错误
21168 已经订购,无需重复订购(包月)
21169 黑名单用户
21170 虚拟货币单位格式不正确
21171 虚拟货币数量格式不正确
21172 虚拟货币单位非法
21173 虚拟货币数量非法
21174 货币格式非法
21175 发货地址在mis上没有配置
21176 SDK同步_验签失败
21177 SDK同步_订单缓存不存在
21178 SDK同步_签名信息格式不正确
21179 官网_订单号格式不正确
21180 官网_订单缓存不存在
21181 官网_充值卡号格式不正确
21182 官网_充值卡类型格式不正确
21183 官网_充值卡密码格式不正确
21184 官网_银行类型格式不正确
21185 官网_计费点ID格式不正确
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 逻辑服有误
21209 已配置回调地址,sdk同步数据不予处理
21210 官网充值支付类型格式不正确
21211 官网充值支付校验类型格式不正确
21212 官网充值支付校验码格式不正确
21213 官网充值支付角色不存在
21214 官网_用户ID格式不正确
21215 官网_查询起始时间格式不正确
21216 官网_查询起结束时间式不正确
21217 官网_分页信息格式不正确
21218 官网_分页信息每页数量信息格式不正确
21219 官网_分页信息当前页参数格式不正确
21220 官网_分页信息当前日期范围不正确
21221 手机同步订单号和计费点ID不能同时为空
21222 游戏奖励活动不存在
21223 游戏奖励活动状态未开启
21224 不在游戏活动有效期
21225 用户已领取活动奖励
21226 未查询到玩家活动充值记录
21227 用户天兑换次数超出上限
21228 用户周兑换次数超出上限
21229 用户月兑换次数超出上限
23153 官网_第三方订单号不能为空
23152 官网_实际支付金额不能为空
23154 签名不能为空
23155 该笔订单已发货
23156 离线计费缓存为空
23157 礼包码未到生效时间
22000 app_product_id格式不正确
22050 cmcc_pay_code格式不正确
22100 googlePlay_pay_code格式不正确
22150 mmpaycode格式不正确
22200 世纪佳缘接口game_partner_id游戏合作ID格式不正确
22201 世纪佳缘接口game_jf_id游戏计费点编号格式不正确
22202 世纪佳缘接口game_id游戏id格式不正确
22203 世纪佳缘接口game_cost金额格式不正确
22204 世纪佳缘接口mobile充值手机号格式不正确
22205 世纪佳缘接口game_pay_type支付类型格式不正确
22206 世纪佳缘接口param短信上行自定义内容格式不正确
22207 世纪佳缘接口sign加密格式不正确
22208 世纪佳缘接口签名数据不符
22209 世纪佳缘接口game_partner_id与计费点上参数不符
22210 世纪佳缘接口game_jf_id与计费点上参数不符
22211 世纪佳缘接口game_id与计费点上参数不符
22212 世纪佳缘接口根据指令没有相关代计费配置
22250 根据指令没有相关代计费配置
22251 itemId_短信上行自定义内容格式不正确
22252 transactionId_内容格式不正确
22253 serviceId_内容格式不正确
22254 spId_内容格式不正确
22255 serviceType_内容格式不正确
22256 feeType_内容格式不正确
22257 serviceId与计费点上参数不符
22258 spId与计费点上参数不符
22259 serviceType与计费点上参数不符
22260 feeType与计费点上参数不符
22262 success_内容格式不正确
22263 checkcode_内容不正确
22304 联通时科外放接口Mobile充值手机号格式不正确
22305 联通时科外放接口sms_msg外放代码格式不正确
22306 联通时科外放接口ret计费结果格式不正确
22307 联通时科外放接口message计费错误信息格式不正确
22308 联通时科外放接口sec
22309 联通时科外放接口签名数据不符
22310 联通时科外放接口没有相关代计费配置
22311 联通时科外放接口传入订单号格式不正确
22354 微米外放接口mobile充值手机号格式不正确
22355 微米外放接口Price金额格式不正确
22356 微米外放接口ExData上行自定义内容格式不正确
22357 微米外放接口paramWIMIPOST上传的参数无效
22358 微米外放接口没有相关代计费配置
22359 微米外放接口【POST】-回传的XML报文未成功获取
22400 联动优势外放接口mobileId充值手机号码格式不正确
22401 联动优势外放接口goodsId短信上行商品号指令格式不正确
22402 联动优势外放接口没有相关代计费配置
22403 联动优势外放接口merId商户号格式不正确
22404 联动优势外放接口amtType货币类型格式不正确
22405 联动优势外放接口bankType货币类型格式不正确
22406 联动优势外放接口version版本号格式不正确
22407 联动优势外放接口sign签名格式不正确
22408 联动优势外放接口orderId商户订单号格式不正确
22409 联动优势外放接口merDate商户日期格式不正确
22410 联动优势外放接口payDate平台支付日期格式不正确
22411 联动优势外放接口amount商品金额格式不正确
22412 联动优势外放接口transType交易类型格式不正确
22413 联动优势外放接口settleDate账务清算日期格式不正确
22414 联动优势外放接口merPriv商户私有信息格式不正确
22415 联动优势外放接口retCode返回码格式不正确
22416 联动优势外放接口平台向用户下订单时签名验证不成功
22417 联动优势外放接口平台向用户同步信息时签名验证不成功
22418 联动优势外放接口平台向商户下订单金额超过当前计费点的实际金额
22419 联动优势外放接口当前计费点不满足计费限额,订单状态更新为异常。
22450 IVR外放接口没有相关代计费配置
22451 IVR外放接口开始计费时间格式不正确
22452 IVR外放接口结束计费时间格式不正确
22453 IVR外放接口呼叫号码格式不正确
22454 IVR外放接口被叫号码格式不正确
22455 IVR外放接口没有找到相关计费点配置
22500 Official官网SMS计费回调接口sign签名验证不通过
22501 Official官网SMS计费回调接口订单不存在
22550 downloadjoySDK计费回调接口result返回结果验证不通过
22551 downloadjoySDK计费回调接口money返回结果验证不通过
22512 downloadjoySDK计费回调接口mid返回结果验证不通过
22513 downloadjoySDK计费回调接口time返回结果验证不通过
22514 downloadjoySDK计费回调接口signature返回结果验证不通过
22515 downloadjoySDK计费回调接口ext返回结果验证不通过
22516 downloadjoySDK计费回调接口签名验证不通过
22600 duokuSDK计费回调接口amount返回结果验证不通过
22601 duokuSDK计费回调接口cardtype返回结果验证不通过
22602 duokuSDK计费回调接口orderId返回结果验证不通过
22603 duokuSDK计费回调接口result返回结果验证不通过
22604 duokuSDK计费回调接口timetamp返回结果验证不通过
22605 duokuSDK计费回调接口client_secret返回结果验证不通过
22606 duokuSDK计费回调接口签名验证不通过
22650 I4SDK计费回调接口amount返回结果验证不通过
22651 I4SDK计费回调接口order_id返回结果验证不通过
22652 I4SDK计费回调接口billno返回结果验证不通过
22653 I4SDK计费回调接口account返回结果验证不通过
22654 I4SDK计费回调接口status返回结果验证不通过
22655 I4SDK计费回调接口app_id返回结果验证不通过
22656 I4SDK计费回调接口role返回结果验证不通过
22657 I4SDK计费回调接口zone返回结果验证不通过
22658 I4SDK计费回调接口sign返回结果验证不通过
22659 I4SDK计费回调接口签名验证不通过
22700 本月已订购
22701 用户未登录
22702 手机号有误
22703 token不能为空
22704 计费点不能为空
22705 跳转地址不能为空
22706 该协议只支持短订单号指令,请检查配置是否正确
22750 安智回调接口第三方订单ID不存在
22751 安智回调接口订单金额不存在
22752 安智回调接口回调信息用户自定义参数不存在
22753 安智回调接口回传状态不存在
22754 安智回调接口实际支付金额不存在
22800 步步高下单失败
22801 步步高回调验签失败
22802 步步高回调支付失败
22850 获取access_token值返回错误
22851 下单失败
22900 签名错误
22901 支付状态错误
22902 支付状态错误
22950 上行内容格式不正确
22951 代计费配置错误
22952 手机号码格式不正确
22953 处理结果格式不正确
22954 流水号格式不正确
22955 上行号码格式不正确
23000 上行内容格式不正确
23001 产品内容格式不正确
23002 手机号码格式不正确
23003 流水号格式不正确
23004 签名格式不正确
23005 签名错误
23050 编码异常
23051 订单提交失败
23100 签名格式不正确
23101 签名错误
23102 交易状态格式不正确
23150 向盛付通下单失败
23151 字符编码异常
23201 facId格式不正确
23202 facMerId格式不正确
23203 cardId格式不正确
23204 oProjNo格式不正确
23205 cardKind格式不正确
23206 cardPoint格式不正确
23207 returnMsgNo格式不正确
23208 hash格式不正确
23209 hash验证错误
23210 facTradeSeq格式不正确
23211 tradeSeq格式不正确
23212 差异报表查询参数格式不正确
23213 FactorySeq格式不正确
23214 OTP格式不正确
23251 ERPC验证错误
26000 展示的错误信息
26001 orderId为空
24000 请求缺少相关参数
24001 userSign不能为空
24002 要添加的userSign个数超过设定容量
24003 userSign个数已超过设定容量
24004 userSign剩余容量不足以添加要添加数据
24005 userSign格式有误

9.4 货币类型及对应ID

货币ID 货币名称 货币单位
1 人民币
2 美元 美分
3 日元
4 港币
5 英镑 便士
6 新加坡币
7 越南盾
8 台币
9 韩元
10 泰铢 萨当