支付
Unity3D
概述
接入向导
常见问题
Android
概述
接入向导
常见问题
IOS
概述
接入向导
常见问题
其他
数据结构
系统工具
支付 / Android / 概述

概述

腾讯游戏统一使用米大师(Midas)进行支付。米大师(Midas)是腾讯官方提供的移动端支付SDK,能够提供Q币,Q卡,财付通,银行卡,微信支付,手机充值卡,话费等支付渠道。提供原生的android和iap(苹果官方版)支付SDK,和一整套的支付服务,包括营销活动的支持。这里只做简要的介绍,详情请参考米大师wiki

接入向导

1 前置条件

1)完成MSDK登录的接入

在进行支付时需要填入一些票据信息如手Q的appid,appkey,微信的appid;pf,pfkey,openid,pay_token(手Q登录时需要) accessToken(微信登录时需要)这些信息都是在登录成功后获取到的。请参考登录功能如何获取票据信息。此外您还需要传入offerid,offerid请到http://midas.qq.com申请。在申请时请注意:需要有项目组公用QQ账号,申请支付ID时不建议使用私人QQ。

2)完成米大师的其他要求

详情请参考接入米大师准备工作

2 配置游戏支付信息

需要在米大师的计费接入网站配置游戏的基本信息以及支付信息:

管理员账号,产品经理,开发负责人,以及运维负责人的RTX;

手Q的appid,appkey,微信的appid;

应用名称,游戏币名称以及兑换比例;

计费方式:充值游戏币或者是直接购买道具;

详情请参考andorid支付配置详情

配置完这些信息之后就可以开始sdk的接入以及联调了。

3 米大师SDK接入与联调

主要分为三大步:

1)导入MidasSDK文件

2)配置AndroidManifest.xml

3)调用Midas支付接口

详见SDK的接入

4 米大师服务器接口接入与联调

米大师提供给了服务器调用的支付接口,包括查询游戏币余额,充值,寄售,营销等。详情请查看米大师后台API说明

5 支付上线注意事项

需要提交审核,并切换正式环境。请参考如何上线-Android

SDK的接入

1 导入MidasSDK文件

首先到Midas官网下载AndroidSDK。

1)将MidasSDK\libs\MidasPluginXX.jar 拷入Android应用项目工程的assets目录。

2)将MidasSDK\asset\MidasPay.zip拷入Android应用项目工程的assets目录。

3)将MidasSDK\res\anim下的4个资源拷贝到应用项目的res\anim目录下。

4)微信支付渠道集成。如果已经集成微信的相关支付包如MSDK,则可以不拷入libammsdk.jar;否则,就需要拷入libammsdk.jar包(在libs目录下),以便能够使用微信支付渠道。

5)qq钱包渠道集成。需要拷入mqqopenpay.jar包(在libs目录下)。

6)登录jar包引入说明

对于微信平台需要调用SDK内登录或者手Q平台自研应用调用SDK内登录,需要wlogin_sdk.jar。如果应用中已经包含了wlogin_sdk.jar,则共用即可。对于不需要调用内登陆的应用,如大厅平台则可以删除下面截图红框中的包(在libs目录下),midas 1.3.9版本,使用的是wtlogin的5.2版本;但是midas同时兼容wtlogin的低版本。

7)特别注意:MidasPaySample的libs下的armeabi目录和x86目录下的libwtecdh.so库,是wtlogin新版本(5.x以上)所需要的so库,如果游戏使用的是低版本的wtlogin(4.x),那么删除wlogin_sdk.jar包和armeabi目录和x86目录下的so库即可

2 配置AndroidManifest.xml

1) App权限声明,请加入以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

2) 加入Activity声明

<activity 
           android:name="com.tencent.midas.proxyactivity.APMidasPayProxyActivity"
           android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize”
           android:screenOrientation="landscape" />    
<activity
           android:name="com.tencent.midas.wx.APMidasWXPayActivity"
           android:theme="@android:style/Theme.Translucent.NoTitleBar"
           android:exported="true" />
<activity
           android:name="com.tencent.midas.qq.APMidasQQWalletActivity"
           android:launchMode="singleTop"
           android:theme="@android:style/Theme.Translucent.NoTitleBar"
           android:configChanges="orientation|keyboardHidden" 
           android:exported="true" >
           <intent-filter>
              <action android:name="android.intent.action.VIEW" />
              <category android:name="android.intent.category.BROWSABLE"/> 
              <category android:name="android.intent.category.DEFAULT"/> 
              <data android:scheme="qwallet100703379"/>
           </intent-filter>
       </activity>
 <activity android:name="com.tencent.midas.jsbridge.APWebJSBridgeActivity"
                       android:theme="@android:style/Theme.Translucent.NoTitleBar"
                       android:windowSoftInputMode="stateAlwaysHidden"/>

3) 其他配置

android:targetSdkVersion大于等于13,则设置

android:configChanges="orientation|keyboardHidden|screenSize

