游戏接入米大师

目录


1. 客户端SDK接入

1. 模块介绍
(1)YSDK 从 1.1.0 版本开始支持midas接入。通过该功能,应用开发者可以同时使用QQ和微信的第三方登陆体系,并且可以获取用户授权后的基本信息。
(2)该模块在接入时需修改应用assers目录下ysdkconf.ini文件中的offerid(修改方法参考SDK接入中的介绍)。该模块无需额外的初始化工作,所有工作,在初始化YSDK时已经由SDK完成。
(3)YSDK 从1.2.2版本开始使用米大师的集成版。该版本开始游戏内充值游戏币时不再需要依赖腾讯充值的app。建议游戏尽快更新到1.2.2及以上版本。
(4)游戏使用的YSDK支付模块的环境与YSDK环境一致,例如当游戏使用ysdktest.qq.com的域名是,同时对应支付模块的沙箱环境。当域名使用ysdk.qq.com时,对应支付模块的正式环境。

2 配置修改
2.1 Midas接入AndroidMainfest修改
游戏按照下面的事例填写配置信息。

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

<!-- TODO GAME SDK Midas接入配置 START -->
<activity
    android:name="com.tencent.midas.proxyactivity.APMidasPayProxyActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:screenOrientation="portrait"
    android:configChanges="orientation|keyboardHidden|screenSize" />
<activity
    android:name="com.tencent.midas.wx.APMidasWXPayActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:exported="true" />

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


2.2 Midas插件添加
将YSDKRes的assets中的MidasPay.zip完整拷贝到游戏apk的assets中,如果使用过老版本YSDK,集成过TencentPay.apk的,请删除;否则会导致拉起支付时报如下错误:
midashipeizhi截图-10.png

2.3 Midas支付渠道修改
目前米大师开始逐步用QQ钱包替代财付通和银行卡快捷支付两个充值渠道,且支付渠道保留Q币、微信支付、QQ钱包及QQ卡4种
这部分内容目前需要独立配置,游戏在接入中如果发现自己游戏支付渠道显示不对,可以直接联系YSDK技术支持进行处理(QQ:3125348973/236271184)
下图为修改前后的事例:
•修改前:
midashipeizhi截图-11.png

•修改后:
midashipeizhi截图-12.png

3. 游戏支付异常检查步骤
第一步:确认是否能够成功拉起支付界面
如果可以,请直接到下一步,如果不可以,请检查是否是因为以下原因引起的?
(1)如果游戏使用的SDK的版本为YSDK 1.4.5以下版本,请更新到1.4.5及以上版本。
(2)如果未能拉起支付,但是界面有弹框报错,请参考支付错误码及FAQ,查看对应的错误码。
(3)如果没有任何反应,或者发生crash,检查Logcat日志,一般logcat日志中都会有具体说明。

第二步:检查游戏支付相关配置是否正确
游戏支付相关的配置包括:offerid、调用YSDK的recharge接口(游戏币模式)的zoneid、游戏对应支付环境的权限等参数是否正确。

第三步:检查米大师初始化相关配置是否正确
目前YSDK已经彻底封装了Midas,游戏可以直接使用YSDK提供的充值接口充值,无须再单独初始化米大师,如果重复初始化有可能会引起支付异常的问题,游戏要删除相关代码。

第四步:在支付界面选择商品以后支付报错链接根据文档更新而定
在YSDK wiki上有关于米大师客户端支付报错的详细说明,游戏可以参考常见错误码。

2. 游戏币模式介绍

游戏接入米大师流程
目录
1. 托管模式概述
1.1 用户充值
1.2 用户消费
2. 游戏币托管模式充值流程
2.1 充值时序
2.2 注意事项
3. 游戏币托管模式扣款流程
3.1 扣款时序
3.2 注意事项
4. 游戏币托管模式退款流程
退款时序
5. 游戏币托管模式防重说明 6. 充值游戏币


1. 托管模式概述
这部分内容主要介绍游戏币托管模式的业务流程,具体包括支付、扣款、退款三个流程,其中支付需要YSDK客户端和后台的同时参与,其余流程仅需要YSDK后台就可以完成。在游戏币模式下,
用户在游戏内消费分为两步,这里主要从流程上介绍这两种用户行为怎么处理。里面提到的三个具体流程会在下个模块具体说明:

1.1 用户充值
这一步中会将用户的第三方账号(如微信支付、银行卡、电话卡、Q币等)的货币转化为游戏内的一级货币(如:钻石等)。这一步仅包含游戏币托管模式充值流程,相对比较简单。
具体流程如下:
youxibimoshi-01.png

