• Google Pay最新版集成步骤


    Google Pay 官方集成链接: 点这里

    第一步: 在模块APP添加谷歌pay依赖库:

    //谷歌支付
        implementation 'com.google.android.gms:play-services-wallet:19.0.0'
        implementation 'com.android.billingclient:billing:5.0.0'
    
    • 1
    • 2
    • 3

    第二步: 在发起支付的Activity初始化GoogleBillingManager

    //建立连接
            GoogleBillingManager.getInstance().createClient(this);
    
    • 1
    • 2

    在onDestory()中释放连接

    //结束连接
            GoogleBillingManager.getInstance().endConn();
    
    • 1
    • 2

    在页面点击某个按钮发起支付

    billProxy.onQuerySkuDetailsAsync(billingListenerImpl,BillingClient.ProductType.INAPP,infoBean.getOut_trade_goodsid());
    
    • 1

    第一个参数:billingListenerImpl: 支付监听回调
    第二个参数: BillingClient.ProductType.INAPP 你后台如果是一次性支付传此参数, 如果是订阅产品就传BillingClient.ProductType.SUBS
    第三个参数: 在谷歌后台创建产品对应的ID

    onQuerySkuDetailsAsync方法实现如下:

    public void onQuerySkuDetailsAsync(GoogleBillingListener billingListener, String productType, String... productIds) {
            if (null == productIds || productIds.length == 0
                    || !GoogleBillingManager.getInstance().isReady()
            ) {
                Log.d(TAG,"onQuerySkuDetailsAsync.return.isReady : "+GoogleBillingManager.getInstance().isReady());
                return;
            }
    
            List<QueryProductDetailsParams.Product> skuList = new ArrayList<>();
            for (String productId : productIds) {
                QueryProductDetailsParams.Product product = QueryProductDetailsParams
                        .Product.newBuilder()
                        .setProductId(productId)
                        .setProductType(productType)
                        .build();
                //添加对应的 产品id 去查询详情
                skuList.add(product);
    
                Log.d(TAG, "onQuerySkuDetailsAsync.productId : "+productId+" , productType : "+productType);
            }
    
            QueryProductDetailsParams params = QueryProductDetailsParams
                    .newBuilder()
                    .setProductList(skuList)
                    .build();
    
            GoogleBillingManager.getInstance().getBillingClient().queryProductDetailsAsync(params, (billingResult, list) -> {
    
                Log.d(TAG, "queryProductDetailsAsync.getDebugMessage : "+billingResult.getDebugMessage()) ;
    
                if (BillingClient.BillingResponseCode.OK == billingResult.getResponseCode()) {
    
                    if (null != billingListener) {
                        billingListener.onProductDetailsSus(list);
                    }
                } else {
                    Log.e("TAG", "code : " + billingResult.getResponseCode() + " message : " + billingResult.getDebugMessage());
                }
            });
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    以上函数根据ID查询谷歌产品是否存在, 存在的话就调用Google Pay拉起支付

    //响应code 码
            BillingResult billingResult = GoogleBillingManager.getInstance().getBillingClient().launchBillingFlow(activity, billingFlowParams);
    
    • 1
    • 2

    执行到这里, 手机APP会拉起Google Pay的支付页面, 当用户完成支付后回调GoogleBillingListener的onProductDetailsSus方法.

    public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
    
    • 1

    在这里我们调用谷歌支付核心订单

    //核销订单
                            billProxy.onConsumeAsync(this, purchase);
    
    • 1
    • 2

    同时调用后台接口, 通知后台用户购买此商品支付成功.

    注意事项

    1. 谷歌后台需先添加谷歌测试账号
    2. 调试支付是需要先将APP打包成aab后上传谷歌pay后台, 通过测试连接下载的APP才能调起谷歌支付.
    3. 谷歌支付中涉及到的相关代码可点这里下载
  • 相关阅读:
    2022年整理LeetCode最新刷题攻略分享(附中文详细题解)
    (附源码)springboot流浪动物救助系统 毕业设计 180920
    gdb命令学习笔记
    WuThreat身份安全云-TVD每日漏洞情报-2023-10-16
    vue实现:聊天记录,下拉加载下一页数据,并让页面停留在原位置
    海外媒体发稿:葡萄牙-实现高效媒体软文发稿计划-大舍传媒
    《Vue入门到精通之webpack详解》
    Thymeleaf语法基础
    毕业后做了两年软件测试,只会功能测试,难道真的要去工地搬砖或者去做销售吗?
    最频繁被问到的SQL面试题
  • 原文地址:https://blog.csdn.net/wqhjfree/article/details/128210228