米大师服务端接入

目录


注(重点):更多服务端文档,请参考米大师文档

一、 游戏币模式查询余额接口

1. 概述
获取用户游戏币余额
注:由于渠道存在扣费延时的问题,所以在充值完成后调用该接口是建议在2分钟之内间隔15秒多次调用,直到查到当前充值已到账(是否到账可以通过接口返回的save_amt对应的值是否发送变化来判断)

2. 查询余额接口URL
URL地址:
【现网】https:// ysdk.qq.com/mpay/get_balance_m
【沙箱】https://ysdktest.qq.com/mpay/get_balance_m

3. 请求参数
Cookie参数

参数名称 描述
session_id 用户账户类型,(手Q)session_id ="openid";(微信)session_id = "hy_gameid"; (游客) session_id = "hy_gameid"; (h5游戏) session_id ="openid"
session_type session类型,(手Q)session_type = "kp_actoken";(微信)session_type = "wc_actoken" ;(游客) session_type = "st_dummy"; (h5游戏) session_type ="openkey"
org_loc 需要填写: /mpay/get_balance_m
appip (可选)来源的第三方应用的服务IP

注意:cookie里面参数的值,需要进行urlencode

请求参数

参数名称 描述
openid 从手Q登录态或微信登录态中获取的openid的值
openkey 手Q登陆时传手Q登陆回调里获取的paytoken值,微信登陆时传微信登陆回调里获取的传access_token值。
appid offerid,offerid即支付结算页面里的应用id,用于支付接口。
ts UNIX时间戳(从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)。
pf 平台来源,登录获取的pf值
pfkey 登录获取的pfkey值
zoneid 账户分区ID_角色ID。每个应用都有一个分区ID为1的默认分区,分区可以在cpay.qq.com/mpay上自助配置。如果应用选择支持角色,则角色ID接在分区ID号后用"_"连接,角色ID需要进行urlencode。
qq_appid 手Q小程序appid 手Q小程序时必填
sig 请求串的签名(参考YSDK支付接口签名说明)。
userip (可选)用户的外网IP accounttype:(可选)帐户类型ID。基础货币(common);安全货币(security);不填,默认common
accounttype (可选)账户类型ID,默认common
format (可选)json、jsonp_$func。默认json。如果jsonp,前缀为:$func

例如:format=jsonp_sample_pay,返回格式前缀为:sample_pay()

4. 请求示例

curl "http://IP:端口/v3/r/mpay/get_balance_m?openid=odFzSjlSIm09-35bPDeHrwzO1rqU&openkey=
35_c79HmE4aWyrmrIuq6p6lMelVzG4pqMSNobfqDUON9SYixKJyVBO4YwGCMURygpYRFU3_7PPJbkkKVXpIRDDHe323Bp_
WPDeG-23XVB_QGqI&appid=1450001088&ts=1596178291&pf=qq_qq-00000000-android-00000000&pfkey=
pfkey&zoneid=1&sig=Kb+LUvy7juwyaQipGNHKkyU4v3k=" -b "session_id=hy_gameid;session_type=
wc_actoken;org_loc=/v3/r/mpay/get_balance_m"

5. 返回参数

参数名称 参数名称 描述
ret 返回码0:成功;1018:登录态校验失败;1001:参数错误;其他:失败
balance 游戏币个数(包含赠送游戏币)
gen_balance 赠送游戏币数量(balance中赠送游戏币数量)
first_save 是否满足历史首次充值,1:满足,0:不满足
expire_info 腾讯视频积分过期信息(其他产品无需关注)
save_amt 累计充值金额的游戏币数量
gen_expire 该字段已作废
tss_list inner_productid 用户开通的订阅物品ID(注:该参数为订阅型月卡配置时候的servicecode)
begintime 用户订阅的开始时间 如过期后未续费,且一段时间后再次订阅 返回的是新的订阅开始时间
endtime 用户订阅的结束时间
paychan 用户订阅该物品id最后一次的支付渠道
paysubchan 用户订阅该物品id最后一次的支付子渠道id
autopaychan 自动续费渠道
autopaysubchan 自动续费子渠道
grandtotal_opendays 用户订阅历史累计开通天数
grandtotal_presentdays 用户订阅历史累计赠送天数
first_buy_time 首次购买时间
extend 预留扩展字段,目前没有使用
third_channel_info_list(新)推荐使用 pay_channel