1.2 用户消费
这一步中会将用户在游戏账号中的一级货币(如:钻石等)转化为游戏内的道具(如英雄、体力等)或者二级货币(如金币、点券等)。这一步包含游戏币托管模式扣款流程、游戏发货以及游戏如果发货失败,对应的游戏币托管模式退款流程。
具体流程如下:
youxibimoshi-02.png

特别说明:上文提到的退款并不是退款到用户的第三方支付账号,仅仅是退回之前购买时扣除的游戏以及货币。

2.游戏币托管模式充值流程
2.1 充值时序
youxibimoshi-03.png

2.2 注意事项
由于部分充值渠道充值有延时,建议在收到支付成功的回调以后接下来的2分钟内,间隔15秒重复调用查询余额的接口。查余额的过程中查询是否到账可以根据查余额返回的 “save_amt:累计充值金额的游戏币数量”的变化判断.
为了防止网络异常,客户端异常等导致有些场景下支付收不到回调或者查询余额失败,因此建议游戏在每次用户启动游戏时主动走一次查余额的流程(上图中3 — 6)。
基于以上两个原因,当游戏中遇到用户充值不到账的情况下,可以先引导用户登录重试。
这部分内容仅为建议,仅供游戏参考。由于支付是游戏中的低频行为,为了提升游戏用户体验,建议游戏不要将查余额作为用户进入游戏的关键路径。即当查询余额接口异常时,建议游戏可以在显示余额的界面显示查询异常、拉取失败等提示,而不要直接拒绝用户进入游戏,更不要直接显示0(避免引起用户投诉)。

3. 游戏币托管模式扣款流程
3.1 扣款时序
youxibimoshi-04.png

3.2 注意事项
为了方便后续对账等,建议游戏将midas扣款时的订单号和游戏内的发货行为绑定。当游戏内发货失败时,即可退款对应订单的扣费。
当游戏扣款以后发货失败,建议游戏优先多次重试发货,确实无法发货的情况下再调用退款接口退款。

4. 游戏币托管模式退款流程
退款时序
youxibimoshi-05.png

5. 游戏币托管模式防重说明
当前游戏币消耗接相关的接口:pay_m(扣除游戏币)、cancel_pay_m(取消支付)均支持游戏调用时添加自定义订单号,而且支持同一订单号的防重调用。
使用场景
在网络异常的情况下,游戏调用时可能会出现账户操作成功(如扣款成功),但最终传输异常(如接口超时)等情况。
具体用法
游戏在调用midas的接口,当后台返回(ret!=0)时对于错误码可以按照下面的建议处理:
ret=3000111:
- Step1: 业务再一次调用报错的接口,调用参数使用上一次调用时的自定义billno;
- Step2: 如果后台返回1002215,则表明上一次操作成功,可以按照正常逻辑处理;如果返回0,则表明这次才操作成功,此时也可以按照正常逻辑处理;如果返回其它值,则按照接口调用的错误码处理。
ret=1002215:处理步骤ret=3000111中的说明,表示上一次调用已经成功
其它错误:一律按照接口调用的错误码提示处理。
•注意:
3000111的报错重试一定次数后任然返回3000111的错误则停止重试,以失败告警,由人工处理。
如果业务调用接口时没有自定义billno,若出现3000111错误,则后台可能是调用成功,后续进行财务对账时,需要人工审核。
接入前提:游戏平台有自定义的订单号。

6. 充值游戏币
该接口用于充值游戏币场景,游戏调用接口以后唤起腾讯支付页面引导用户完成充值,充值结束以后,结果会通过参数中的YSDKPayListener回调给游戏,游戏收到回调以后,调用后台的查余额的接口确认到账情况。

