欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

视频直播软件开发:Android客户端接入谷歌支付的实现流程

程序员文章站 2022-05-03 09:48:23
...

在进行视频直播软件开发时,开发人员常会应客户要求为直播软件增加一些功能,比如开发幸运礼物功能、增加微博登录功能或接入国内不常用的谷歌支付功能等,那么具体我们应该怎么做呢?本篇文章就来讲讲直播软件的Android客户端接入谷歌支付的实现流程。

一、首先在gradle中添加相关依赖,如下所示:

compile 'com.android.billingclient:billing:1.1'

1、初始化相关变量

private Context mContext;//上下文对象
private CoinBean mBean;//所购商品信息类
private googlePayCallback mGooglePayCallback;//支付回调
private BillingClient mBillingClient;
public GooglePayTask(Context context , CoinBean bean, googlePayCallback callback) {
    mContext = context;
    mBean = bean;
    mGooglePayCallback = callback; mBillingClient=BillingClient.newBuilder(mContext).setListener(this).build();
}

2、连接到谷歌市场,代码如下

mBillingClient.startConnection(new BillingClientStateListener() {
    @Override
    public void onBillingSetupFinished(int responseCode) {
        L.e("googlePay","连接到谷歌市场");
    }
    @Override
    public void onBillingServiceDisconnected() {
	//无法连接到Google Play	
        ToastUtil.show(WordUtil.getString(R.string.cannot_conn_google));
        if (mGooglePayCallback!=null){
            mGooglePayCallback.onServiceDissconnected();
        }
    }
});

3、当视频直播软件连接到谷歌市场成功后,此时需要查询app内商品信息是否存在,具体代码如下

List<String> skuList = new ArrayList<>();
        L.e("googlePlay",mBean.getId());
        skuList.add(mBean.getId());//要查询的商品id
        SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
        params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
        mBillingClient.querySkuDetailsAsync(params.build(),
                new SkuDetailsResponseListener() {
            @Override
            public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
                //L.e("googlePay","查询商品信息错误,code = "+responseCode+skuDetailsList);
                if (responseCode== BillingClient.BillingResponse.OK
                        && skuDetailsList != null){
                    L.e("googlePay","存在商品信息");
                    ToastUtil.show("存在商品信息");
                }else {
                    L.e("googlePay","查询商品信息错误,code = "+responseCode);
                    if (mGooglePayCallback!=null){
                        mGooglePayCallback.onFailed();
                        release();
                    }
                }
            }
        });

4、查询到商品信息存在,此时根据上一步查询到的商品的id调起支付。

BillingFlowParams flowParams = BillingFlowParams.newBuilder()
        .setSku(mBean.getId())//商品id
        .setType(BillingClient.SkuType.INAPP)
        .build();
int responseCode = mBillingClient.launchBillingFlow(((MyCoinActivity)mContext),flowParams);

监听到支付成功的回调后,请求相关接口,走服务端支付成功的回调,增加购买到的相应商品,此时还需要通过BillingClient的consumeAsync方法把购买的商品消耗掉,此时整个谷歌支付购买商品流程才真正结束。
以上便是谷歌支付接入到视频直播软件android客户端的相关流程,其他配置参考官方文档即可。更多与视频直播软件开发相关的干货文章会在以后逐渐放出,敬请期待,需要的朋友请关注我。
声明:文章为原创内容,转载请注明CSDN链接及作者