iOS IAP內購 VS 支付寶

國內支付發達,由支付寶引導的支付流程觀念經常會先入爲主,致使接入內購時總體觀念錯位。但願藉着對比支付寶和內購流程來讓你們更清晰的瞭解內購流程。服務器

支付寶支付流程:

  1. 用戶選擇支付
  2. app調用後臺接口生成支付信息(生成支付寶訂單,而且綁定咱們本身的訂單號)
  3. app使用支付信息調起支付包sdk
  4. 支付寶sdk請求支付寶服務器
  5. 支付寶服務器返回支付結果給後臺和app
  6. app接受到支付寶支付結果,顯示相應頁面

內購流程

  1. 用戶選擇支付
  2. app端使用蘋果product類請求支付 (生成蘋果訂單transaction)
  3. store kit向蘋果服務器請求
  4. 蘋果服務器返回請求結果給app
  5. app保存收據,向後臺請求驗證收據
  6. 後臺返回驗證結果

差別點:

  • 支付寶的每一個訂單均可以綁定咱們本身的訂單號,可是內購中沒有這樣的字段
  • 支付寶支付成功後,支付寶服務器通知咱們的服務器和app;在內購中,支付成功只通知app

差別點帶來的處理區別

  • 咱們不能將本身的訂單號與蘋果的訂單號聯繫起來,只能在支付成功後生成咱們本身的訂單
  • 在app啓動時就須要註冊蘋果支付回調,以便能接受到不知道何時進行的支付的成功結果
  • 保存支付成功的收據,適當的時候須要檢查一下有沒有未驗收的收據

關於applicationUsername和訂單號

有人會選擇用applicationUsername存放訂單號。 這樣作的問題是支付成功後transaction中的applicationUsername可能爲空。 以我的實際經驗看,大概每20單就會出現一次applicationUsername沒有返回的現象。蘋果論壇中關於applicationUsername爲空的討論app

關於支付失敗

當用戶被引導出應用更新他們的支付信息時會出現支付失敗/取消,支付信息更新、扣款完成後,app會再次收到成功的回調。蘋果論壇關於支付先失敗後成功的討論接口

關於漏單

理解錯誤致使漏單列舉:生命週期

  • app沒有在啓動的時候就註冊支付結果的觀察者,致使之前支付成功的訂單沒法處理
  • 接受到支付成功的結果,可是由於 1.先有了支付失敗的回調 2.這次app生命週期中沒有付費行爲 app拒絕處理成功的訂單
  • 用applicationUsername綁定蘋果訂單系統和咱們本身的訂單系統,applicationUsername缺失致使沒法處理訂單

概念理解無誤,出現問題能夠從流程中的每一步來排查與解決,最怕概念理解錯,這樣就不是理性分析能夠解決的事了。支付寶

做者水平有限,發現錯誤還請不吝賜教get

相關文章
相關標籤/搜索