付费渠道

pay_subchannel

付费子渠道号

end_time

自动续费到期时间

productid

自动续费物品ID

latest_billno

最近一笔自动续费订单号

state

自动续费状态:"1"代表有效,"0"代表无效

third_channel_info(旧)废弃 pay_channel

付费渠道

pay_subchannel

付费子渠道号

end_time

自动续费到期时间

productid

自动续费物品ID

latest_billno

最近一笔自动续费订单号

state

自动续费状态:"1"代表有效,"0"代表无效

save_sum 历史总游戏币金额
cost_sum 历史总消费游戏币金额
present_sum 历史累计收到赠送金额

6. 返回参数示例
正确示例

Content-type: text/html; charset=utf-8
{
    "ret": 0,
    "balance": 0,
    "gen_balance": 0,
    "first_save": 1,
    "save_amt": 0,
    "gen_expire": 0,
    "expire_info": "",
    "tss_list": [
        {
            "inner_productid": "5299",
            "begintime": "2019-12-17 19:23:03",
            "endtime": "2019-12-24 19:23:03",
            "paychan": "iap",
            "paysubchan": 1,
            "autopaychan": "",
            "autopaysubchan": 0,
             "grandtotal_opendays": 69,
            "grandtotal_presentdays": 0,
            "first_buy_time": "2018-07-26 16:31:16",
            "extend": "",
            "third_channel_info_list": [
                {
                    "pay_channel": "iap",
                    "pay_subchannel": 1,
                    "end_time": "2019-12-18 14:44:21",
                    "productid": "vip.1automonth.qr.iphone",
                    "latest_billno": "",
                    "state": 1
                }
            ]
        }
    ],
    "save_sum": 0,
    "cost_sum": 0,
    "present_sum": 0
}

错误示例

Content-type: text/html; charset=utf-8
{
    "ret":1018,
    "msg":"请先登录"
}

二、 游戏币模式消耗游戏币接口

1. 概述
扣除用户游戏币。如发货失败,必须调用取消支付接口(cancel_pay_m)

2. 扣除游戏币接口URL

URL地址: 

【现网】https://ysdk.qq.com/mpay/pay_m
【沙箱】https://ysdktest.qq.com/mpay/pay_m

3. 请求参数
Cookie参数

参数名称 描述
session_id 用户账户类型,(手Q)session_id ="openid";(微信)session_id = "hy_gameid"; (游客) session_id = "hy_gameid"; (h5游戏) session_id ="openid"
session_type session类型,(手Q)session_type = "kp_actoken";(微信)session_type = "wc_actoken" ;(游客) session_type = "st_dummy"; (h5游戏) session_type ="openkey"
org_loc 需要填写: /mpay/pay_m
appip 来源的第三方应用的服务IP

注意:
cookie里面org_loc的值,需要进行urlencode,如果使用开平提供的 OpenAPI V3.0 SDK 计算签名,org_loc不需要进行urlencode,因为sdk已经在内部做了编码。


请求参数

