android-Purchasing In-app Billing Products,Testing Your In-app Billing Application
>Purchasing In-app Billing Products
Once your application is connected to Google Play, you can initiate purchase requests for in-app products. Google Play provides a checkout interface for users to enter their payment
method, so your application does not need to handle payment transactions directly.
You can also query Google Play to quickly retrieve the list of purchases that were made by the user. This is useful, for example, when you want to restore the user's purchases
when your user launches your app.
>To start a purchase request from your app, call launchPurchaseFlow(Activity, String, int, OnIabPurchaseFinishedListener, String)
on
your IabHelper
instance. You must make this call from the main thread of your Activity
.
Here’s an explaination of the launchPurchaseFlow
method parameters:
- The first argument is the calling
Activity
. - The second argument is the product ID (also called its SKU) of the item to purchase. Make sure that you are providing the ID and not the product name. You must have previously defined and activated the item in the Developer Console, otherwise it won’t be recognized.
- The third argument is a request code value. This value can be any positive integer. Google Play reurns this request code to the calling
Activity
’sonActivityResult
along with the purchase response. - The fourth argument is a listener that is notified when the purchase operation has completed and handles the purchase response from Google Play.
- The fifth argument contains a ‘developer payload’ string that you can use to send supplemental information about an order (it can be an empty string). Typically, this is used to pass in a string token that uniquely identifies
this purchase request. If you specify a string value, Google Play returns this string along with the purchase response. Subsequently, when you make queries about this purchase, Google Play returns this string together with the purchase details.
Security Recommendation: It’s good practice to pass in a string that helps your application to identify the user who made the purchase, so that you can later verify that this is a legitimate purchase by that user. For consumable items, you can use a randomly generated string, but for non-consumable items you should use a string that uniquely identifies the user.
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { public void onIabPurchaseFinished(IabResult result, Purchase purchase) { if (result.isFailure()) { Log.d(TAG, "Error purchasing: " + result); return; } else if (purchase.getSku().equals(SKU_GAS)) { // consume the gas and update the UI } else if (purchase.getSku().equals(SKU_PREMIUM)) { // give user access to premium content and update the UI } } };
Security Recommendation: When you receive the purchase response from Google Play, make sure to check the returned data signature, the orderId
, and the developerPayload
string in the Purchase
object
to make sure that you are getting the expected values. You should verify that the orderId
is a unique value that you have not previously processed, and the developerPayload
string matches the token that you sent
previously with the purchase request. As a further security precaution, you should perform the verification on your own secure server.
>Testing Your In-app Billing Application
Early testing also helps to ensure that the user flow for purchasing in-app items is not confusing or slow, and that users can see their newly purchased items in a timely way.
>To test your In-app Billing Version 3 application using your own product IDs:
- In the Developer Console, add one or more tester accounts to the developer account that you are using to publish your application.
- Login to the Developer Console with your developer account.
- Click Settings > Account details, then in the License Testing section, add the Google email addresses for your tester accounts.
- Build a signed APK file for your In-app Billing application. To learn how to build and sign your APK, seeBuilding Your Application for Release. Make sure that you are using your final (not debug) certificate and private key to sign your application.
- Make sure that you have uploaded the signed APK for your application to the Developer Console, and associated one or more in-app products with your application. You don't need to publish the application on Google Play to test
it.
Warning: It may take up to 2-3 hours after uploading the APK for Google Play to recognize your updated APK version. If you try to test your application before your uploaded APK is recognized by Google Play, your application will receive a ‘purchase cancelled’ response with an error message “This version of the application is not enabled for In-app Billing.”
- Install the APK file to your physical test device by using the
adb
tool. To learn how to install the application, see Running on a Device. Make sure that:- Your test device is running on Android SDK Version 2.2 (API level 8) or higher, and is installed with Google Play client Version 3.9.16 or higher.
- The
android:versionCode
andandroid:versionName
attributes values in theAndroidManifest.xml
of the application that you are installing matches the values of your APK in the Developer Console. - Your application is signed with the same certificate that you used for the APK that you uploaded to the Developer Console, before installing it on your device.
- Login to the test device by using a tester account. Test your In-app Billing application by purchasing a few items, and fix any issues that you encounter. To learn more about how you can perform large-scale testing of your In-app Billing app, see Test Purchases (In-app Billing Sandbox).
相關文章
- android-Preparing Your In-app Billing Application,Establishing In-app Billing Products for SaleAndroidAPP
- User Exits For Billing
- In-App Purchase 內購丟單、串單處理APP
- 雲音樂中 In-App Purchase 實踐總結篇APP
- Retroactive Billing – VFRB Modification to add credit/debit line
- emSecure Use Digital Signatures to protect your productsGit
- 將C4C Service Request中的summary和其他附件同步到ERP的Billing Request去
- SAP S/4HANA Cloud 上 in-app 和 side-by-side 兩種擴充套件方式的介紹CloudAPPIDE套件
- INE - Advanced Web Application Penetration Testing (eWPTx)WebAPP
- Oracle Real Application Testing之DB Replay實踐案例OracleAPP
- INE - Web Application Penetration Testing Professional (萌新級)WebAPP
- No suitable application records were found. Verify your bundle ideUIAPPIDE
- RAT(Oracle Real Application Testing)時ORA 600報錯處理OracleAPP
- Using Real Application Testing Functionality in Earlier Releases_560977.1APPFunction
- 【RAT】Oracle Real Application Testing(真用應用測試)介紹OracleAPP
- How to get propose products in Sales Order
- 3 Complementary Products and Strategic Partnerships
- Testing
- Your Prediction Gets As Good As Your DataGo
- [ABC132F] Small Products 題解
- Exception testingException
- Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(中篇) (轉)SolidC#APP
- Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(下篇) (轉)SolidC#APP
- Unit testing frameworkFramework
- Database Unit TestingDatabase
- google friendly testingGo
- Your title
- Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(尾篇二) (轉)SolidC#APP
- Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(尾篇一) (轉)SolidC#APP
- Android testing toolsAndroid
- Oracle Performance Testing PrincipleOracleORM
- Approaches to Performance TestingAPPORM
- Prettier your projectProject
- 12c-Say goodbye to your backup when dropping your PDBGo
- Restaurant Testing Round #12 BREST
- Testing the Modern Mobile World - AngLi
- In your opinion with 6 sentences
- deploy-your-site