精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

出海支付實戰:Google Play與Apple Store接入避坑指南

開發 項目管理
海外支付的接入涉及復雜的流程和細致的狀態管理,通過合理的系統設計和流程優化,可以有效解決掉單和賬單對賬的問題,確保用戶權益得到保障。?

1. 引言

今天我們來聊聊錢,一個項目想要掙錢就離不開商業化,說白了就是讓用戶掏錢,所以,支付系統也是我們在項目開發中必不可少的一個關鍵模塊。

而在 APP 出海的征途上,海外支付堪稱"必渡之河"。

根據 Statista 2024 數據,Google Play 與 Apple Store 合計占據全球移動應用市場 83% 的營收份額,其支付系統(IAP)如同支付寶與微信支付在國內的地位。

本文聚焦于兩大主流平臺的接入實踐,解析跨境支付的特殊場景與解決方案,以及業務上可能遇到的一些坑。

2. 業務交互流程

支付系統的核心在于狀態機的精準運轉,下圖展示典型交互鏈路:

圖片圖片

關鍵節點三要素:

  • 商品預配:提前在支付平臺創建商品ID并同步至業務數據庫(建議通過 Admin API 自動化)
  • 支付憑證雙驗證:客戶端獲取支付令牌后,需業務后臺二次驗證(蘋果建議使用 AppStoreServerAPI)
  • 原始交易ID綁定:訂閱類訂單需持久化 original_transaction_id 作為續期憑證

由于業務需要不同的充值套餐和訂閱周期,所有我們還需要先提前在 Apple Store 及 Google Play 中配置商品,并且給商品創建一個唯一 ID,存儲在后臺數據庫中(這一步我們可以在運營后臺里調用 Apple Store 或者谷歌 Play 的接口,同時寫入到 DB)。

當用戶想要獲取商品時,客戶端首先到后臺拉取商品列表,然后用戶點擊充值/訂閱后,客戶端就帶著商品 ID 請求 Google Play/Apple Store 同時拉起支付頁面,當用戶支付完成后,客戶端把產品ID、支付 Token、交易 ID 等信息傳入后臺并創建訂單。

需注意的是,原始交易 ID 可以管理訂閱訂單中的續訂狀態,后臺需要存儲起來。

接著,業務后臺請求支付網關接口,來驗證訂單的有效性,確認無誤后開始下發用戶權益(如:充值后獲取 100 顆鉆石進行主播打賞,或者成為尊貴的 VIP 用戶)。

3. 海外支付的要點及難點

一些背景

Google 和 Apple 未提供完整的流程和狀態支持文檔,中文資料亦不完整,因此我們以官方文檔為準,采用測試驅動開發。

同時,支付平臺服務端的接口支持較落后,我們盡量選用 SDK 進行交互。由于 Google Play 和 Apple Store 的回調通知類型不一致,支付狀態設計成為難點。

支付狀態流轉

比如,Apple 訂閱的通知類型【NOTIFICATION_TYPE】分為以下幾種:

圖片圖片

Google 的通知類型包括:

● 續訂開始/續訂恢復

● 訂閱取消/續訂取消

● 訂閱下單

● 訂閱保留(相當于停機保號)

● 訂閱重新開始

● 訂閱到期

結合實際業務,我們選用了都有的其中幾種支付狀態,如:完成訂單、取消、續訂失敗、退訂、續訂成功等。

一次性商品的購買狀態扭轉比較簡單:

圖片圖片

訂閱類商品更復雜一些:

圖片圖片

如上圖所示,在訂閱類支付時需要考慮用戶暫停/取消訂閱,也需要根據業務需要讓用戶自己覺得是否自動續訂,自動續訂時可能還要考慮用戶的賬戶余額是否充足等場景。

表結構

商品表和訂單表記錄了業務中的商品列表和用戶購買狀態。商品表需提前在三方支付平臺上配置,訂單表記錄用戶購買的商品狀態和三方支付平臺的交易憑據。

商品表

以下是商品表的主要結構(采用 Go 語言的結構體形式展現):

