开始客户端的开发之前,需要以下准备工作:
1,在Google Play后台配置你的应用内商品:
图片里面的礼物1,礼物2后面马赛克的是商品的sku,类似于唯一的商品ID,需要记住,后面需要用到
2,将你的Google Play账号加入测试账号,这样才能充钱又不真扣你钱。
做好以上的准备工作,就可以开始客户端的开发了。
引入Google Billing
implementation 'com.android.billingclient:billing:2.0.3'
添加权限
<uses-permission android:name="com.android.vending.BILLING"/>
初始化Google Pay
BillingClient mBillingClient =BillingClient.newBuilder(mActivity)
.enablePendingPurchases()
.setListener(this)
.build();
开始连接GooglePlay
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
}
}
@Override
public void onBillingServiceDisconnected() {
}
});
从Google Play拉取刚刚我们在后台配置的商品列表,这里需要我们配置的商品sku
ListskuList =new ArrayList<> ();
skuList.add(“你自定义商品的sku1”);
skuList.add(“你自定义商品的sku2”);
SkuDetailsParams.Builder params =SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
mBillingClient.querySkuDetailsAsync(params.build() ,new SkuDetailsResponseListener(){
@Override
public void onSkuDetailsResponse(BillingResult billingResult,ListskuDetailsList) {
//这里会拿到一个SkuDetails的列表
}
});
开始购买商品,执行到这一步,就会出现Google pay的弹窗,用户完成支付
BillingFlowParams params =BillingFlowParams.newBuilder()
.setSkuDetails(skuDetails) //这里的 skuDetails是上面拉取到的
.build();
mBillingClient.launchBillingFlow(mActivity ,params);
用户完成支付后,Google Pay会回调onPurchasesUpdated方法
@Override
public void onPurchasesUpdated(BillingResult billingResult,@Nullable Listpurchases) {
if(billingResult.getResponseCode() ==BillingClient.BillingResponseCode.OK){ //支付成功
}else if(billingResult.getResponseCode() ==BillingClient.BillingResponseCode.USER_CANCELED){ //支付被用户取消
}else { //支付异常
}
}
对于订阅类型的商品,到这一步就完成了,但是对于一次性的商品,用户购买成功后,我们还需要确认交易,否则Google会3个工作日内退款
ConsumeParams params =ConsumeParams.newBuilder()
.setPurchaseToken(token) //这里的token,在 onPurchasesUpdated返回,是交易的唯一订单号
.build();
mBillingClient.consumeAsync(params,new ConsumeResponseListener() {
@Override
public void onConsumeResponse(BillingResult billingResult,String purchaseToken) {
}
});
以上,Google Pay的Android 客户端开发就完成了,如果有问题欢迎骚扰
微信/电话:13129593727