I.A.P Google Play Billing - fantasy0107/notes GitHub Wiki
If you want to sell
physical goods
on Android, refer toGoogle Pay
Google Play Billing
is a service that lets you selldigital content
from inside an Android app, or in-app
Google Play Billing
販賣虛擬東西
-
google play - 是線上商店
-
Google Play Console - app 開發使用者去 publish appds 在 google play
-
Google API Console - 管理後端 api 例如 Google Play Developer API, 建立 service 帳戶去辨識購買和訂閱
-
Android devic - 任何裝置去跑 android app 例如
-
Android app - 在 android 機器上跑的 app
-
Secure backend server - 開發者提供的server 去實作購買 或訂閱
-
Play Store app - app 負責管理所有操作和 google play billing 相關. 所有你的app 的請求將會被 google play store 處理
-
Google Play Billing Library. - 是一個 api 開發者使用它去實作 google play billing
-
Google Play Developer API - 一個 REST API 用來程式化表現一堆 publishing 和 app 管理任務. 它包含 Subscriptions and In-App Purchases API 去管理in-app 購買和訂閱, Publishing API 上傳或發佈 apps 還有發布相關的任務
-
Real-time developer notifications - Server 發布 notifications 讓你的 monitor state 改變像是 SUBSCRIPTION_PURCHASED or SUBSCRIPTION_RECOVERED, for Play-managed subscriptions.
範例
How to configure and code Android in-app purchases in React Native apps
react-native-billing
consumePurchase(productId) 這個 method 可以再買一次
In-app Billing Reference
只能在實機上用這個 api, 模擬器不可以
發票
您可以在次月月初索取前一個月的加值稅發票。
我們可能需要長達 24 小時來處理這類申請案件,敬請耐心等候
加值稅發票上顯示的地址是您進行該筆交易時的法定地址。
交易完成後,加值稅發票上所列的地址就無法修改
只有位於歐洲經濟區、瑞士和摩洛哥的顧客能索取加值稅發票。
步驟
- 設定 in-app 產品在 Google Play Developers Console 還有選擇資費方式 (一次性或者訂閱)
- coding with app 用 bridge package 像 react-native-billing
Google Play Developers Console
- 選擇 app
所有應用程式 -> 選擇要新增商品的 app
要記得上傳已經開啟權限的 app
//新增權限路徑位置
android\app\src\main\AndroidManifest.xml
<uses-permission android:name="com.android.vending.BILLING"/>
- 選擇 Store presence -> In-app products
建立受管理的產品 - 收取一次性費用
- 設定產品屬性
- 產品 ID - 唯一
開頭必須是數字或小寫字母,
而且只能包含數字 (0-9)、
小寫字母 (a-z)、
底線 (_) 和句號 (.)。
項目建立後,您就無法再修改產品 ID,也不能在應用程式中重複使用產品 ID。
- 標題(Title)
- 說明(Description)
- 狀態(Status) - 商品的狀態 - 未開放購買/訂閱中
- 價格(Price) - 商品價格 - 預設價格必須介於 NT$30.00 和 NT$13,370.00 之間。
建立訂閱項目 - 定期收取內容或服務費用
會有手續費 30% 所以只會收到 70%的付款金額
react-native-billing
安裝購買的時候是根據 google play 登入的帳戶
Add subscription-specific features
Real-time Developer Notifications
使用情況
處理訂閱相關狀態的改變使用 Real-time Developer Notifications
Real-time developer notifications 是伺服器推送通知讓你有能力監控狀態改變
像是 SUBSCRIPTION_PURCHASED 或者 SUBSCRIPTION_RECOVERED對於 subscriptions. Real-time Developer Notifications 讓你可以反應狀態的改變
當你使用 Real-time Developer Notifications, 你的伺服器會收到 notifications 提醒你
有一個訂閱狀態產生改變你必須呼叫 developer API 在收到 Real-time Developer Notifications 之後去取的完整的 status 來更新你自己的後端伺服器狀態 但是這些 notifications 只是告訴你訂閱狀態改變. 它沒有告訴你完整的訊息關於訂閱狀態 當你檢查 developer API 你必須要做下面這些事情
-
If expiryTimeMillis is in the future, always grant entitlement.
-
If autoRenewing = false, try to get the user to resignup because the subscription will end at expiry time.
-
If paymentState = 0,send the user to the subscriptions center using the subscriptions center deep-link to fix their payment issue.
real-time developer notifications
增加使用 Real-Time Developer Notifications, 你會收到 purchase token 來自 Cloud Pub/Sub 任何時候當有訂閱狀態更新的時候
real-time developer notifications 沒有提供完整的資訊關於訂閱狀態. 當你收到 token, 你必須 要使用 purchase token 去 query Google Play Developer API 去取的完整的資訊和更新你的 後端
Notification 類型在未來可能會改變. 你必須要能夠處理未辨識的 Notification 類型. 而且你必須依賴 Google Play Developer API 去處理商業邏輯
傳送測試通知
- google play console
- 開發工具 -> 服務和API
- 最下面有即時開發人員通知
Cloud Pub/Sub Subscriber Guide
去設定 subscription 的 push subscription 或 pull subscription
A pull subscription : 需要你的伺服器去 request Cloud Pub/Sub serve
A push subscription : 需要 Cloud Pub/Sub request 你的伺服器
Push Subscriber Guide
設定送到某個伺服器的網址
- 選擇專案
- 發布/訂閱
- 左邊列表 - 主題 topic
- 建立主題 topic(如果沒有) [建立步驟] (https://developer.android.com/google/play/billing/realtime_developer_notifications)
- 選擇主題 topic
- 建立訂閱項目填入 訂閱名稱和 傳送類型選擇 推送至後端網址(但是要記得註冊 endpoint) 註冊方式
回傳的格式
從 Pub/Sub 過來的 request 目前測試是 購買和暫停 訂閱的商品都會傳訊息過來
Cloud Pub/Sub Client Libraries
{
"message":{
"data":"base64-encoded code", //需要用 base64_decode (php)
"messageId":"287674125841410",
"message_id":"287674125841410",
"publishTime":"2018-12-06T06:04:06.541Z",
"publish_time":"2018-12-06T06:04:06.541Z"
},
"subscription":"projects\/api-project-\/subscriptions\/aaaaaaa"
}
其它
測試用信用卡
google play console => 左邊項目列 => 設定 => 測試用 Gmail 帳戶填email