游戏SDK支付更新时间: 2025-02-24 14:19:00
一、前提条件
二、功能说明
调用支付接口,支持购买消耗型商品、非消耗型商品及按金额购买商品。
- 消耗型商品:使用一次后即消耗掉,随使用减少,需要再次购买的商品。例:游戏货币,游戏道具等。
- 非消耗型商品:一次性购买,永久拥有,无需消耗。例:游戏中额外的游戏关卡、应用中无时限的高级会员等。
- 按金额购买:自行设置购买金额,相比前两者更加灵活。
1、接口说明
/**
* 支付接口
* @param activity 游戏内activity
* @param buyInfo 订单信息
* @param listener 支付回调
* @return 接口调用结果
*/
public int miUniPay(final Activity activity, final MiBuyInfo buyInfo, final OnPayProcessListener listener)
2、支付回调
public interface OnPayProcessListener {
/**
* @param code 支付结果
*/
void finishPayProcess(int code);
}
复制
3、支付结果
结果 | 值 | 说明 |
MI_XIAOMI_PAYMENT_SUCCESS | 0 | 支付成功 |
MI_XIAOMI_PAYMENT_ERROR_PAY_FAILURE | -18003 | 支付失败 注:返回此code不一定是真正意义上的失败,还包含用户取消付款及多种其他场景,详询客服 |
MI_XIAOMI_PAYMENT_ERROR_PAY_CANCEL | -18004 | 支付取消 |
MI_XIAOMI_PAYMENT_ERROR_ACTION_EXECUTED | -18006 | 支付操作正在进行中 |
其它 | 登录失败 |
4、订单信息MiBuyInfo
参数 | 类型 | 说明 |
cpOrderId | String | 游戏侧订单号 |
productCode | String | 计费点,按金额付费请勿设置 |
count | int | 商品数量,按金额付费请勿设置 |
amount | int | 金额,单位元,按计费点付费请勿设置 |
cpUserInfo | 计费点 | 游戏信息 |
extraInfo | 计费点 | 自定义信息 |
三、调用示例
1、按金额付费
MiBuyInfo miBuyInfo = new MiBuyInfo();
miBuyInfo.setCpOrderId(UUID.randomUUID().toString()); //订单号唯一(不为空)
miBuyInfo.setCpUserInfo("cpUserInfo"); //此参数在用户支付成功后会透传给CP的服务器
miBuyInfo.setAmount(10); //必须是大于1的整数,10代表10米币,即10元人民币(不为空)
MiCommplatform.getInstance().miUniPay(activity, miBuyInfo,
new OnPayProcessListener() {
@Override
public void finishPayProcess(int code) {
switch (code) {
case MiErrorCode.MI_XIAOMI_PAYMENT_SUCCESS: //购买成功
break;
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_PAY_CANCEL: //取消购买
break;
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_PAY_FAILURE: //购买失败
break;
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_ACTION_EXECUTED: //操作正在进行中
break;
default: //购买失败
break;
}
}
});
复制
2、按计费点付费
MiBuyInfo miBuyInfo = new MiBuyInfo();
miBuyInfo.setCpOrderId( UUID.randomUUID().toString() );//订单号唯一(不为空)
miBuyInfo.setProductCode( "productCode");//商品代码,开发者申请获得(不为空)
miBuyInfo.setCount(3);//购买数量(商品数量最大9999,最小1)(不为空)
MiCommplatform.getInstance().miUniPay( activity, miBuyInfo,
new OnPayProcessListener()
{
@Override
public void finishPayProcess( int code ) {
switch( code ) {
case MiErrorCode.MI_XIAOMI_PAYMENT_SUCCESS://购买成功,请处理发货
break;
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_PAY_CANCEL://取消购买
break;
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_PAY_FAILURE://购买失败
break;
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_ACTION_EXECUTED://操作正在执行
break;
default://购买失败
break;
}
}
});