参数名称 描述
openid 从手Q登录态或微信登录态中获取的openid的值
openkey 手Q登陆时传手Q登陆回调里获取的paytoken值,微信登陆时传微信登陆回调里获取的传access_token值。
appid offerid,offerid即支付结算页面里的应用id,用于支付接口。
ts UNIX时间戳(从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)。
sig 请求串的签名(参考YSDK支付接口签名说明)。
pf 登录获取的pf值
pfkey 登录获取的pfkey值
zoneid 账户分区ID_角色ID。每个应用都有一个分区ID为1的默认分区,分区可以在cpay.qq.com/mpay上自助配置。如果应用选择支持角色,则角色ID接在分区ID号后用"_"连接,角色ID需要进行urlencode。
amt 扣游戏币数量,atn不能为0。
billno  % ^ + 等即可
userip (可选)用户的外网IP
payitem (可选)道具名称。
pay_method (可选)为空或不传,默认优先扣赠送部分;支持取值及其含义如下:

nogen:不扣赠送余额
privalue:优先扣有价

novalue:不扣有价余额
accounttype (可选)帐户类型ID, 基础货币(common) 安全货币(security), 不填默认common
format (可选)json、jsonp_$func。默认json。如果jsonp,前缀为:$func 例如:format=jsonp_sample_pay,返回格式前缀为:sample_pay()
appremark (可选)备注。会写到账户流水。
reason (可选)在米大师注册的原因ID,若有多级原因则以下划线分隔,例如:682_41503015

4. 请求示例

curl "http://IP:端口/v3/r/mpay/

?openid=odFzSjlSIm09-35bPDeHrwzO1rqU&openkey=35_c79HmE4aWyrmrIuq6p6lMelVzG4pqMSNobfqDUON9
SYixKJyVBO4YwGCMURygpYRFU3_7PPJbkkKVXpIRDDHe323Bp_WPDeG-23XVB_QGqI&appid=1450001088&ts=
1596179568&pf=qq_m_qq-1001-android-1001-qq-1106009601-DDF6082D29FDA1CB195BD5F14A0558F5&pfkey=
pfkey&zoneid=1&billno=1578020538&amt=10&sig=5sv4Vt5I70sD+klmmItbC7MEGVo=" -b "session_id=hy_
gameid;session_type=wc_actoken;org_loc=/v3/r/mpay/pay_m"

5. 返回参数

参数名称 描述
ret 返回码 0:成功;1018:登录态校验失败;1001:参数错误;1034错误码 (余额不足);其他:失败
billno 预扣流水号(调接口时有传就返回的业务传的billno),该流水号有效期48小时
balance 预扣后的余额
gen_balance 赠送游戏币数量(balance中赠送游戏币数量)
used_gen_amt 本次扣的赠送币的金额

6. 返回示例
正确示例

 
Content-type: text/html; charset=utf-8
{
    "ret":0,
    "billno":"1578020538",
    "balance":0,
    "gen_balance":0,
    "used_gen_amt":10
}

错误示例

 
Content-type: text/html; charset=utf-8
{
    "ret":1018,
    "msg":"请先登录"
}

三、 游戏币取消支付接口

1. 概述
退款。扣费成功,发货失败后,必须调用本接口。如果不调默认将进行扣费确认。
2. 取消支付接口URL
URL地址:
【现网】https://ysdk.qq.com/mpay/cancel_pay_m
【沙箱】https://ysdktest.qq.com/mpay/cancel_pay_m
3. 请求参数
Cookie参数

参数名称 描述
session_id 用户账户类型,(手Q)session_id ="openid";(微信)session_id = "hy_gameid"; (游客) session_id = "hy_gameid"; (h5游戏) session_id ="openid"
session_type session类型,(手Q)session_type = "kp_actoken";(微信)session_type = "wc_actoken" ;(游客) session_type = "st_dummy"; (h5游戏) session_type ="openkey"
org_loc 需要填写: /mpay/cancel_pay_m
appip 来源的第三方应用的服务IP

注意:cookie里面org_loc的值,需要进行urlencode,如果使用开平提供的 OpenAPI V3.0 SDK 计算签名,org_loc不需要进行urlencode,因为sdk已经在内部做了编码。

请求参数