type Product struct {
    ID                   uint           `gorm:"primaryKey NOT NULL AUTO_INCREMENT"`
    ProductId            string         `json:"product_id" gorm:"index:product_id_app_id_deleted_at;type:varchar(64) DEFAULT ''"`
    ProductType          int            `json:"product_type" gorm:"comment:商品類型,0.未知類型/1.消耗型購買/2.非消耗型購買/3.自動訂閱/4.非自動訂閱;type:tinyint(4) DEFAULT 0"`
    Name                 string         `json:"name" gorm:"comment:商品名稱;type:varchar(64) DEFAULT ''"`
    Description          string         `json:"description" gorm:"comment:商品描述;type:varchar(1024) DEFAULT ''"`
    Price                int            `json:"price" gorm:"comment:商品價格,精度2位小數,用100倍存儲;type:bigint DEFAULT 0"`
    TokenType            int            `json:"token_type" gorm:"comment:虛擬幣類型,0.鉆石;1.金幣;2.元寶;3.其它;type:tinyint(4) DEFAULT 0"`
    TokenQuantity        int            `json:"token_quantity" gorm:"comment:虛擬幣數量;type:int(11) DEFAULT 0"`
    SubscribeDurationDay int            `json:"subscribe_duration_day" gorm:"comment:會員訂閱時長(天);type:int(11) DEFAULT 0"`
    Weight               int            `json:"weight" gorm:"comment:權重,排序時從大到小,客戶端根據此字段進行商品排序;type:int(11) DEFAULT 0"`
    ImageURL             string         `json:"image_url" gorm:"comment:商品圖片URL;type:varchar(1024) DEFAULT ''"`
    IsAutoSubscribe      int            `json:"is_auto_subscribe" gorm:"comment:是否是自動續費,0.未知/1.自動續費/2.非自動續費;type:tinyint(2) DEFAULT 0"`
    Platform             int            `json:"platform" gorm:"comment:支付平臺, 0-海外,1-微信支付,2-國內支付渠道;type:tinyint(2) DEFAULT 0"`
}

商品表主要是記錄業務中的商品列表,需要提前在三方支付平臺上進行配置,下單時客戶端需帶著商品 ID 請求后臺服務器。

訂單表

訂單表的定義如下所示(采用 Go 語言的結構體形式展現):

type Order struct {
    ID                    uint           `gorm:"primaryKey NOT NULL AUTO_INCREMENT"`
    OrderId               string         `json:"order_id" gorm:"index:order_id_deleted_at;type:varchar(64) DEFAULT ''"`
    ProductId             string         `json:"product_id" gorm:"index:user_uuid_app_product_id_deleted_at;type:varchar(64) DEFAULT ''"`
    TransactionId         string         `json:"transaction_id" gorm:"comment:交易ID,訂閱/續訂時使用;type:varchar(64) DEFAULT ''"`
    OriginalTransactionId string         `json:"original_transaction_id" gorm:"comment:原始交易ID,訂閱/續訂時該ID一致;type:varchar(64) DEFAULT ''"`
    UserUuid              string         `json:"user_uuid" gorm:"index:user_uuid_app_product_id_deleted_at;comment:用戶的UUID;type:varchar(64) DEFAULT ''"`
    PayChannel            int            `json:"pay_channel" gorm:"comment:支付渠道,0/1/2,GooglePay/ApplePay/PayPal;type:tinyint DEFAULT 0"`
    PaymentState          int            `json:"payment_state" gorm:"comment:支付狀態,-1:處理中 0:初始化 1:已完成 2 取消 3 續訂失敗 4 退款 5 續訂成功;type:tinyint DEFAULT 0"`
    RefundTime            string         `json:"refund_time" gorm:"comment:退款時間;type:varchar(32) DEFAULT ''"`
}

訂單主要記錄用戶購買的商品狀態,比如權益下發到哪一步了,續訂套餐是否在續費狀態,以及三方支付平臺的一些交易憑據(如交易ID)等。

