開開心心接完 Unity 內購付費(幾年前!?),在來就是面對迷之掉單的過程。掉單總是伴隨著客訴,不管怎麼發生的,User 大都無助的反應補償或是退費,那我們當下能處理也只能根據 User 提供的訂單編號(orderID)反向查詢交易紀錄(transaction)。
繼續閱讀App Store
Unity 嵌入 app 內購付費 (In-App Purchasing) – Server-Side 驗證篇
前篇提到 Unity IAP 收據的兩種驗證方式: 本地(Client-side), 遠程(Server-side); 也介紹以 Unity IAP 提供的工具與 CrossPlatformValidator 類別執行本地驗證, 但對於提供遠程服務的 app 有更好的選擇: 遠程驗證.
本篇將介紹且實作 Google Play 與 App Store 兩平台的遠程收據驗證.
版本資訊:
Unity: 2019.2.14f
Unity IAP: 2.2.7
Unity IAP 的收據
Unity IAP 提供了 JSON 形式的收據:
| Name | Description |
| Store | 描述來自哪個商店, GooglePlay 或 AppStore. |
| TransactionID | 由商店提供的交易訂單ID (唯一碼) |
| Payload | 收據詳細內容, 因各商店而異. (遠程驗證所需資料存放這) |
Unity 嵌入 app 內購付費 (In-App Purchasing) – Client-Side 驗證篇
內購付費作為大部分免費 app 主要的收如來源, 商品收據驗證尤為重要, 可以幫助開發方防止惡性用戶或者不預期程式錯誤取得未購買的商品. 較好的做法是在取得購買收據後且分發商品之前進行收據驗證. 主要有兩種驗證方式: 本地 (Client-side), 遠程 (Server-side).
本地 (Client-side):
於購買的裝置上進行驗證, 不需要將收據資料送往其他端口. 這是 Unity IAP 有提供的功能. 雖然 Unity IAP 提供本地驗證, 但本地驗證仍是容易遭到竄改, 最好還是把核心驗證交由遠程的伺服器驗證.
遠程 (Server-side):
將購買的收據下載至裝置上, 隨後發送至驗證伺服器, 驗證成功即發送對應商品獎勵. 目前 Unity IAP 尚未提供. 常見的平台 Google Play 與 Apple 有更詳細的文件提供開發者進行更安全的遠程驗證.