國(guó)內(nèi)支付發(fā)達(dá)论矾,由支付寶引導(dǎo)的支付流程觀(guān)念常常會(huì)先入為主翩活,導(dǎo)致接入內(nèi)購(gòu)時(shí)整體觀(guān)念錯(cuò)位酵幕。希望借著對(duì)比支付寶和內(nèi)購(gòu)流程來(lái)讓大家更清晰的了解內(nèi)購(gòu)流程。
支付寶支付流程:
- 用戶(hù)選擇支付
- app調(diào)用后臺(tái)接口生成支付信息(生成支付寶訂單攒庵,并且綁定我們自己的訂單號(hào))
- app使用支付信息調(diào)起支付包sdk
- 支付寶sdk請(qǐng)求支付寶服務(wù)器
- 支付寶服務(wù)器返回支付結(jié)果給后臺(tái)和app
- app接受到支付寶支付結(jié)果,顯示相應(yīng)頁(yè)面
內(nèi)購(gòu)流程
- 用戶(hù)選擇支付
- app端使用蘋(píng)果product類(lèi)請(qǐng)求支付 (生成蘋(píng)果訂單transaction)
- store kit向蘋(píng)果服務(wù)器請(qǐng)求
- 蘋(píng)果服務(wù)器返回請(qǐng)求結(jié)果給app
- app保存收據(jù)败晴,向后臺(tái)請(qǐng)求驗(yàn)證收據(jù)
- 后臺(tái)返回驗(yàn)證結(jié)果
差異點(diǎn):
- 支付寶的每個(gè)訂單都可以綁定我們自己的訂單號(hào)浓冒,但是內(nèi)購(gòu)中沒(méi)有這樣的字段
- 支付寶支付成功后,支付寶服務(wù)器通知我們的服務(wù)器和app尖坤;在內(nèi)購(gòu)中稳懒,支付成功只通知app
差異點(diǎn)帶來(lái)的處理區(qū)別
- 我們不能將自己的訂單號(hào)與蘋(píng)果的訂單號(hào)聯(lián)系起來(lái),只能在支付成功后生成我們自己的訂單
- 在app啟動(dòng)時(shí)就需要注冊(cè)蘋(píng)果支付回調(diào)慢味,以便能接受到不知道什么時(shí)候進(jìn)行的支付的成功結(jié)果
- 保存支付成功的收據(jù)场梆,適當(dāng)?shù)臅r(shí)候需要檢查一下有沒(méi)有未驗(yàn)收的收據(jù)
關(guān)于applicationUsername和訂單號(hào)
有人會(huì)選擇用applicationUsername存放訂單號(hào)墅冷。 這樣做的問(wèn)題是支付成功后transaction中的applicationUsername可能為空。
以個(gè)人實(shí)際經(jīng)驗(yàn)看或油,大概每20單就會(huì)出現(xiàn)一次applicationUsername沒(méi)有返回的現(xiàn)象寞忿。蘋(píng)果論壇中關(guān)于applicationUsername為空的討論
關(guān)于支付失敗
當(dāng)用戶(hù)被引導(dǎo)出應(yīng)用更新他們的支付信息時(shí)會(huì)出現(xiàn)支付失敗/取消顶岸,支付信息更新腔彰、扣款完成后,app會(huì)再次收到成功的回調(diào)辖佣。蘋(píng)果論壇關(guān)于支付先失敗后成功的討論
關(guān)于漏單
理解錯(cuò)誤導(dǎo)致漏單列舉:
- app沒(méi)有在啟動(dòng)的時(shí)候就注冊(cè)支付結(jié)果的觀(guān)察者霹抛,導(dǎo)致以前支付成功的訂單無(wú)法處理
- 接受到支付成功的結(jié)果,但是因?yàn)?1.先有了支付失敗的回調(diào) 2.此次app生命周期中沒(méi)有付費(fèi)行為 app拒絕處理成功的訂單
- 用applicationUsername綁定蘋(píng)果訂單系統(tǒng)和我們自己的訂單系統(tǒng)凌简,applicationUsername缺失導(dǎo)致無(wú)法處理訂單
概念理解無(wú)誤上炎,出現(xiàn)問(wèn)題可以從流程中的每一步來(lái)排查與解決,最怕概念理解錯(cuò)雏搂,這樣就不是理性分析可以解決的事了藕施。
作者水平有限,發(fā)現(xiàn)錯(cuò)誤還請(qǐng)不吝賜教