android:targetSdkVersion小于13,则设置

android:configChanges="orientation|keyboardHidden

详情请参考米大师ANDROID SDK接入

3 调用Midas支付接口

此处仅提供将代币支付/道具支付的简单说明已经实例,方便您快速了解接入大致步骤,详情还需参考米大师SDK接口说明

1) 调用Midas SDK初始化接口

a)功能描述

初始化Midas SDK。

b)接口声明

public static void init(Activity activity, APMidasBaseRequest request)

说明:在游戏初始化时调用该接口初始化SDK,在使用Midas其它接口之前必须先至少调用一次init初始化操作。

c)参数说明

参数名称 类型 说明
gameActivity Activity 游戏Activity
request APMidasBaseRequest 米大师支付请求

d)返回值

e)示例代码

APMidasGameRequest initRequest = new APMidasGameRequest();
LoginRet lr = new LoginRet();
WGPlatform.WGGetLoginRecord(lr);

initRequest.offerId = WeGame.getInstance().offerId;
initRequest.openId = lr.open_id;

if(lr.platform == WeGame.QQPLATID){
    initRequest.openKey = lr.getTokenByType(TokenType.eToken_QQ_Pay);
    initRequest.sessionType = "kp_actoken";
    initRequest.sessionId = "openid";

}else if(lr.platform == WeGame.WXPLATID){
    initRequest.openKey = lr.getTokenByType(TokenType.eToken_WX_Access);
    initRequest.sessionType = "wc_actoken";
    initRequest.sessionId = "hy_gameid";
}


initRequest.pf = WGPlatform.WGGetPf("");

initRequest.pfKey = WGPlatform.WGGetPfKey();

APMidasPayAPI.init(mainActivity, initRequest);

2) 环境参数设置

a)功能描述

环境参数设置:test 支付沙箱环境,release支付现网环境。建议应用在接入时先在沙箱环境测试通过后,切换至release再发布。

b)接口声明

public static void setEnv(String env)

c)参数说明

参数名称 类型 说明
env String 支付环境

d)返回值

e)示例代码

APMidasPayAPI.setEnv(APMidasPayAPI.ENV_TEST);

3) 调用支付接口进行支付

a)功能描述

开启充值模块界面,引导用户完成 充值游戏币,充值数额由支付SDK提供默认值,用户可修改。(注意:该方法需运行在主线程)IAPMidasPayCallBack是支付的回调,返回支付结果,具体使用方法参见以下例子。注意请根据平台填写对应的sessionType,在示例中已经给出了说明。

b)接口声明

public static void launchPay(Activity activity, APMidasBaseRequest request,IAPMidasPayCallBack callBack)

c)参数说明

参数名称 类型 说明
activity Activity 支付时的游戏Activity
request APMidasBaseRequest Midas支付request
callBack IAPMidasPayCallBack Midas支付回调接口

d)返回值

e)示例代码

APMidasGameRequest request = new APMidasGameRequest();
request.offerId = offerId;
request.openId = userId;
request.openKey = userKey;//手Q为 paytoken,微信为accesstoken
request.sessionId = sessionId;
request.sessionType = sessionType;//手Q为"kp_actoken"、微信为"wc_actoken"
request.zoneId = "1";
request.pf = pf;
request.pfKey = pfKey;
request.acctType = "common";
request.saveValue = "";//未指定数量,这里直接进入购买数量选择列表
request.resId = R.drawable.sample_yuanbao;

APMidasPayAPI.launchPay(gameActivity, request, 

                        new IAPMidasPayCallBack(){

                        @Override
                        public void MidasPayCallBack(APMidasResponse arg0) {
                            Log. d("MSDK_PAY", "支付sdk回调应用" );

                            switch(response.resultCode){
                            case APMidasResponse.PAYRESULT_ERROR:
                                Log. d("MSDK_PAY", "支付出错" );
                                break;
                            case APMidasResponse.PAYRESULT_CANCEL:
                                Log. d("MSDK_PAY", "用户取消" );
                                break;
                            case APMidasResponse.PAYRESULT_SUCC:
                                Log. d("MSDK_PAY", "支付成功" );

                            }

                        }

                        @Override
                        public void MidasPayNeedLogin() {
                            Log. d("MSDK_PAY", "登录票据过期,请重新登录" );

                        }

                    });

4) 日志打印开关

a)功能描述

打开日志开关,Midas将会打印支付日志,方便调试。

b)接口声明

public static void setLogEnable(boolean logEnable)

c)参数说明

参数名称 类型 说明
logEnable boolean true:打开,false:关闭

d)返回值

e)示例代码

APMidasPayAPI.setLogEnable(true);

常见问题

如果您在接入MIDAS ANDROID SDK时,发现解压Miads的安装包中存在微信SDK(libammsdk.jar)、和mid相关SDK(mid-***.jar)并且与MSDKLibrary里面的相关jar包冲突的话,删除对应的jar包即可。

其他支付问题详见米大师Android-FAQ