5. 常見問題

1)如何防止掉單

在支付系統中,最重要的是用戶權益。很多時候用戶明明已經下單并且付錢了,但是 VIP 沒有充上,鉆石沒有到賬,是用戶無法接受的。

一個很常見的 Case 是:用戶付錢后,斷開網絡連接,這時后臺系統沒有收到消息,該怎么處理?

這里我們做了兩步來保證:

  1. 客戶端補償策略:采用本地事務日志+斷點續傳設計。客戶端在劃賬請求的 ACK 之前先調用后臺接口生成訂單,如果用戶在支付后突然斷網,重新打開客戶端后會檢查當前是否存在未確認的劃賬請求,如果有就再調用一次后臺訂單再 ACK。同時后臺通過冪等性來保證用戶不會多次支付同一筆訂單;
  2. 業務系統雙保險告警處理:業務平臺接收到支付網關回調時,發現已有訂單就更新訂單狀態;沒有訂單就發告警,進行人工處理;

2)如何保證賬單和訂單正確性

在傳統的公司交易中,都會需要會計來對賬,將每月的賬單和收支金額總額對比,防止出現賬不對錢的壞賬。

所以,一方面為了保證訂單的有序性,我們在業務系統禁止隨意扭轉訂單狀態;另一方面我們在支付網關進行每天的定時對賬:

  • 狀態機檢查裝置:每次觸發業務回調時,業務后臺都會判斷數據庫狀態和支付平臺的后臺狀態一致性,若是不一致,則判斷狀態是否可以扭轉,若是不能扭轉則告警出來;若是可以扭轉則更新 DB 里訂單的狀態;
  • 服務端哨兵系統:每小時掃描未完結訂單與支付平臺對賬。支付網關每天定時比較昨日數據庫和支付平臺后臺的交易狀態差異,有差錯的部分進行告警。

6. 小結

海外支付的接入涉及復雜的流程和細致的狀態管理,通過合理的系統設計和流程優化,可以有效解決掉單和賬單對賬的問題,確保用戶權益得到保障。

責任編輯:武曉燕 來源: xin猿意碼
相關推薦

2018-08-29 07:52:20

Google Play支付購物

2013-07-29 11:23:46

信息圖App StoreGoogle Play

2014-07-30 12:56:56

2020-08-26 07:37:25

Nacos微服務SpringBoot

2014-07-04 16:47:57

Google PlayAndroid Wea

2024-04-03 12:30:00

C++開發

2024-04-24 13:45:00

2021-02-26 00:46:11

CIO數據決策數字化轉型

2023-11-01 15:32:58

2013-08-01 10:22:28

Google Play應用商店App Store

2023-05-24 10:06:42

多云實踐避坑

2021-05-07 21:53:44

Python 程序pyinstaller

2022-03-04 18:11:16

信服云

2021-05-08 12:30:03

Pythonexe代碼

2021-02-22 17:00:31

Service Mes微服務開發

2024-08-26 08:29:55

2012-06-27 16:57:12

App StoreGoogle Play

2023-11-17 18:17:33

微信支付V3版本

2021-04-28 09:26:25

公有云DTS工具

2020-12-16 10:00:59

Serverless數字化云原生
點贊
收藏

51CTO技術棧公眾號

