12/08/2018, 16:00

In-app Billing trong android - làm giàu không khó : Part 1 - implementation

Vào một ngày đẹp trời nào đấy, khi ứng dụng của bạn trên google Play có được kha khá người dùng và bạn nhận được những phản hồi tích cực thì tin tôi đi, đây là thời điểm thích hợp để bắt đầu hái ra tiền từ những công sức bạn đã bỏ ra, chúng ta có rất nhiều sự lựa chọn, hoặc là bán các item, kiểu ...

Vào một ngày đẹp trời nào đấy, khi ứng dụng của bạn trên google Play có được kha khá người dùng và bạn nhận được những phản hồi tích cực thì tin tôi đi, đây là thời điểm thích hợp để bắt đầu hái ra tiền từ những công sức bạn đã bỏ ra, chúng ta có rất nhiều sự lựa chọn, hoặc là bán các item, kiểu các vật phẩm (như trong game, hoặc các ứng dụng giống game ..), hoặc là nâng cấp ứng dụng, người dùng phải trả phí để được sử dụng một số function đặc biệt nào đó, hoặc là cả 2 phương thức trên. Với in-app Billing API, google đã support tận răng việc giao dịch, việc của chúng ta chỉ là nghĩ ra những thứ hay ho để có thể hấp dẫn được nhiều người dùng sẵn sàng móc ví ra để sử dụng chúng, mà thôi, cái đó mới là cái khó nên hôm nay mình sẽ bỏ qua và giới thiệu cho các bạn cái dễ để "làm giàu không khó" - làm sao để tích hợp thanh toán vào ứng dụng của bạn. tada

Begin

Google giới thiệu hệ thống in-app Billing kể từ Android 3.0, cung cấp một giao diện đơn giản, thuận tiện để gửi những yêu cầu in-app Billing và quản lý những giao dịch thông qua Google Play.

Implementing in-app Billing

Trước khi bắt đầu, để có cái nhìn overview hơn về dịch vụ này, mọi người có thể xem qua tài liệu này click vào đây Các bước để chúng ta thực hiện là :

  1. Add thư viên in-app Billing vào project của bạn.
  2. Update AndroidManifest.xml
  3. Tạo ra một ServiceConnection và bind nó tới IInAppBillingService.
  4. Gửi một request từ ứng dụng của bạn đến IInAppBillingService.
  5. Xử lý reponse từ Google Play. Okey đó là flow chuẩn từ google, mình sẽ giới thiệu qua từng bước nhé

Adding the AIDL file to your project

IInAppBillingService.aidl (Android Interface Definition Language (AIDL)) là một file để định nghĩa những interface để giao tiếp với in-app Billing service.

  1. Import file trên vào Android Studio a. Tạo ra một directory có tên là aidl nằm trong src/main. b. Tạo ra một package com.android.vending.billing trong directory trên. c. Import file IInAppBillingService.aidl vào package trên.
  2. Build ứng dụng, bạn sẽ thấy một generated file có tên IInAppBillingService.java trong gen/ directory của project.
  3. Có một điều hay ho là google cung cấp một sample mẫu, nơi bạn có thể lấy những code xử lý cũng như những file cần thiết (nếu bạn đang thắc mắc là file AIDL trên lấy ở đâu), link project đó ở đây Chúng ta sẽ add tất cả những helper class trong thư mục util/ của project mẫu để sử dụng, đây là những class đã handle toàn bộ code cần thiết để chúng ta làm việc với in-app Billing service.

Purchase flow

Creating a ServiceConnection

Binding to IInAppBillingService

Để thiết lập một kết nối tới in-app Billing service ở Google Play, chúng ta sẽ implement một ServiceConnection để bind activity tới IInAppBillingService IInAppBillingService mService;

ServiceConnection mServiceConn = new ServiceConnection() {
   @Override
   public void onServiceDisconnected(ComponentName name) {
       mService = null;
   }

   @Override
   public void onServiceConnected(ComponentName name,
      IBinder service) {
       mService = IInAppBillingService.Stub.asInterface(service);
   }
};

Các bạn có thể thấy chi tiết hơn khi gọi hàm startSetup trong class IabHelper, đây cũng là hàm chúng ta sẽ gọi trong onCreate() của activity sẽ implement in-app Billing. À, đừng quên xử lý nó sau khi kết thúc activity nhé

@Override
public void onDestroy() {
    super.onDestroy();
    if (mService != null) {
        unbindService(mServiceConn);
    }
}

End

Đến đây, chúng ta đã hoàn thành việc tích hợp dịch vụ thanh toán in-app Billing vào trong ứng dụng của mình, trong bài tiếp theo, mình sẽ giới thiệu chi tiết hơn về flow, cách hoạt động cũng như cách để test dịch vụ này, thank you for reading.

0