Java Google Play付款在72小时后退款

Java Google Play付款在72小时后退款,java,android,android-studio,in-app-billing,play-billing-library,Java,Android,Android Studio,In App Billing,Play Billing Library,我正在进行一个新的android项目,我想在我的应用程序中添加应用程序内购买。当我添加代码时,72小时后将购买的物品返回给用户。我想我跳过了什么 这是我的密码 public class InAppActivity extends AppCompatActivity implements PurchasesUpdatedListener { private Button coinPack1; private Button coinPack2; private Button coinPack3; p

我正在进行一个新的android项目,我想在我的应用程序中添加应用程序内购买。当我添加代码时,72小时后将购买的物品返回给用户。我想我跳过了什么

这是我的密码

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();

    }


}
公共类InAppActivity扩展AppCompativity实现PurchasesUpdatedListener{
专用按钮coinPack1;
专用按钮coinPack2;
专用按钮coinPack3;
专用按钮coinPack4;
私人账单客户账单客户;
私有列表inAPPDetailList=newarraylist();
inAPPSubs中的私有列表=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(应用程序中的R.layout.activity_);
coinPack1=(按钮)findViewById(R.id.coinPack1);
coinPack2=(按钮)findViewById(R.id.coinPack2);
coinPack3=(按钮)findViewById(R.id.coinPack3);
coinPack4=(按钮)findViewById(R.id.coinPack4);
billingClient=billingClient.newBuilder(this.enablePendingPurchases().setListener(this.build());
startConnection(新的BillingClientStateListener()){
@凌驾
公共无效onBillingSetupFinished(@NonNull BillingResult BillingResult){
if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK){
检查状态(true);
List skuListInAPP=new ArrayList();
skuListInAPP.添加(“硬币包装”);
skuListInAPP.添加(“硬币包装2”);
skuListInAPP.add(“硬币包装3”);
skuListInAPP.add(“硬币包装4”);
SkuDetailsParams.Builder paramsInApp=SkuDetailsParams.newBuilder();
paramsInApp.setSkusList(skuListInAPP).setType(BillingClient.SkuType.INAPP);
billingClient.querySkuDetailsAsync(paramsInApp.build(),新SkuDetailsResponseListener()){
@凌驾
public void onSkuDetailsResponse(@NonNull BillingResult BillingResult,@null列表){
inAPPDetailList=列表;
}
});
List skuListSubs=new ArrayList();
添加(“无广告”);
skudailsparams.Builder paramsubs=skudailsparams.newBuilder();
参数设置列表(skuListSubs);
paramsSubs.setSkusList(skuListSubs.setType)(BillingClient.SkuType.SUBS);
billingClient.querySkuDetailsAsync(paramsubs.build(),新SkuDetailsResponseListener()){
@凌驾
public void onSkuDetailsResponse(@NonNull BillingResult BillingResult,@null列表){
inAPPSubs=列表;
}
});
}否则{
检查状态(假);
Toast.makeText(不活动。这个,“Beklenmedik Bir Hata oluştu”,Toast.LENGTH_SHORT.show();
}
}
@凌驾
公共无效onBillingServiceDisconnected(){
检查状态(假);
Toast.makeText(不活动。这个,“Beklenmedik Bir Hata Oluştu”,Toast.LENGTH_SHORT.show();
}
});
coinPack1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
BillingFlowParams BillingFlowParams=BillingFlowParams.newBuilder().setSkuDetails(inAPPDetailList.get(0)).build();
billingClient.launchBillingFlow(不活动。此为billingFlowParams);
}
});
coinPack2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
BillingFlowParams BillingFlowParams=BillingFlowParams.newBuilder().setSkuDetails(inAPPDetailList.get(1)).build();
billingClient.launchBillingFlow(不活动。此为billingFlowParams);
}
});
coinPack3.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
BillingFlowParams BillingFlowParams=BillingFlowParams.newBuilder().setSkuDetails(inAPPDetailList.get(2)).build();
billingClient.launchBillingFlow(不活动。此为billingFlowParams);
}
});
coinPack4.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
BillingFlowParams BillingFlowParams=BillingFlowParams.newBuilder().setSkuDetails(inAPPDetailList.get(3)).build();
billingClient.launchBillingFlow(不活动。此为billingFlowParams);
}
});
}
私有void checkState(布尔情况){
coinPack1.setEnabled(情况);
coinPack2.setEnabled(情况);
coinPack3.设置启用(情况);
coinPack4.设置启用(情况);
}
@凌驾
PURCHASSUPDATED上的公共无效(@NonNull BillingResult BillingResult,@Nullable List){
if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK&&list!=null){
用于(采购:列表){
如果(!purchase.isAcknowledged()){
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
}
if(purchase.getSku().equals(“coin_pack”)){
Constant.TOTAL_硬币=Constant.TOTAL_硬币+100;
Utils.UpdateCoin(getApplicationContext(),String.valueOf(Constant.TOTAL_));
Toast.makeText(这是“Satın Alma Başarılı100 Jeton.Desteklerizing için teşekkür ederiz”,Toast.LENGTH_SHORT)。show();
}
if(purchase.getSku().equals(“coin_pack2”)){
Constant.TOTAL_硬币=Constant.TOTAL_硬币+200;
Utils.UpdateCoin(getApplicationContext(),String.valueOf(Constant.TOTAL_));
Toast.makeText(这是“Satın Alma Başarılı200 Jeton.Desteklerizing için teşekkür ederiz”,Toast.LENGTH_SHORT)。show();
        if (!purchase.isAcknowledged()) {
                        AcknowledgePurchaseParams acknowledgePurchaseParams =
                                AcknowledgePurchaseParams.newBuilder()
                                        .setPurchaseToken(purchase.getPurchaseToken())
                                        .build();
                        billingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {
                            @Override
                            public void onAcknowledgePurchaseResponse(BillingResult billingResult){ 
                               // 
                             }
                        });
        }