首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google Play付款将在72小时后退款

Google Play付款将在72小时后退款
EN

Stack Overflow用户
提问于 2020-10-02 12:55:55
回答 1查看 101关注 0票数 0

我正在做一个新的android项目,我想在我的应用程序中添加应用内购买。当我添加代码时,购买的商品会在72小时后返回给用户。我想我跳过了一些东西。

这是我的代码

代码语言:javascript
运行
复制
public class InAppActivity extends AppCompatActivity implements PurchasesUpdatedListener {
private Button coinPack1;
private Button coinPack2;
private Button coinPack3;
private Button coinPack4;

private BillingClient billingClient;
private List<SkuDetails> inAPPDetailList = new ArrayList<>();
private List<SkuDetails> inAPPSubs = new ArrayList<>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_in_app);
    coinPack1 = (Button) findViewById(R.id.coinPack1);
    coinPack2 = (Button) findViewById(R.id.coinPack2);
    coinPack3 = (Button) findViewById(R.id.coinPack3);
    coinPack4 = (Button) findViewById(R.id.coinPack4);

    billingClient = BillingClient.newBuilder(this).enablePendingPurchases().setListener(this).build();
    billingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(@NonNull BillingResult billingResult) {

            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK){
                checkState(true);

                List<String> skuListInAPP = new ArrayList<>();
                skuListInAPP.add("coin_pack");
                skuListInAPP.add("coin_pack2");
                skuListInAPP.add("coin_pack3");
                skuListInAPP.add("coin_pack4");
                SkuDetailsParams.Builder paramsInApp = SkuDetailsParams.newBuilder();
                paramsInApp.setSkusList(skuListInAPP).setType(BillingClient.SkuType.INAPP);
                billingClient.querySkuDetailsAsync(paramsInApp.build(), new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(@NonNull BillingResult billingResult, @Nullable List<SkuDetails> list) {
                        inAPPDetailList = list;
                    }
                });

                List<String> skuListSubs = new ArrayList<>();
                skuListSubs.add("ads_free");
                SkuDetailsParams.Builder paramsSubs = SkuDetailsParams.newBuilder();
                paramsSubs.setSkusList(skuListSubs);
                paramsSubs.setSkusList(skuListSubs).setType(BillingClient.SkuType.SUBS);
                billingClient.querySkuDetailsAsync(paramsSubs.build(), new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(@NonNull BillingResult billingResult, @Nullable List<SkuDetails> list) {
                        inAPPSubs = list;
                    }
                });


            }else {
                checkState(false);
                Toast.makeText(InAppActivity.this, "Beklenmedik Bir Hata oluştu", Toast.LENGTH_SHORT).show();
            }

        }

        @Override
        public void onBillingServiceDisconnected() {
            checkState(false);
            Toast.makeText(InAppActivity.this, "Beklenmedik Bir Hata Oluştu", Toast.LENGTH_SHORT).show();
        }
    });


    coinPack1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder().setSkuDetails(inAPPDetailList.get(0)).build();
            billingClient.launchBillingFlow(InAppActivity.this,billingFlowParams);

        }
    });

    coinPack2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder().setSkuDetails(inAPPDetailList.get(1)).build();
            billingClient.launchBillingFlow(InAppActivity.this,billingFlowParams);

        }
    });

    coinPack3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder().setSkuDetails(inAPPDetailList.get(2)).build();
            billingClient.launchBillingFlow(InAppActivity.this,billingFlowParams);


        }
    });

    coinPack4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder().setSkuDetails(inAPPDetailList.get(3)).build();
            billingClient.launchBillingFlow(InAppActivity.this,billingFlowParams);

        }
    });

}




private void checkState(Boolean situation){
    coinPack1.setEnabled(situation);
    coinPack2.setEnabled(situation);
    coinPack3.setEnabled(situation);
    coinPack4.setEnabled(situation);
}
@Override
public void onPurchasesUpdated(@NonNull BillingResult billingResult, @Nullable List<Purchase> list) {

    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && list!= null){

        for (Purchase purchase : list){

            if(!purchase.isAcknowledged()){
                AcknowledgePurchaseParams.newBuilder()
                        .setPurchaseToken(purchase.getPurchaseToken())
                        .build();
            }
            if (purchase.getSku().equals("coin_pack")){

                Constant.TOTAL_COINS = Constant.TOTAL_COINS + 100;
                Utils.UpdateCoin(getApplicationContext(), String.valueOf(Constant.TOTAL_COINS));
                Toast.makeText(this, "Satın Alma Başarılı 100 Jeton. Destekleriniz için teşekkür ederiz", Toast.LENGTH_SHORT).show();


            }

            if (purchase.getSku().equals("coin_pack2")){
                Constant.TOTAL_COINS = Constant.TOTAL_COINS + 200;
                Utils.UpdateCoin(getApplicationContext(), String.valueOf(Constant.TOTAL_COINS));
                Toast.makeText(this, "Satın Alma Başarılı 200 Jeton. Destekleriniz için teşekkür ederiz", Toast.LENGTH_SHORT).show();

            }
            if (purchase.getSku().equals("coin_pack3")){
                Constant.TOTAL_COINS = Constant.TOTAL_COINS + 400;
                Utils.UpdateCoin(getApplicationContext(), String.valueOf(Constant.TOTAL_COINS));
                Toast.makeText(this, "Satın Alma Başarılı 400 Jeton. Destekleriniz için teşekkür ederiz", Toast.LENGTH_SHORT).show();

            }
            if (purchase.getSku().equals("coin_pack4")){
                Constant.TOTAL_COINS = Constant.TOTAL_COINS + 600;
                Utils.UpdateCoin(getApplicationContext(), String.valueOf(Constant.TOTAL_COINS));
                Toast.makeText(this, "Satın Alma Başarılı 600 Jeton. Destekleriniz için teşekkür ederiz", Toast.LENGTH_SHORT).show();

            }
        }


    }
    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED){

        Toast.makeText(getApplicationContext(), "Ödeme İptal Edildi!!!", Toast.LENGTH_SHORT).show();

    }


}

将令牌添加到用户的账户中,测试支付时不会出现任何问题。非常感谢:)

EN

Stack Overflow用户

发布于 2020-10-02 23:36:24

如果您确认部件不完整,未调用billingClient.acknowledgePurchase(),则会退款:

你需要这样的东西:

代码语言:javascript
运行
复制
        if (!purchase.isAcknowledged()) {
                        AcknowledgePurchaseParams acknowledgePurchaseParams =
                                AcknowledgePurchaseParams.newBuilder()
                                        .setPurchaseToken(purchase.getPurchaseToken())
                                        .build();
                        billingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {
                            @Override
                            public void onAcknowledgePurchaseResponse(BillingResult billingResult){ 
                               // 
                             }
                        });
        }
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64166340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档