money3
2023-01-31 02:01:19
money3
主要是对Google play官方demo的讲解
1.仿照demo搭建一个新的内部付费应用
创建一个新的Android项目,创建一个新包 包名 com.android.vending.billing
IInAppBillingService.aidl拷贝到新包里
新项目代码
AndroidManifest.xml
添加付费权限:<uses-permissionandroid:name="com.android.vending.BILLING"/>
activity_main.xml
onBuyGasButtonClicked:按钮调用的方法、buy_gas图片名 .png
<ImageView
android:src="@drawable/buy_gas"
android:onClick="onBuyGasButtonClicked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"/>
public class MainActivity extends Activity {
IabHelper mHelper;
//应用付费产品的id
static final String SKU_GAS = "android.test.purchased";
static final String SKU_INFINITE_GAS = "infinite_gas";
static final String SKU_PREMIUM = "premium";
static final int RC_REQUEST = 10001;
boolean mIsPremium = false;
boolean mSubscribedToInfiniteGas = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//应用key
String base64EncodedPublicKey = "";
mHelper = new IabHelper(this, base64EncodedPublicKey);
mHelper.enableDebugLogging(true);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
System.out.println(" onIabSetupFinished");
if (!result.isSuccess()) {
System.out
.println(" Problem setting up in-app billing: "
+ result);
return;
}
mHelper.queryInventoryAsync(mGotInventoryListener);// Inventory存货
}
});
}
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
System.out
.println(" onQueryInventoryFinished");
if (result.isFailure()) {
System.out.println("Failed to query inventory: " + result);
return;
}
Purchase premiumPurchase = inventory.getPurchase(SKU_PREMIUM);
mIsPremium = (premiumPurchase != null && verifyDeveloperPayload(premiumPurchase));
Purchase infiniteGasPurchase = inventory
.getPurchase(SKU_INFINITE_GAS);
mSubscribedToInfiniteGas = (infiniteGasPurchase != null && verifyDeveloperPayload(infiniteGasPurchase));
Purchase gasPurchase = inventory.getPurchase(SKU_GAS);
if (gasPurchase != null && verifyDeveloperPayload(gasPurchase)) {
mHelper.consumeAsync(inventory.getPurchase(SKU_GAS),
mConsumeFinishedListener);
return;
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase, IabResult result) {
System.out.println(" onConsumeFinished");
if (result.isSuccess()) {
} else {
System.out
.println(" successful onConsumeFinished");
}
}
};
IabHelper.OnIabpurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
System.out
.println(" onIabPurchaseFinished "
+ result + " purchase " + purchase);
if (result.isFailure()) {// 失败了
System.out.println(" 失败了 ");
return;
}
if (!verifyDeveloperPayload(purchase)) {
return;
}
// 判断不同付费:涨一格油、换车、一段时间免费
if (purchase.getSku().equals(SKU_GAS)) {
mHelper.consumeAsync(purchase, mConsumeFinishedListener);
} else if (purchase.getSku().equals(SKU_PREMIUM)) {
mIsPremium = true;
} else if (purchase.getSku().equals(SKU_INFINITE_GAS)) {
mSubscribedToInfiniteGas = true;
}
}
};
//按钮
public void onBuyGasButtonClicked(View arg0) {
System.out.println(" onBuyGasButtonClicked");
String payload = "";
mHelper.launchPurchaseFlow(this, SKU_GAS, RC_REQUEST,
mPurchaseFinishedListener, payload);
while(true){}
}
//不写这个第二次请求时会崩溃,处理请求后的事件
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println(" onActivityResult: "
+ requestCode + " " + resultCode + " data " + data);
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
} else {
}
}
boolean verifyDeveloperPayload(Purchase p) {// verify:核查
String payload = p.getDeveloperPayload();
System.out.println(" verifyDeveloperPayload");
return true;
}
@Override
public void onDestroy() {
super.onDestroy();
if (mHelper != null)
mHelper.dispose();
mHelper = null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
相关文章