参数名称 描述
openid 从手Q登录态或微信登录态中获取的openid的值
openkey 手Q登陆时传手Q登陆回调里获取的paytoken值,微信登陆时传微信登陆回调里获取的传access_token值。
appid offerid,offerid即支付结算页面里的应用id,用于支付接口。
ts UNIX时间戳(从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)。
sig 请求串的签名(参考YSDK支付接口签名说明)。
pf 登录获取的pf值
pfkey 登录获取的pfkey值
zoneid 账户分区ID_角色ID。每个应用都有一个分区ID为1的默认分区,分区可以在cpay.qq.com/mpay上自助配置。如果应用选择支持角色,则角色ID接在分区ID号后用"_"连接,角色ID需要进行urlencode。
billno  % ^ + 等即可(有效期48小时)
userip (可选)用户的外网IP
payitem (可选)道具名称。
accounttype (可选)帐户类型ID, 基础货币(common) 安全货币(security), 不填默认common
format (可选)json、jsonp_$func。默认json。如果jsonp,前缀为:$func
appremark (可选)会写到账户流水,长度限制256字节

4. 请求示例

 
curl "http://IP:端口/v3/r/mpay/cancel_pay_m?openid=odFzSjlSIm09-35bPDeHrwzO1rqU&openkey=35_
c79HmE4aWyrmrIuq6p6lMelVzG4pqMSNobfqDUON9SYixKJyVBO4YwGCMURygpYRFU3_7PPJbkkKVXpIRDDHe323Bp_
WPDeG-23XVB_QGqI&appid=1450001088&ts=1596179864&pf=qq_m_qq-1001-android-1001-qq-1106009601-
DDF6082D29FDA1CB195BD5F14A0558F5&pfkey=pfkey&zoneid=1&billno=1578020538&sig=
g7aSHquMMeu2GcmI4sAukxZTOWU=" -b "session_id=hy_gameid;session_type=wc_actoken;org_loc=/v3/r/mpay/cancel_pay_m"
 

5. 返回参数

参数名称 描述
ret 返回码 0:成功;1018:登录态校验失败;1001:参数错误;其他:失败

6. 返回示例
成功示例

Content-type: text/html; charset=utf-8
{
    "ret":0,
    "balance":10,
    "gen_balance":10,
    "billno":"1578020538"
}

失败示例

Content-type: text/html; charset=utf-8
{
    "ret":1018,
    "msg":"请先登录"
}

四、 游戏币直接赠送接口

1. 概述
直接赠接口,可以用于赠送游戏币。赠送的游戏币不参与结算分成。

2. 直接赠送接口URL URL地址:
【现网】https://ysdk.qq.com/mpay/present_m
【沙箱】https://ysdktest.qq.com/mpay/present_m

3. 请求参数
Cookie参数

参数名称 描述
session_id 用户账户类型,(手Q)session_id ="openid";(微信)session_id = "hy_gameid"; (游客) session_id = "hy_gameid"; (h5游戏) session_id ="openid"
session_type session类型,(手Q)session_type = "kp_actoken";(微信)session_type = "wc_actoken" ;(游客) session_type = "st_dummy"; (h5游戏) session_type ="openkey"
org_loc 需要填写:/mpay/present_m
appip 来源的第三方应用的服务IP

注意:cookie里面org_loc的值,需要进行urlencode,如果使用开平提供的 OpenAPI V3.0 SDK 计算签名,org_loc不需要进行urlencode,因为sdk已经在内部做了编码。

请求参数

