我正在测试谷歌的应用内结算。我使用IabHelper按照谷歌应用内结算培训的指示。
我成功设置了IabHelper。
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
Log.d("GooglePay", "Setup finished.");
if (!result.isSuccess()) {
// Oh no, there was a problem.
Log.d("GooglePay", "Problem setting up in-app billing: " + result);
return;
}
// Have we been disposed of in the meantime? If so, quit.
if (mHelper == null) return;
mBroadcastReceiver = new IabBroadcastReceiver(GooglePayPlugin.this);
IntentFilter broadcastFilter = new IntentFilter(IabBroadcastReceiver.ACTION);
mActivity.registerReceiver(mBroadcastReceiver, broadcastFilter);
}
});
然后,我打电话给IabHelper的购买API。
try {
mHelper.launchPurchaseFlow(mActivity, productID, RC_REQUEST,
mPurchaseFinishedListener, payload);
} catch (IabAsyncInProgressException e) {
Log.d("GooglePay", "Error launching purchase flow. Another async operation in progress.");
}
但是,我总是有一个弹出窗口说:"从服务器检索信息时出错。[DF-DFERH-01]",如下图所示。
已经获得了logcat信息。
答案 0 :(得分:1)
请使用以下步骤检查您的代码:
STEP:1
使用sdk manager
和sdk tool
更新了Google Play Billing Library
Google play services
{/ 1}}
STEP:2 创建一个Android项目并为您的Android项目的清单文件添加结算权限。
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.INTERNET" />
STEP:3 将AIDL文件添加到项目中
1.右击你的app-level文件夹&gt;&gt;文件夹&GT;&GT; AIDL文件夹
2.针对应用内结算的示例创建目录或文件夹或包 - &gt; com.android.vending.billing
3.然后在此包中复制粘贴文件
完成所有这些操作后,您将在其他InApp结算中收到错误消息 像IabHelper这样的支持类用于导入它 InAppBillingService.aidl,要解决它,请转到build.gradle和 重新调整你的目录com.android.vending.billing不是 com.android.vending.billing目录或时的格式正确 包创建
像:
sourceSets {main {aidl.srcDirs = ['src / main / aidl']}}
STEP:3 更新build.gradle文件中的依赖项
STEP:4 使用Google Play启动连接
(确保 base64EncodedPublicKey 适合您的产品)
( Base64EncodedPublicKey 表示your license key from google play console
)
/************Setting Up Google Play Billing in the Application***************/
mHelper = new IabHelper(this, base64EncodedPublicKey);
// enable debug logging (for a production application, you should set this to false).
// mHelper.enableDebugLogging(true);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(@NonNull IabResult result) {
if (!result.isSuccess()) {
Log.d(TAG, "In-app Billing setup failed: " + result);
complain("In-app Billing setup failed:: " + result);
} else {
Log.d(TAG, "In-app Billing is set up OK");
}
}
});
/************Setting Up Google Play Billing in the Application***************/
STEP:5
出于测试目的,请使用以下item_sku:
static final String ITEM_SKU = "android.test.purchased";
static final int RC_REQUEST = 10001;
如果您正在创建实时使用活ProductID
。
STEP:6
实施onActivityResult
处理结果的方法
@Override
protected void onActivityResult(int requestCode, int resultCode,Intent data)
{
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
实施OnIabPurchaseFinishedListener
实施QueryInventoryFinishedListener
实施OnConsumeFinishedListener
STEP:7
确保您的设备已更新Google play services
STEP:8
调用IabHelper的购买API。
mHelper.launchPurchaseFlow(mActivity, ITEM_SKU,
RC_REQUEST,mPurchaseFinishedListener, mPayload);
STEP:9 如需更多信息,请参考以下链接:
https://developer.android.com/google/play/billing/billing_integrate.html#billing-permission
https://developer.android.com/google/play/billing/billing_library.html#connecting
我希望这会对你有所帮助。
答案 1 :(得分:0)
我最终解决了这个问题,把答案放在这里,希望能帮助那些遇到像我这样的问题的人。
mHelper.launchPurchaseFlow(mActivity,productID,RC_REQUEST, mPurchaseFinishedListener,payload);
“payLoad”参数太长,我将有效负载设置为空字符串,然后问题解决了,不再有df-dferh-01。
它与VPN无关,与谷歌库无关,只是因为有效载荷对于谷歌播放服务界面来说太长了。