如何获取Google Play订阅付款

时间:2019-09-12 19:02:59

标签: java android android-billing

我尝试使用Google Play订阅计费。代码正在付款。但是,我想尝试一次付款成功,想要赶上付款成本,时间(每月,每年),并发送带有ID或令牌的php API。我怎样才能做到这一点。

我尝试覆盖 onPurchasesUpdated

public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) {

    }  

但是没有用。我试过敬酒。但是方法不起作用。
 我可以使用此方法执行此操作吗?

 public void openPayment(final Context mContext){
        final List<String> skuList = new ArrayList<>();

        //valueof1MonthMoney,valueof3MonthsMoney,valueof6MonthsMoney,valueof1YearMoney;
        skuList.add("com.yeniasya.enewspaper.subscription.onemonth");
        skuList.add("com.yeniasya.enewspaper.subscription.threemonth");
        skuList.add("com.yeniasya.enewspaper.subscription.sixmonth");
        skuList.add("com.yeniasya.enewspaper.subscription.oneyear");

        SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();



        final AlertDialog.Builder mBuilder = new AlertDialog.Builder(mContext,android.R.style.Theme_DeviceDefault_Light_NoActionBar_Fullscreen);
        LayoutInflater li = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View mView = li.inflate(R.layout.popup_payment, null);
        ImageView imvClose=(ImageView)mView.findViewById(R.id.imvClose);
        final TextView tv1MonthMoney = (TextView) mView.findViewById(R.id.tv1MonthMoney);
        final TextView tv3MonthsMoney = (TextView) mView.findViewById(R.id.tv3MonthsMoney);
        final TextView tv6MonthsMoney = (TextView) mView.findViewById(R.id.tv6MonthsMoney);
        final TextView tv1YearMoney = (TextView) mView.findViewById(R.id.tv1YearMoney);
        final TextView tvOpenPrivacy = (TextView) mView.findViewById(R.id.tvOpenPrivacy);
        final LinearLayout linLay1Year = (LinearLayout) mView.findViewById(R.id.linLay1Year);
        final LinearLayout linLay6Months = (LinearLayout) mView.findViewById(R.id.linLay6Months);
        final LinearLayout linLay3Months = (LinearLayout) mView.findViewById(R.id.linLay3Months);
        final LinearLayout linLay1Month = (LinearLayout) mView.findViewById(R.id.linLay1Month);
        mBuilder.setView(mView);
        dialog = mBuilder.create();
        dialog.setCanceledOnTouchOutside(false);
        final SkuDetails[] s = new SkuDetails[4];
        params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS);
        billingClient.querySkuDetailsAsync(params.build(),
                new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(BillingResult billingResult,
                                                     List<SkuDetails> skuDetailsList) {
                        // Process the result.
                        s[0] =skuDetailsList.get(0);
                        s[1] =skuDetailsList.get(1);
                        s[2] =skuDetailsList.get(2);
                        s[3] =skuDetailsList.get(3);

                        //  Toast.makeText(mContext, "listeye girdi", Toast.LENGTH_SHORT).show();
                        try {
                            tv1MonthMoney.setText(skuDetailsList.get(0).getPrice());
                            tv1YearMoney.setText(skuDetailsList.get(1).getPrice());
                            tv6MonthsMoney.setText(skuDetailsList.get(2).getPrice());
                            tv3MonthsMoney.setText(skuDetailsList.get(3).getPrice());

                            /*    if(skuDetailsList.get(i).getSku().equals("com.yeniasya.enewspaper.subscription.onemonth"));
                                tv1MonthMoney.setText(skuDetailsList.get(i).getPrice()+"");
                                if(skuDetailsList.get(i).getSku().equals("com.yeniasya.enewspaper.subscription.threemonth"));
                                tv3MonthsMoney.setText(skuDetailsList.get(i).getPrice()+"");
                                if(skuDetailsList.get(i).getSku().equals("com.yeniasya.enewspaper.subscription.sixmonth"));
                                tv6MonthsMoney.setText(skuDetailsList.get(i).getPrice()+"");
                                if(skuDetailsList.get(i).getSku().equals("com.yeniasya.enewspaper.subscription.oneyear"));
                                tv1YearMoney.setText(skuDetailsList.get(i).getPrice()+"");  */



                            // Toast.makeText(mContext, skuDetailsList.get(i).getSku()+"", Toast.LENGTH_SHORT).show();


                        }catch (Exception e){

                        }



                    }
                });







        dialog.show();
        imvClose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        linLay1Year.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                takeMoney(s[1]);
            }
        });
        linLay1Month.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                takeMoney(s[0]);

            }
        });
        linLay3Months.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                takeMoney(s[3]);

            }
        });
        linLay6Months.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                takeMoney(s[2]);
            }
        });

        tvOpenPrivacy.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    Intent i = new Intent(Intent.ACTION_VIEW);
                    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    i.setData(Uri.parse(mcontext.getString(R.string.PrivacyPolicyUrl)));
                    mcontext.startActivity(i);}catch (Exception e){}
            }
        });

    }


    private void takeMoney(SkuDetails skuDetails){
        BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                .setSkuDetails(skuDetails)
                .build();
        billingClient.launchBillingFlow(MainActivity.mActivity,flowParams);
        // Toast.makeText(mContext, "bastın3", Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) {

    }

0 个答案:

没有答案