参数名称 描述
openid 从手Q登录态或微信登录态中获取的openid的值
openkey 手Q登陆时传手Q登陆回调里获取的paytoken值,微信登陆时传微信登陆回调里获取的传access_token值。
appid offerid,offerid即支付结算页面里的应用id,用于支付接口。
ts UNIX时间戳(从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)。
sig 请求串的签名(参考YSDK支付接口签名说明)。
pf 登录获取的pf值
pfkey 登录获取的pfkey值
zoneid 账户分区ID_角色ID。每个应用都有一个分区ID为1的默认分区,分区可以在cpay.qq.com/mpay上自助配置。如果应用选择支持角色,则角色ID接在分区ID号后用"_"连接,角色ID需要进行urlencode。
presenttimes 表示要赠送游戏币的个数,大于零的整数。
userip (可选)用户的外网IP
billno  % ^ + 等即可
format (可选)json、jsonp_$func。默认json。如果jsonp,前缀为:$func
qq_appid 手Q小程序appid,非手Q小程序不传
present_counts 赠送数量,非手Q小程序不传
reason (可选)在米大师注册的赠送原因ID,若有多级原因则以下划线分隔,例如:682_41503015

4. 请求示例

curl "http://IP:端口/v3/r/mpay/present_m?openid=odFzSjlSIm09-35bPDeHrwzO1rqU&openkey=35_
c79HmE4aWyrmrIuq6p6lMelVzG4pqMSNobfqDUON9SYixKJyVBO4YwGCMURygpYRFU3_7PPJbkkKVXpIRDDHe323Bp_
WPDeG-23XVB_QGqI&billno=20200701001&appid=1450001088&ts=1596179267&pf=qq_qq-00000000-android-
00000000-qq-1110547972-800701834503843275&pfkey=72de21cb19d7a9f6f7aa95d6d0d83357&zoneid=
1&presenttimes=10&sig=LyLdH6fxBBOd2M76ApZbJaD7WRM=" -b "session_id=hy_gameid;session_type=
wc_actoken;org_loc=/v3/r/mpay/present_m"

5. 返回参数

参数名称 描述
ret 返回码 0:成功;

其他非0:失败; 常见错误码 https://wiki.midas.qq.com/post/index/1/33/21/0

balance 预扣后的余额

6.返回示例
成功示例

Content-type: text/html; charset=utf-8
{
    "ret":0,   
    "balance":200
}

失败示例

Content-type: text/html; charset=utf-8
{
    "ret":1018,
    "msg":"请先登录"
}

五、 直购模式下单接⼊

1. 概述
直购模式分为服务器下订单和客户端下订单两种。 客户端下订单请参考客户端接入

2. 服务端下单模式
服务器下单模式是指游戏应⽤开发者在游戏中调⽤如下接⼝执⾏订单操作,获取到⽀付服务器返回的订单url
现⽹:https://ysdk.qq.com/mpay/buy_goods_m
沙箱:https://ysdktest.qq.com/mpay/buy_goods_m

3. 请求参数
● Cookie参数

参数名称 描述
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 (注意:如果经过接口机器,需要填写应用签名时使用的URI)
appip (可选)来源的第三方应用的服务IP

注:游客登陆为
session_id="hy_gameid"
session_type="st_dummy"

请求参数

参数名称 描述
openid 从手Q登录态中获取的openid的值
openkey 手Q登陆时传手Q登陆回调里获取的paytoken值,微信登陆时传微信登陆回调里获取的传access_token值。

游客登陆传openkey

appid 应用的唯一ID。可以通过appid查找APP基本信息。
ts UNIX时间戳(从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)。
pf 平台来源,参考公共参数说明。
pfkey 跟平台来源和openkey根据规则生成的一个密钥串。如果是腾讯自研应用固定传递pfkey=”pfkey”
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签名计算
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()

sp_info 可选)传code_id,batch_id,道具模式下单后台传抵扣券ID
以下参数只有走订单中心情况下需要传 其他情况不传
out_trade_no 订单号
goods_tag 新增字段.表示微信订单优惠标记.

透传给微信,格式参考:https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_102&index=2 对应的goods_tag字段

wx_goods_detail 新增字段.表示微信商品详情信息.需要对内容urlencode.(最大长度是encode前的长度)

透传给微信,格式参考:https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_102&index=2 对应的detail字段

4.请求示例

