解压SDK包,可以看到lib4399MGSDK
其中包含inc
与lib
两个目录,inc
包含所需的头文件,lib
包含所需的DLL以及库文件。
拷贝lib4399MGSDK
到游戏项目工程中,并配置依赖关系。
引入头文件
#include "PC4399SDK.h"
#pragma comment(lib, "PC4399SDK.lib")
将lib目录下对应的PC4399SDK.dll
与游戏exe放在一起
在Assets目录下创建Plugins目录
针对Unity5.x
版本,需在Plugins下创建x86
,将PC4399SDK.dll
拷贝到对应的目录下
针对Unity2017
版本,将需要的PC4399SDK.dll
拷贝到Plugins
目录下即可
SDK使用前,必须先进行初始化操作,SDK初始化完成后,才可以调用其他接口。
API:
/*
* SDK初始化接口
* @param appKey 游戏ID
*/
int InitZzMGSDK(const char* appKey);
返回值:
1
代表初始化成功
0
或其他code 表示初始化失败。
部分游戏出现多个进程的情况,通过以下接口可以设置主游戏进程ID,方便SDK防沉迷退出游戏控制。
建议在初始化接口之前设置。
API:
/**
* 设置游戏主进程ID
* 游戏进程ID
*/
void SetGameProcessId(DWORD dwGameProcessId);
在需要登录的位置调用以下接口,调起登录面板进行登录操作。
API:
/**
* 登录回调
param userInfo 登录成功返回用户信息,失败则返回空
*/
typedef void(*MGLoginCallback)(const char* userInfo);
/**
* 登录接口
*/
void DoMGLogin(MGLoginCallback callback);
返回值:
username=test&time=1124454&fcm=1&uid=123456789&token=daffaewwewee
描述:
username
用户名(UrlEncode编码过)
time
登录时间
fcm
防沉迷(0 表示该用户为成年人,2代表为儿童,1代表未填写)
uid
用户id
token
加密串规则:
$loginSecret = "秘钥,找渠道申请";
//规则信息
//md5(md5(用户UID + 用户账号 + 密钥 + 时间) +秘钥)
$token = md5(md5($uid.$username.$loginSecret.$time).loginSecret);
username可能出现中文,客户端返回的username是经过urlencode编码后的值,故在服务器端校验签名时,不要进行urldecode后在进行校验,其他地方使用可以进行urldecode
在需要支付的位置调用该接口,发起充值。
PS:
为方便开发测试联调,SDK从V1.0.7
起增加测试模式
功能。
1.测试模式
由SDK后台控制。在SDK申请参数审核后,会先开通测试模式
进行联调,联调成功后转换为正式模式
。
2.测试模式
下调用支付接口,无充值选项界面,直接模拟充值,SDK服务端将立即回调游戏服务器。
3.测试模式
需要使用指定的账号进行登录测试,由运营在对接组中提供。
API:
/**
*支付信息结构体
*/
typedef struct MGPayInfo {
const wchar_t* goodsName; //商品名称
int money; //充值金额
const wchar_t* server; //分服id标识
const wchar_t* mark; //附加字段,只允许32位字符
} MGPayInfo;
/**
* 支付回调
* @param code 支付hudiao
*/
typedef void(*PayResultCallBack) (int code);
/**
* 支付接口
* @param payInfo 用于支付的物品等信息
* @param callback 充值回调
*/
void DoMGPay(MGPayInfo const& payInfo, PayResultCallBack callback)
示例:
MGPayInfo payInfo;
payInfo.goodsName = L"商品名称"
payInfo.money = 1;
payInfo.server = L"1"; //分服标识,无分服请设置为空
payInfo.mark = L"xxx"; //附加信息,可以是自定义的订单号
DoMGPay(payInfo, OnPayCallBack); //发起支付
支付回调
void OnPayCallBack(int code)
{
//回调结果处理
}
SDK返回码:
const int kMGResultFailed = 90001;//支付失败
const int kMGResultSucceed = 90002;//支付成功
const int kMGResultErrorUnion = 90003;//unionid不存在或已失效
const int kMGResultErrorUser = 90004;//用户未登录或已过期
const int kMGResultErrorNotTestUser = 90008;//测试模式-非测试账号