Cocos2dx-Lua游戏接入GooglePlay SDK支付

最近项目中需要接入海外SDK,进行支付,故选择Google Play支付。

1.首先要注意的是,Google官方控制台的项目创建和配置,配置出现问题的话会导致,支付调不起来。(配置教程,网上很多暂时就不搞了)

2.创建好项目不要忘了设置测试账号,测试账号很重要,测试账号最好是绑定国外的卡。如果是绑定中国大陆的信用卡,可能测试的时候你会发现,你这个账号好像并不能使用,因为谷歌在中国是不可以进行支付的。(原因是你的卡会有地址信息展示,国内的不可以,你可以试着改到国外)

3.谷歌账号的地区,一定要是国外的,中国不允许谷歌支付,会出现 code码为3 的情况(也可以切换地区)

4.目前谷歌官方推荐的是google play结算  方法,(网上很多都是之前的那种老方法) 

下边是调用支付时返回的code码,看这个code码对比自己的错误。2020-12-04说下 code码为6 的情况,一般是由于网络原因。先检测网络是否翻墙,再Google Play商店是否能正常打开

//BILLING_RESPONSE_RESULT_OK	0	成功
//BILLING_RESPONSE_RESULT_USER_CANCELED	1	用户按上一步或取消对话框
//BILLING_RESPONSE_RESULT_SERVICE_UNAVAILABLE	2	网络连接断开
//BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE	3	所请求的类型不支持 Google Play 结算服务 AIDL 版本
//BILLING_RESPONSE_RESULT_ITEM_UNAVAILABLE	4	请求的商品已不再出售
//BILLING_RESPONSE_RESULT_DEVELOPER_ERROR	5	提供给 API 的参数无效。此错误也可能说明应用未针对 Google Play 结算服务正确签名或设置,或者在其清单中缺少必要的权限。
//BILLING_RESPONSE_RESULT_ERROR	6	API 操作期间出现严重错误
//BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED	7	未能购买,因为已经拥有此商品
//BILLING_RESPONSE_RESULT_ITEM_NOT_OWNED	8	未能消费,因为尚未拥有此商品

5.弹出  “无法购买您想要的商品” ,“此版本的应用未配置为通过google play结算”  这种错误提示,原因有:一、由于 versionCode版本 与Google后台上传的安装包的版本不一致(这个千万要注意,上传的包和你本地测试的那个包不一致就会出现问题),二、签名不一致(部分人喜欢让谷歌来管理自己的证书,好多就会导致本地打包测试出现错误,将自己修改后的东西重新上传下包,以后再进行测试就不需要了)

6.支付验证时(支付 验证 json文件和谷歌离线推送的json文件是两个不同的json文件),需要将 Server account 所对应的邮件添加到测试组上

下面我就贴下支付管理类的代码,

public class AppGooglePay implements PurchasesUpdatedListener {

    private static String TAG = "AppGooglePay";
    //支付权限 key 
    private static final String BASE64_PUBLIC_KEY = "改为你自己的值BASE64";
    //未初始化标记
    public static final int BILLING_MANAGER_NOT_INIT  = -1;
    /*客户端*/
    private BillingClient billingClient;

    private final Activity mActivity;

    //监听
    private final BillingUpdatesListener mBillingUpdatesListener;

    //是否连接成功
    private boolean mIsServiceConnected;

    //客户端当前状态
    private @BillingClient.BillingResponseCode
    int curBillingClientResponseCode = BillingClient.BillingResponseCode.SERVICE_DISCONNECTED;

    //商品列表
    private final List<Purchase> PurchaseList = new ArrayList<>();

    //消耗令牌
    private Set<String> mTokensToBeConsumed;

    //监听 接口
    public interface BillingUpdatesListener {
        void onBillingClientSetupFinished();
        void onConsumeFinished(String token, @BillingClient.BillingResponseCode int result);
        void onPurchasesUpdated(List<Purchase> purchases);
        void onFailedHandle(@BillingClient.BillingResponseCode int result);
    }

    /*
    *   初始化
    * */
    public AppGooglePay(Activity activity, final BillingUpdatesListener updatesListener){
        mActivity = activity;
        mBillingUpdatesListener = updatesListener;
        billingClient = BillingClient.newBuilder(mActivity).enablePendingPurchases().setListener(this).build();
        Log.d(TAG, "开始设置信息");
        startServiceConnection(new Runnable() { //连接 GooglePlay服务器
            @Override
            public void run() {
        
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值