在线精品高清中文字幕| 欧美色图免费看| 久久精品二区| 91 中文字幕| 亚洲日本欧美| 视频在线观看一区二区| 亚洲AV成人精品| 日本一道高清亚洲日美韩| 亚洲黄网站在线观看| 茄子视频成人在线观看| av片免费播放| 三级在线观看一区二区| 欧美区二区三区| 久久久久久成人网| 蜜桃一区av| 欧美一区二区三区视频在线| 日本三级免费网站| 在线heyzo| 国产欧美日韩激情| 久久国产一区二区| 亚洲精品一区二区三区区别| 蜜臀av国产精品久久久久| 69影院欧美专区视频| 欧美成人综合色| 欧美电影一区| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 特级黄色录像片| 国产成人天天5g影院在线观看| 国产91在线|亚洲| 成人h视频在线观看播放| 高清乱码免费看污| 国产日韩欧美三区| 国产+人+亚洲| 久久久久亚洲av成人片| 亚洲精品91| 精品国产美女在线| 成人性生交大片免费看无遮挡aⅴ| 欧美日韩导航| 亚洲国产日韩精品在线| 国产一精品一aⅴ一免费| 97久久精品一区二区三区的观看方式 | 成年人免费看毛片| 欧美三级乱码| 欧美高清在线播放| 久久丫精品久久丫| 欧美日韩亚洲一区| 欧美麻豆久久久久久中文 | 国模精品一区二区| 972aa.com艺术欧美| 国产日韩欧美综合精品 | 亚洲精品自拍| 在线不卡欧美精品一区二区三区| 免费一级特黄录像| 韩国精品视频在线观看 | 黄色av电影网站| 中文字幕日韩在线| 精品久久国产老人久久综合| 秘密基地免费观看完整版中文| 成人午夜三级| 日韩精品在线播放| 在线观看日本中文字幕| 成人一区不卡| 俺去亚洲欧洲欧美日韩| 日韩欧美综合视频| 亚洲国产激情| 欧美中文字幕视频| 国产又粗又猛又爽又| 乱一区二区av| 亚洲自拍av在线| 欧美一级一区二区三区| 久久久国产一区二区三区四区小说| 日本免费高清一区二区| 欧美激情免费| 亚洲成a天堂v人片| 欧美精品第三页| 亚洲天堂网站| 亚洲高清色综合| 精品成人无码一区二区三区| 国产精品成人一区二区不卡| 欧美激情一区二区三区久久久| 欧美三级韩国三级日本三斤在线观看| 三级久久三级久久久| 国产日韩av在线播放| 亚洲国产精品久久人人爱潘金莲| 91丨九色丨蝌蚪富婆spa| 亚洲一区二区精品在线观看| 丝袜美腿av在线| 欧美性猛交xxxxx免费看| 色乱码一区二区三区在线| 人人爱人人干婷婷丁香亚洲| 亚洲精品中文字幕av| 亚洲怡红院在线观看| 日韩视频精品在线观看| 国产精品久久二区| 蜜臀久久久久久999| 国产校园另类小说区| 热久久最新地址| 成人欧美一区二区三区的电影| 欧美日韩成人综合天天影院| 日韩Av无码精品| 日韩在线观看一区| 国产91精品久| 国产富婆一级全黄大片| 国产欧美一区二区精品性色超碰| 色哟哟免费网站| 四虎4545www精品视频| 日韩精品专区在线影院观看| 国产精品www爽爽爽| 亚洲裸体俱乐部裸体舞表演av| 国产精品一区二区女厕厕| 色噜噜一区二区三区| 亚洲女女做受ⅹxx高潮| 日韩福利视频在线| 国产区精品视频在线观看豆花| 色婷婷综合久久久久| 丰满少妇乱子伦精品看片| 韩日精品视频一区| 亚洲不卡一卡2卡三卡4卡5卡精品| av片在线观看免费| 欧美日韩另类一区| 级毛片内射视频| 香蕉久久久久久久av网站| 成人18视频| av免费在线免费| 欧美区一区二区三区| 黄色aaa视频| 亚洲免费综合| 久久久久久国产精品mv| 91九色porn在线资源| 日韩亚洲欧美在线| 日韩av片在线免费观看| 日本美女一区二区三区视频| 久久久一本精品99久久精品| 9999在线视频| 精品久久国产97色综合| 久久成人国产精品入口| 国产精品综合视频| 在线观看18视频网站| av在线播放一区二区| 久久精品国产99国产精品澳门 | 日韩欧美综合视频| 久久99精品久久久久久| 杨幂一区欧美专区| 天天综合在线观看| 中文字幕日韩精品在线观看| 国产精品欧美综合| 国产精品久久久久四虎| 亚洲精品自拍网| 久久中文字幕av一区二区不卡| 国产精品久久婷婷六月丁香| 国产精品免费观看| 欧美自拍偷拍一区| 成年人视频软件| 久久精品国产久精国产爱| 中文字幕精品—区二区日日骚| 日韩福利影视| 久久综合久中文字幕青草| 99精品视频在线播放免费| 亚洲乱码日产精品bd| 欧美高清精品一区二区| 韩日欧美一区| 久久99精品久久久水蜜桃| 国产精品迅雷| 中文字幕九色91在线| 97免费观看视频| 亚洲综合久久av| 玖草视频在线观看| 日韩av中文字幕一区二区| 亚洲乱码一区二区三区三上悠亚| 久久精品资源| 欧美日本国产在线| 久青青在线观看视频国产| 精品视频一区 二区 三区| 欧美成人精品一区二区免费看片| 99热这里都是精品| 男人插女人下面免费视频| 图片区亚洲欧美小说区| 国产精品制服诱惑| 国产精品一区二区av影院萌芽| 日韩中文字幕不卡视频| 国产成人三级一区二区在线观看一| 亚洲第一搞黄网站| 欧美性猛交xxxx乱| 国产精品一区二区在线播放| 国产最新免费视频| 国产精品成人a在线观看| 精品国产免费人成电影在线观...| 欧美极度另类| 欧美激情高清视频| 高清毛片在线看| 日韩一区二区三区电影| 综合网在线观看| 亚洲精品日日夜夜| 国产高清一区二区三区四区| 国产高清不卡二三区| 国产精品亚洲二区在线观看| 影音先锋成人在线电影| 蜜桃视频在线观看91| 精品成人18| 国产成人欧美在线观看| 色网在线观看| 色吧影院999| 亚洲av成人精品日韩在线播放| 欧美日韩精品一区二区三区| 日本三级一区二区| 亚洲乱码国产乱码精品精98午夜 | 91久久精品国产91久久性色| 涩涩视频在线播放| 欧美二区在线播放| 黄色在线免费网站| 一本色道久久88精品综合| 天天干,夜夜爽| 欧美一二三在线| 亚洲天堂中文在线| 色婷婷av久久久久久久| 国产无码精品视频| 亚洲美腿欧美偷拍| 任我爽在线视频| 国产亚洲精品aa午夜观看| 在线观看免费视频黄| 国产在线一区观看| 午夜久久久精品| 视频一区国产视频| 天天摸天天碰天天添| 亚洲精华国产欧美| wwwwww欧美| 欧美一区二区三区久久精品| 一区二区三区在线视频看| gogogo高清在线观看一区二区| 精品国产一区二区三区麻豆免费观看完整版| а天堂中文最新一区二区三区| 国产精品美女在线| 精品三区视频| 国产精品com| 欧美色网在线| 国产精品旅馆在线| 国产极品久久久久久久久波多结野 | 新呦u视频一区二区| 国产不卡一区| 先锋影音一区二区三区| 日韩精品久久| 亚洲欧美日韩另类精品一区二区三区| 欧美精品羞羞答答| 亚洲日本欧美在线| 国产精品久久占久久| 伊人久久大香线蕉精品| 五月天久久网站| 最新av在线免费观看| 欧美阿v一级看视频| 黄色一级大片免费| 黄色免费成人| 极品美女扒开粉嫩小泬| 亚洲尤物精选| 色七七在线观看| 久久国产日韩欧美精品| 992kp免费看片| 成人永久aaa| 国产精品无码一区二区三区免费 | 国产视频1区2区| 欧美亚洲图片小说| 91麻豆国产视频| 日韩欧美国产高清| 手机在线不卡av| 国产一区二区三区久久精品| a天堂中文在线88| 久久夜色精品国产欧美乱| 色呦呦网站在线观看| 欧美亚洲日本黄色| 成人国产精选| 7777精品久久久大香线蕉小说| 国产精品任我爽爆在线播放| 玖玖玖精品中文字幕| 色小子综合网| 中国丰满熟妇xxxx性| 日韩国产欧美在线播放| 午夜精品久久久久久久99热影院| 国产成人av电影免费在线观看| 亚洲黄色免费在线观看| 国产精品私人影院| 久草免费在线观看视频| 欧美午夜性色大片在线观看| 亚洲网站在线免费观看| 欧美v亚洲v综合ⅴ国产v| 男同在线观看| 欧美成人免费在线视频| 欧美三级网站| 亚洲最大av在线| 免费短视频成人日韩| 自拍偷拍视频在线| 午夜在线播放视频欧美| 91性高潮久久久久久久| 91在线精品秘密一区二区| 国产麻豆a毛片| 欧美视频在线观看免费| 国产欧美久久久精品免费| 亚洲码在线观看| 日本一级理论片在线大全| 国产精品黄视频| 牛牛影视久久网| 波多野结衣三级在线| 久久国产精品99国产| 白丝校花扒腿让我c| 中文无字幕一区二区三区| 国产无套粉嫩白浆内谢| 7777精品伊人久久久大香线蕉经典版下载 | 99在线精品免费视频| 久久激情五月激情| 91视频免费观看网站| 亚洲成人一区二区| 国产精品亚洲欧美在线播放| 亚洲人成电影网站| 91www在线| 91精品天堂| 99tv成人| 中文字幕视频在线免费观看| 99久久99久久精品免费观看| 欧美成人三级视频| 91精品国产综合久久香蕉麻豆| 成年人在线视频| 日本视频久久久| 婷婷综合电影| 成人一区二区免费视频| 国产精品系列在线观看| 日韩免费av一区| 欧美三级资源在线| 二区三区在线| 国产精品 欧美在线| 亚洲小说图片视频| 欧美成人免费在线观看视频| 国产91色综合久久免费分享| 丝袜美腿小色网| 欧美一区二区视频免费观看| 黄色小网站在线观看| 国产在线观看一区二区三区| 日韩欧美字幕| 免费日韩视频在线观看| 久久一留热品黄| 国产剧情在线视频| 亚洲美女av黄| 国产综合色区在线观看| 欧美极品一区二区| 久久国产主播| 日本美女xxx| 欧美丝袜丝nylons| 日本在线视频观看| 国产欧美日韩综合精品| 国产精品二区不卡| 性鲍视频在线观看| 亚洲一级电影视频| 污视频网站免费观看| 26uuu久久噜噜噜噜| 蜜桃tv一区二区三区| 成人在线观看黄| 欧美激情一区二区三区蜜桃视频 | 深夜福利影院在线观看| 日韩精品一区二区三区视频| 激情影院在线| 久久偷窥视频| 免费观看成人鲁鲁鲁鲁鲁视频| 国产又粗又长又黄的视频| 欧美一区二区在线免费观看| 后进极品白嫩翘臀在线播放| 精品日韩电影| 日日摸夜夜添夜夜添亚洲女人| 色哟哟一一国产精品| 精品国产一区二区亚洲人成毛片 | 欧美精品一卡| av av在线| 91国偷自产一区二区使用方法| 99reav在线| 成人免费视频网站| 亚洲一区黄色| 林心如三级全黄裸体| 日韩一级黄色大片| 周于希免费高清在线观看 | 三上悠亚影音先锋| 欧美日韩国产综合视频在线观看| 91最新在线视频| 蜜桃av久久久亚洲精品| 久久99精品视频| 日韩福利片在线观看| 中文字幕国产精品| aaa国产精品| 欧美大尺度做爰床戏| 亚洲影院理伦片| 大胆av不用播放器在线播放| 97碰碰视频| 日韩vs国产vs欧美| 激情综合网五月婷婷| 综合欧美国产视频二区| julia中文字幕一区二区99在线| www.日本xxxx| 亚洲午夜三级在线| 一级毛片视频在线观看| 久久riav| 高清免费成人av| 一级淫片免费看| 日本精品视频在线| 欧美日韩精品| 成年人免费视频播放|