curl "http://IP:端口/v3/r/mpay/buy_goods_m?appid=1450001088&openid=odFzSjlSIm09-35bPDeHrwzO1rqU&openkey=
35_c79HmE4aWyrmrIuq6p6lMelVzG4pqMSNobfqDUON9SYixKJyVBO4YwGCMURygpYRFU3_7PPJbkkKVXpIRDDHe323Bp_WPDeG-23XVB_
QGqI&ts=1596180606&pf=desktop_m_qq-1001-android-73213123-qq-1107898689-0AC547EC71BCCED71594AA1A97177675&pfkey
=cd517e6bb043504da99906e5e99a6c87&zoneid=1&payitem=1711*1*1&goodsmeta=test*test&out_trade_no=20200313001&sig=
4+UTHzcgJwn1bzj8nQO3KQY+WSw=" -b "session_id=hy_gameid;session_type=wc_actoken;org_loc=/v3/r/mpay/buy_goods_m"

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

参数名称 描述
zoneId 大区id
goodsTokenUrl 后台下订单返回的urlPara
resData 代币图标的二进制数据
ysdkExtInfo YSDK透传参数,会在listener中回调给游戏
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;
            }
        }
    }
});

6. 返回参数

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

六、FAQ

1. Q:android版本要求?
A:该支付SDK支持android2.1及以上版本

2. Q:SDK支付完成后,能否通知应用充值数量及是否充值成功?
A:Q点Q币、Q卡是实时到账,财付通渠道、快捷、手机充值卡为非实时到账,所以SDK也无法实时确定发货成功。而且SDK回调通知应用购买数量及是否成功存在安全隐患,因为这个是本地调用。应用可以通过调用后台API向服务器发起请求查询用户余额。

3. Q:调用SDK时pf和pfkey如何确定?
A:pf为应用侧构造传递给SDK。pf的格式为平台标识信息:平台-渠道-系统运行平台-业务自定义。渠道表示应用发布的渠道:如应用宝、豌豆荚等,用数字表示(具体如何表示业务侧定义,SDK侧不关心)。系统运行平目前支持android、ios
例如:
手Q:openmobile_android-2001-android-xxxx
pfKey为应用所在平台下方,SDK侧不关心,只做透传处理。对应自研应用后台对pfKey不 做校验,应用可以传递为pfKey = “pfKey”。对于非自研应用后台强校验,应用需要从开放平台侧获取传递给SDK。
4. Q:什么是基础货币和安全货币?
A:基础货币:普通支付应用场景使用,充值基础货币后,用于普通购买行为。满足常用的支付需求。
安全货币:如果应用有特殊要求,例如:要求寄售道具场景(玩家之间的道具买卖)只能用特殊的货币进行交易,那么可以使用安全货币,区别于基础货币,安全货币也用于购买道具。(可选货币)

5. Q:支付时为什么会登录态过期?
A:支付的登录态时效性要求比较高,因此需要应用拉起支付时,先更新下登录态,这样能保证支付过程中尽可能出现少的登录态失效。如果用户在支付页面停留过长时间,支付时提示登录态过期,支付会回调应用,应用应该再重新获取用户的登录态再进行支付。如果应用在接入联调时一直出现登录态过期,支付的log中出现错误码1018,那就说明传递的参数是有误的,请确认sessionId,sessionType,userId和userKey的正确性,具体请参看调用接口时的参数说明。如果还提示1018错误,请确认应用在微信,手Q平台上申请的ID和Key 和支付接入时配置的一致。

6. Q:道具直购和购买游戏币有什么区别
A:购买游戏币需要对货币进行托管,而道具则不需要托管。购买游戏币由腾讯支付服务端负责发货。购买道具需要应用侧提供发货回调接口,当腾讯服务端扣款后回调应用的发货接口。

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

Copyright © 1998 - 2021 Tencent. All Rights Reserved.

腾讯公司 版权所有

返回顶部