Apple Pay支付流程詳解

2021-07-10 05:51:30 字數 3388 閱讀 1476

0、 建新工程,忽略

3、主要**如下

import passkit

class viewcontroller: uiviewcontroller

if pkpaymentauthorizationviewcontroller.canmakepayments() )

}else

}}// pkpaymentvc delegate

extension viewcontroller: pkpaymentauthorizationviewcontrollerdelegate

else

} // 支付完成

func paymentauthorizationviewcontrollerdidfinish(controller: pkpaymentauthorizationviewcontroller)

}}

abrecordref record = abpersoncreate();

cferrorref error;

bool success;

success = abrecordsetvalue(record, kabpersonfirstnameproperty, @"john", &error);

if (!success)

if (!success)

abmultivalueref shippingaddress = abmultivaluecreatemutable(kabmultidictionarypropertytype);

nsdictionary *addressdictionary = @;

abmultivalueaddvalueandlabel(shippingaddress,

(__bridge cfdictionaryref) addressdictionary,

kabotherlabel,

nil);

success = abrecordsetvalue(record, kabpersonaddressproperty, shippingaddress, &error);

if (!success)

request.shippingaddress = record;

cfrelease(shippingaddress);

cfrelease(record);

4、處理支付的其他**詳解:

支付授權過程是由支付授權view controller和它的**協作完成的。支付授權view controller做了兩件事情:它讓使用者選擇支付請求所必需的賬單和配送資訊,還有讓使用者最終授權同意這次支付。當使用者和view controller互動時,**方法就會被呼叫,這樣你的應用就可以不斷地更新顯示的資訊–例如在配送位址更改後更新配送費用。使用者最終授權支付請求之後**方法同樣也會被呼叫。

注意:在實現這些方法時注意,這些方法可能會被多次呼叫,而它們被呼叫的順序取決於使用者的行為的順序。

當使用者提供配送資訊之後,授權view controller 會呼叫paymentauthorizationviewcontroller:didselectshippingaddress:completion: 和 paymentauthorizationviewcontroller:didselectshippingmethod:completion:這兩個**方法。在這兩個方法中根據最新資訊來更新支付請求。

func paymentauthorizationviewcontroller(controller: pkpaymentauthorizationviewcontroller, didselectshippingmethod shippingmethod: pkshippingmethod, completion: (pkpaymentauthorizationstatus, [pkpaymentsummaryitem]) -> void) 

func

paymentauthorizationviewcontroller

(controller: pkpaymentauthorizationviewcontroller, didselectshippingaddress address: abrecord, completion: (pkpaymentauthorizationstatus, [pkshippingmethod], [pkpaymentsummaryitem]) -> void)

當支付被授權後,支付token會被建立

當使用者最終授權了乙個支付請求,框架會通過與蘋果伺服器和嵌入在裝置中的乙個安全模組進行通訊,生成乙個支付token。然後你在paymentauthorizationviewcontroller:didauthorizepayment:completion:方法中將這個token和其它一些你需要用來處理這次購買的資訊–例如配送位址和購物車標識–傳送給你的伺服器。這個過程是這樣的:

框架傳送支付請求給安全模組,只有安全模組可以訪問儲存在裝置上的標記化的卡資訊。

安全模組把特定的卡和商家等支付資料加密,以保證只有蘋果可以讀取,然後傳送給框架。框架會將這些資料傳送給蘋果。

蘋果伺服器再次加密這些支付資料,以保證只有商家可以讀取。然後伺服器對它進行簽名,生成支付token,然後傳送給裝置。

框架呼叫相應的**方法並傳入這個token,然後你的**方法傳送token給你的伺服器。

至於你的伺服器採取的行為要取決於你是自己處理這次支付或者你是和其它支付平台合作來進行支付處理。不管怎樣,你的伺服器處理這個訂單然後傳送乙個狀態資訊給裝置,**方法會把這個狀態資訊傳送給completion塊,像在「processing a payment」中討論過的。

func paymentauthorizationviewcontroller(controller: pkpaymentauthorizationviewcontroller, didauthorizepayment payment: pkpayment, completion: (pkpaymentauthorizationstatus) -> void) 

catch

// 根據返回,判斷成功與否

5、 支付處理

處理乙個支付請求涉及以下幾個步驟:

把支付資訊,以及支付流程+所需的其他資訊,一起傳送給你的伺服器

驗證支付資料的雜湊表和簽名

為加密過的支付資料解碼

向支付處理系統提交支付資料

向訂單追蹤系統提交訂單

Apple Pay開發詳解

ios8.1就已經有這個功能了,只是木有現在這麼的火,現在的趨勢是要火的節奏,因此很多電商平台b2b,p2p,c2c,x2x都有可能需要這個屌絲的付款功能了,在此簡單的研究一下。正如上圖提示的一樣,你可能會注意到上面沒有有效的merchant id,我們需要建立乙個,訪問蘋果ios 開發者中心的位於...

ApplePay 支付的簡單使用

我是簡單的實現了一下功能做演示功能其他的就不說了,直接上 加注釋 void touchesbegan nsset touches withevent uievent event 判斷是否支援visa和銀聯 if pkpaymentauthorizationviewcontroller canmake...

詳解微信小程式支付流程

一.小程式呼叫登入介面獲取code,傳遞給商戶伺服器用來獲取使用者的openid 小程式呼叫wx.login 獲取 臨時登入憑證code 並回傳到開發者伺服器。開發者伺服器以code換取 使用者唯一標識openid 和 會話金鑰session key。偽 如下 小程式端 gettoken funct...