Android 谷歌应用内购买总是退款
我对谷歌应用内购买有一些问题。所有收到的款项在72小时后退还。我的付款代码有错误吗?我自己付了钱,并没有要求任何退款,但即使是72小时后退款Android 谷歌应用内购买总是退款,android,in-app-purchase,in-app-billing,google-play-console,android-inapp-purchase,Android,In App Purchase,In App Billing,Google Play Console,Android Inapp Purchase,我对谷歌应用内购买有一些问题。所有收到的款项在72小时后退还。我的付款代码有错误吗?我自己付了钱,并没有要求任何退款,但即使是72小时后退款 private void setupBilling(){ mBillingClient=BillingClient.newBuilder(MainActivity.this).setListener(this.enablePendingPurchases().build(); mBillingClient.startConnection(新的Billin
private void setupBilling(){
mBillingClient=BillingClient.newBuilder(MainActivity.this).setListener(this.enablePendingPurchases().build();
mBillingClient.startConnection(新的BillingClientStateListener(){
@凌驾
BillingSetupFinished(BillingResult BillingResult)上的公共无效{
if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK){
最终列表skuList=新的ArrayList();
添加(“删除广告”);
最终SkuDetailsParams.Builder参数=SkuDetailsParams.newBuilder();
参数setskulist(skuList).setType(BillingClient.SkuType.INAPP);
mBillingClient.querySkuDetailsAsync(params.build(),新SkuDetailsResponseListener()){
@凌驾
公共无效Onsku详细信息响应(BillingResult BillingResult,列表){
if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK&&list!=null){
BillingFlowParams flowParams=BillingFlowParams.newBuilder()
.setsku详细信息(list.get(0))
.build();
mBillingClient.launchBillingFlow(MainActivity.this,flowParams);
}
}
});
}否则{
Toast.makeText(MainActivity.this,“error”,Toast.LENGTH_SHORT.show();
}
}
@凌驾
公共无效onBillingServiceDisconnected(){
Toast.makeText(MainActivity.this,“error”,Toast.LENGTH_SHORT.show();
}
});
}
@凌驾
PurchaseSupdated上的公共无效(BillingResult BillingResult,@Nullable List){
如果(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK
&&列表!=空){
用于(采购:列表){
if(purchase.getPurchaseState()==purchase.PurchaseState.PURCHASED){
Toast.makeText(MainActivity.this,purchase.getSku()+“ok”,Toast.LENGTH\u SHORT.show();
}
}
}else if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.USER\u已取消){
Toast.makeText(这是“ptal edildi”,Toast.LENGTH.SHORT).show();
}else if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.ITEM_已拥有){
Toast.makeText(这是“alreadry拥有的”,Toast.LENGTH_LONG.show();
}否则{
Toast.makeText(此“错误”,Toast.LENGTH_SHORT).show();
}
}
您似乎没有正确确认购买
如果您使用Google Play计费库2.0版或更高版本,您
必须在三天内确认所有购买。未能妥善处理
确认购买导致这些购买被退款
您可以在文档中找到更多详细信息:
BillingClient=。。。
AcknowledgePurchaseResponseListener AcknowledgePurchaseResponseListener=。。。
无效手购(采购){
if(purchase.getPurchaseState()==PurchaseState.PURCHASED){
//授予用户权限。
...
//如果尚未确认,则确认购买。
如果(!purchase.isAcknowledged()){
确认采购计划确认采购计划=
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
client.acknowledgePurchase(acknowledgePurchaseParams,acknowledgePurchaseResponseListener);
}
}
}
用户在我们的应用程序中付费购买应用程序,但谷歌会在72小时和10分钟后自动退款,我不知道为什么会发生这种情况。我把所有的代码都作为一个flatter文档来编写,并在下面添加了(app/build.gradle)依赖项{implementation'com.android.billingclient:billing:2.0.3',但每次用户在应用程序购买时付费,但谷歌会在72小时和10分钟后自动退款。请问有什么解决方案?(flatter app)
private void setupBilling() {
mBillingClient = BillingClient.newBuilder(MainActivity.this).setListener(this).enablePendingPurchases().build();
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
final List<String> skuList = new ArrayList<> ();
skuList.add("remove_ads");
final SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
mBillingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> list) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && list != null) {
BillingFlowParams flowParams = BillingFlowParams.newBuilder()
.setSkuDetails(list.get(0))
.build();
mBillingClient.launchBillingFlow(MainActivity.this, flowParams);
}
}
});
}else{
Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onBillingServiceDisconnected() {
Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> list) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK
&& list != null) {
for (Purchase purchase : list) {
if(purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED){
Toast.makeText(MainActivity.this, purchase.getSku() + " ok", Toast.LENGTH_SHORT).show();
}
}
} else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
Toast.makeText(this, "İptal edildi", Toast.LENGTH_SHORT).show();
} else if(billingResult.getResponseCode() == BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED) {
Toast.makeText(this, "alreadry owned", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "error", Toast.LENGTH_SHORT).show();
}
}