• 接口声明:
/**

  • 充值游戏币
  • @param zoneId 大区id
  • @param saveValue 充值数额
  • @param isCanChange 设置的充值数额是否可改
  • @param resData 代币图标的二进制数据
  • @param listener 充值回调
  • /

void recharge(unsigned char* zoneId, unsigned char* saveValue, bool isCanChange,
unsigned char* resData,int cReslength,
unsigned char* ysdkExtInfo,YSDKPayListener* pListener);

• 接口调用:

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

• 注意事项:

(1)由于米大师SDK的兼容性的问题,在部分64位机型上,使用银行卡和财付通余额支付支付时可能引起应用崩溃,建议更换支付渠道以后重试。
(2)由于米大师SDK的兼容性问题,游戏可能会遇到充值成功以后,没有收到回调的问题,此时充值已经到账,建议应用触发查余额逻辑拉取余额解决。
(3)由于第三方支付的实现方式的原因,游戏可能会遇到充值成功以后,没有收到成功回调的问题,点击了解处理方式。


3.道具直购模式介绍

米大师介绍——道具直购模式介绍
目录
1. 模式概述
2. 服务器端下单
2.1 服务器端下单后台接口
2.2 道具直购客户端接口 (服务器下单,仅单机游戏可用)
3. 客户端下单模式
3.1. 道具直购客户端接口 (客户端下单,仅单机游戏可用)


1. 模式概述
这部分内容主要介绍道具直购模式的业务流程,具体包括服务器下订单和客户端下订单两种方式。目前道具直购模式仅提供单机游戏使用

2. 服务器端下单
2.1 服务器端下单后台接口
道具直购模式,需要应用调用该接口执行下订单操作,获取到支付服务器返回的订单url
•URL地址:
【现网】https://ysdk.qq.com/mpay/buy_goods_m
【沙箱】https://ysdktest.qq.com/mpay/buy_goods_m

•参数说明:
1. Cookie里面需要包含的参数
Cookie 参数:
游客登陆为

  session_id="hy_gameid"
       session_type="st_dummy"

session_id 用户账户类型,(手Q)session_id ="openid";(微信)session_id = "hy_gameid"
session_type session类型,(手Q)session_type = "kp_actoken";(微信)session_type = "wc_actoken"
org_loc 需要填写: /v3/r/mpay/buy_goods_m
注意:cookie里面org_loc的值,需要进行urlencode

2. 请求参数:
openid: 从手Q登录态中获取的openid的值
openkey:手Q登陆时传手Q登陆回调里获取的paytoken值,微信登陆时传微信登陆回调里获取的传access_token值。
游客登陆传openkey
appid: 应用的唯一ID。可以通过appid查找APP基本信息。
ts: UNIX时间戳(从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)。
payitem: 请使用x*p*num的格式,x表示物品ID,p表示单价(以Q点为单位,1Q币=10Q点,单价的制定需遵循腾讯定价规范),num表示默认的购买数量。(格式:物品ID1*单价1*
建议数量1,批量购买物品时使用;分隔,如:id1*price1*num1;id2*price2*num2)长度必须<=512
goodsmeta: 物品信息,格式必须是“name*des”,批量购买套餐时也只能有1个道具名称和1个描述,即给出该套餐的名称和描述。
name表示物品的名称,des表示物品的描述信息。用户购买物品的确认支付页面,将显示该物品信息。长度必须<=256字符,必须使用utf8编码。目前goodsmeta超过76个字符后不能添加回车字符。
goodsurl: 物品的图片url(长度<512字符)
sig: 请求串的签名,参考Sig签名计算。
pf: 平台来源,参考公共参数说明。
pfkey: 跟平台来源和openkey根据规则生成的一个密钥串。如果是腾讯自研应用固定传递pfkey=”pfkey”
zoneid: 账户分区ID。应用如果没有分区:传zoneid=1
amt: (可选)道具总价格。(amt必须等于所有物品:单价*建议数量的总和 单位为1Q点)
max_num: (可选) 用户可购买的道具数量的最大值。仅当appmode的值为2时,可以输入该参数。输入的值需大于参数“payitem”中的num,如果小于num,则自动调整为num的值。
appmode: (可选)1表示用户不可以修改物品数量,2 表示用户可以选择购买物品的数量。默认2(批量购买的时候,必须等于1)
app_metadata:(可选)发货时透传给应用。长度必须<=128字符
userip: (可选)用户的外网IP
format: (可选)json、jsonp_$func。默认json。如果jsonp,前缀为:$func
例如:format=jsonp_sample_pay,返回格式前缀为:sample_pay()

3.注意事项:
&nbsp&nbsp1、批量购买道具的时候,appmode必须为1。

4.返回参数说明
ret: 返回码0:成功, >=1000:失败
msg: ret不为0的时候,错误信息(utf-8编码)。
token: ret为0的时候,开发者需要保留。后续扣费成功后调用第三方发货时,会再传给开发者,作为本次交易的标识。
url_params: ret为0的时候,返回真正购买物品的url的参数,开发者需要把该参数传给sdk跳转到相关页面使用户完成真正的购买动作。

5.返回示例

{"ret" : 0,"url_params" : "/v1/m01/11157/mobile_goods_info?
token_id=706E0C25FD24B948DD129CBC202129B922463 ","token_id" :  "706E0C25FD24B948DD129CBC202129B922463"}

2.2 道具直购客户端接口 (服务器下单,仅单机游戏可用)
该接口用于通过后台服务器下单的道具直购场景,游戏调用接口以后唤起腾讯支付页面引导用户完成付费,用户付费结束以后,结果会通过参数中的YSDKPayListener回调给游戏,同时米大师会调用游戏在米大师配置的回调地址发货。
•接口声明:
/**

  • 道具直购 — 服务器下单
  • @param zoneId 大区id
  • @param goodsTokenUrl 后台下订单返回的urlPara
  • @param resData 代币图标的二进制数据
  • @param ysdkExtInfo YSDK透传参数,会在listener中回调给游戏
  • @param listener 充值回调
  • /

void buyGoods(String zoneId, String goodsTokenUrl, byte[] resData, String ysdkExtInfo, PayListener listener);

•接口调用:

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

3. 客户端下单模式
3.1. 道具直购客户端接口 (客户端下单,仅单机游戏可用)
该接口用于通过客户端下单的道具直购场景,游戏调用接口以后唤起腾讯支付页面引导用户完成付费,用户付费结束以后,结果会通过参数中的YSDKPayListener回调给游戏,同时米大师会调用游戏在米大师配置的回调地址发货。
•接口声明:
/**

  • 道具直购 — 服务器下单
  • @param zoneId 大区id
  • @param item 购买道具的信息
  • @param midasAppkey 游戏midas的appkey
  • @param resData 代币图标的二进制数据
  • @param midasExt midas透传参数,会在调用发货接口时透传给游戏
  • @param ysdkExtInfo YSDK透传参数,会在listener中回调给游戏
  • @param listener 充值回调
  • /

void buyGoods(String zoneId, PayItem item,
String midasAppkey, byte[] resData, String midasExt, String ysdkExtInfo, PayListener listener);

•PayItem介绍: PayItem包含购买道具的相关信息,在调用客户端下单接口时必须同步传入对应信息
youxibimoshi-06.png
•接口调用:

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

4. 米大师后台配置

目录
1. 接入前的准备工作
2. 游戏币模式
填写接入基本信息
分区配置
联调发布
3. 道具直购模式
填写接入基本信息
分区配置
联调发布


正文
1. 接入前的准备工作
目前接入米大师时,无需再去米大师官网进行注册,直接在open后台进行注册,进入open后台,点击“支付结算”前往midas配置界面,配置前需注意以下两点:
(1)在接入midas前必须先确保已能正常登录,因为支付时需要使用手Q或微信授权登录后返回的用户数据。
(2)提供手Q ID和手Q Key,如若需要使用微信支付还需要提供微信ID ,需要将其与midas申请的支付ID进行绑定(手Q和微信参数在YSDK介绍中有说明)。

2. 游戏币模式
(1)填写接入基本信息
youxibimoshi-07.png

(2)分区配置
youxibimoshi-08.png
注: 应用可以自助配置分区,至少需要一个分区ID为1的分区作为基础分区,若现网环境多个分区,则每次新增分区,需要在此界面配置新分区,发布现网才可生效。

(3)联调发布
youxibimoshi-09.png
注:根据游戏支付环境需要,发布沙箱或者发布现网。

3. 道具直购模式
(1)填写接入基本信息
youxibimoshi-10.png

(2)分区配置及回调地址配置
youxibimoshi-11.png

youxibimoshi-12.png
注:回调地址配置说明(重点):
1.使用腾讯云服务器(基础网络的内网IP,以10开头),需要使用http的9001端口;
2.使用非腾讯云的服务器,需使用https的443端口,可以用外部服务器IP或者域名。
3.如果用非腾讯云服务器的,要下载并配置米大师颁发的证书(点击回调地址旁边的“下载”),沙箱和现网的证书安装各自的,不通用。
4.单机直购模式,若没有服务器的游戏,可以使用米大师发货地址,具体地址可以找YSDK技术支持获取(QQ:3125348973/236271184)。
5.切换http/https以及证书安装说明,需要找YSDK技术支持进行操作,QQ号码参考(4)。
6.回调发货协议说明参:https://wiki.midas.qq.com/post/index/1/45/83/0(更多米大师服务器端文档可参考:https://wiki.midas.qq.com/post/index/1/45/73/0)。


(3)联调发布
youxibimoshi-13.png
注:分区及回调地址配置成功后,必须勾选配置的回调地址,“确定”及发布沙箱或现网,才能生效。

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

Copyright © 1998 - 2020 Tencent. All Rights Reserved.

腾讯公司 版权所有

返回顶部