Trong bài viết về ASO (App Store Optimization), mình có nói đến việc sử dụng tính năng In-app purchase để tối ưu ASO. Tuy nhiên, mình lại chưa có bài viết hướng dẫn cách tạo In app purchase (mua hàng trong ứng dụng) cho Android app.
Để bù đắp cho thiếu sót đó, bài này mình sẽ hướng dẫn chi tiết cách tạo tính năng mua hàng trong ứng dụng (In App Purchase – hay viết tắt là IAP) để bạn vừa có thể kiếm tiền từ ứng dụng Android, vừa có thể tối ưu ASO.
Nội dung chính của bài viết
# IAP là gì? Purchase là gì?
In App Purchase hay còn biết tới với tên là mua hàng trong ứng dụng. Đây là tính năng được tích hợp bên trong ứng dụng di động (iOS hay Android) hoặc PC (Windows/Ubuntu) để người dùng có thể mua những vật phẩm hoặc mở những tính năng nâng cao trong ứng dụng/game.
Thêm tính năng In-app purchase là một cách tuyệt vời để giúp bạn kiếm tiền từ ứng dụng.
Dựa trên API có sẵn, chúng ta có thể phân loại các sản phẩm IAP thành hai loại:
- Sản phẩm có phí tạm thời: Là những sản phẩm chỉ có giá trị tạm thời và một khi được mua, có thể được mua lại. Ví dụ nhân vật trong trò chơi có thể kiếm được điểm để chơi tiếp hoặc kiếm thêm tiền vàng trong kho của họ.
- Sản phẩm có phí vĩnh viễn: Nó có thể được mua một lần trong ứng dụng của bạn và mang lại lợi ích vĩnh viễn. Sau khi mua, các sản phẩm này sẽ được liên kết vĩnh viễn với tài khoản Google của người dùng. Ví dụ: nâng cấp ứng dụng lên phiên bản pro hoặc xóa quảng cáo.
Với hướng dẫn này, mình sẽ chia sẻ mọi thứ cần thiết về In-app purchase (mua hàng trong ứng dụng). Mình sẽ cố gắng càng chi tiết càng tốt, và sẽ chia nhỏ hướng dẫn này thành nhiều bước để dễ nắm bắt và làm theo hơn.
Chúng ta bắt đầu nhé!
#Tạo In App Purchase trong ứng dụng Android
Sau khi thực hiện IAP trong nhiều dự án, mình đã đúc kết kinh nghiệm và gói gọn vào một Helper cho tiện sử dụng sau này.
Những tính năng chính của helper này bao gồm:
- Thêm thư viện thanh toán (Google Play Billing) vào ứng dụng.
- Cấu hình sản phẩm/vật phẩm.
- Triển khai các lớp mua hàng cho ứng dụng của bạn.
- Lấy lịch sử mua hàng.
- Nhận thông tin chi tiết về sản phẩm.
- Thanh toán trong ứng dụng Google Play.
Các bạn download dự án mẫu (có kèm cả Helper mà mình nói ở trên) tại đây nhé:
Bài viết này, mình sẽ chia sẻ các bạn cách sử dụng Helper của mình để tạo In-app purchase. Thành quả sau bao năm chinh chiến!
♥ Đọc thêm: Tăng thứ hạng từ khóa trên App Store/Google Play) bằng ASO
1.Thêm thư viện Google Play Billing vào dự án
Thêm vào file build.gradle
implementation 'com.android.billingclient:billing:3.0.0'
Và thêm quyền truy cập internet permission trong file AndroidManifest.xml
Quyền thanh toán được nhúng trong thư viện. Vì vậy không cần thiết phải thêm quyền com.android.veinating.BILLING bên trong AndoridManifest nữa.
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Cuối cùng là sync project.
2. Cấu hình tính năng mua hàng trong ứng dụng (In App Purchase)
Để có IAP trong ứng dụng của bạn, trước tiên bạn phải định cấu hình các sản phẩm trong ứng dụng của mình bằng Google Play Console. Vì mình sử dụng thư viện nên việc cấu hình cũng nhanh chóng và dễ dàng hơn.
Các bạn vào 2 link này để đọc tài liệu về cấu hình.
- https://support.google.com/googleplay/android-developer/answer/1153481
- https://support.google.com/googleplay/android-developer/answer/140504
3.Triển khai các lớp mua hàng
Để triển khai, bạn hãy kế thừa PurchasingHelper của mình vào ứng dụng của bạn, bạn cần khai báo và xác định đối tượng bằng callback interface (PurchasingHelperListener)
, sẽ cung cấp cho bạn các hàm trả về khi người dùng thao tác.
Bạn có thể sử dụng đoạn code sau:
PurchaseHelper purchaseHelper; purchaseHelper = new PurchaseHelper(this, getPurchaseHelperListener()); public PurchaseHelper.PurchaseHelperListener getPurchaseHelperListener() { return new PurchaseHelper.PurchaseHelperListener() { @Override public void onServiceConnected(int resultCode) { Log.d(TAG, "onServiceConnected: " + resultCode); } @Override public void onSkuQueryResponse(List<SkuDetails> skuDetails) { } @Override public void onPurchasehistoryResponse(List<Purchase> purchasedItems) { purchaseHistory = purchasedItems; } @Override public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) { Log.d(TAG, "onPurchasesUpdated: " + responseCode); } }; }
4.Lấy lịch sử mua hàng
Trước khi bắt đầu luồng thanh toán, chúng ta phải kiểm tra trạng thái của sản phẩm, để kiểm tra lịch sử mua hàng.
Bạn có thể thực hiện yêu cầu để có được tất cả các mặt hàng đã mua. Bạn sử dụng hàm sau:
purchaseHelper.getPurchasedItems(TYPE);
Hàm này sẽ trả lại phản hồi của yêu cầu vào callback trên PurchasehistoryResponse (Danh sách đã mua).
Từ đó, chúng ta có thể nhận được tất cả các giao dịch mua trong SkuType cụ thể được kết nối với ứng dụng cụ thể và tài khoản Google đang hoạt động trong thiết bị Google play.
♥ Có thể có ích với bạn: Khóa học lập trình Android miễn phí
5. Nhận thông tin chi tiết về sản phẩm
Để hiển thị chi tiết về các sản phẩm, chúng ta phải lấy thông tin chi tiết từ play console bằng ID sản phẩm.
Để làm điều này, chúng ta phải lấy danh sách Id sản phẩm và SkuType. Bạn sử dụng hàm sau:
purchaseHelper.getSkuDetails(skuList,BillingClient.SkuType.INAPP);
Nó sẽ trả về các kết quả qua hàm callback onSkuQueryResponse(List skuDetails);
6. Thanh toán trong ứng dụng Google Play
Để bắt đầu Mua hàng trong ứng dụng, bạn phải có SkuType và ID sản phẩm.
purchaseHelper.launchBillingFLow(BillingClient.SkuType.INAPP, getProduct_id());
Nó sẽ trả lại phản hồi của yêu cầu này vào hàm callback PurchaseUpdated (int answerCode, @Nullable List purchases)
. Vậy là hoàn tất quá trình tạo In App Purchase!
Tạm kết
Như vậy, mình đã chia sẻ cách tạo In App Purchase vào ứng dụng Android.
Mình hi vọng, với những chia sẻ của mình sẽ giúp các bạn nhanh chóng hoàn thành tính năng này. Nhờ đó kiếm được nhiều tiền nhờ ứng dụng Android.
Đừng quên like và để lại bình luận ủng hộ mình nhé!
Admin có thể update thêm cách test khi tích hợp in-app không?
Mình cũng đang loay hoay cách tích hợp IAP này, may có bài viết này.