前言
之前写过一篇通过AIDL方式集成Google支付
的文章,如有需要,可以去看看。但是,不建议使用。为啥呢?,因为最近看Google文档中说已经不再支持AIDL的方式了。所以今天就来说说新的Google支付继承方式,当然,我们这里只说集成方式,配置可以看Google(应用内支付)官方文档。
准备工作
要集成Google支付的准备工作有哪些呢?
- 1、手机上安装__Google服务__(当然是针对国内的用户,国外的相信大部分都有Google服务);
- 2、一个绑定信用卡的Google账号;
- 3、Google play客户端;
- 4、Google play console(用于配置应用内商品信息);
首先
上面的准备工作都做好了之后需要干什么呢?当然是在Google play console上配置相关应用和商品信息了,至于如何配置具体可以参考Google支付配置。
-
1、支付流程说明
关于Google支付的流程说明:
1>前提条件1、检查你的包名和签名文件是否和Google Console 上面上传的apk包是否一致 2、检查版本号是否和Google console发布的apk版本是否一致 3、检查你是否可以购买,是否绑定了银行卡,手机支不支持Google支付,手机是否有Google服务
2>支付流程
1、第一步,初始化Google支付 2、第二步,初始化成功后调用查询购买的商品操作,查询成功调用消耗操作,防止不能购买的情 况发生 3、第三步,生成订单号进行购买操作 4、第四步,购买成功后再次调用一次消耗操作(为了下次购买可以成功) 5、第五步,拿到Google支付返回的相关信息,在服务器进行验证操作。 6、第六步,服务器拿到你上传的相关信息和Google支付进行交互验证,验证成功后Google发货,服务器给你返回相关信息
-
2、集成工作
首先在你的项目的build.gradle文件中加入Google支付的在线依赖implementation 'com.android.billingclient:billing:2.1.0'
注意:我用的时候版本是2.1.0,你可以去官网查查最新的版本
其次
上面是接入的前提条件,下面看具体代码
public class GooglePlayHelper {
private static final String TAG = GooglePlayHelper.class.getSimpleName();
private static final int GAME_ORDER_ID=0x01;
//订单号
private String mOrderID;
//商品集合
private WeakReference<Activity> mActivityRef;
//回调
private OnRechargeStateListener mListener;
//商品
private String mSku;
private String goods_number;// 商品ID,游戏提供
private BillingClient mBillingClient;
private int mPayTest;
private String mConsume = "0";
GooglePlayHelper(Activity activity,
String goods_number, int mPayTest,
String sku, OnRechargeStateListener mListener) {
this.mActivityRef = new WeakReference<>(activity);
this.goods_number = goods_number;
this.mSku = sku;
this.mPayTest = mPayTest;
this.mListener = mListener;
}
/**
* 初始化
*/
void init() {
mBillingClient = BillingClient.newBuilder(mActivityRef.get())
.setListener(mPurchasesUpdatedListener)
.enablePendingPurchases()
.build();
if (!mBillingClient.isReady()) {
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (b