項目中老版的支付寶sdk是在去年年中的時候接的,私鑰是直接放在項目里的,前幾天的時候支付寶官方發(fā)了一份通知函建議為防止私鑰被盜用需要將私鑰和簽名流程放在后臺。而且新版的sdk是加了支付被篡改的驗證的。項目就更新了下新版的sdk。記錄一下遇到的問題和流程。
首先打開螞蟻金服及開放平臺的文檔中心,搜索移動支付。下載SDK&DEMO。DEMO中包含有服務(wù)端和移動端demo,取所需即可。
tips:為防止項目報錯先copy出來一份更新成功后再修改源項目。
1.刪除項目中原sdk及簽名加密相關(guān)文件。
2.使用下載的官方demo中的對應(yīng)文件替換
3.對著demo從新添加一遍依賴庫,sdk,和靜態(tài)庫。重復(fù)的會自動替換掉老的。
4.新版本sdk簽名部分字段可能會有變化,修改即可。
新版本需要注意的地方:
1.AppDelegate中添加iOS9.0后的新api,官方demo中有。
// NOTE: 9.0以后使用新API接口
屏幕快照 2016-10-24 上午10.58.38.png
接完后測試的支付寶錢包的時候發(fā)現(xiàn)這個支付結(jié)果回調(diào)不走了。
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
查找了更新日志才知道回調(diào)邏輯有變化。
2. 支付結(jié)果返回統(tǒng)一,便于用戶接入。
原有方案:payOrder:fromScheme:callback接口,業(yè)務(wù)傳入callback1,用于支付結(jié)果返回;
processOrderWithPaymentReulst:standbyCallback接口,業(yè)務(wù)傳入callback2,用于支付結(jié)果返回;
一般一次支付中(跳支付寶客戶端支付),都會涉及到這兩個接口;原有的規(guī)則是callback1存在,則統(tǒng)一調(diào)用callback1返回支付結(jié)果給業(yè)務(wù)方,若callback1不存在(app被殺掉的情況),則調(diào)用callback2返回支付結(jié)果給業(yè)務(wù)方。
現(xiàn)有方案:payOrder:fromScheme:callback接口,業(yè)務(wù)會傳入CompletionBlock1(本地沒有安裝支付寶客戶端的情況下(走H5收銀臺),會通過該CompletionBlock1反饋結(jié)果);
processOrderWithPaymentResult:standByCallback接口,業(yè)務(wù)會傳入CompletionBlock2(本地安裝了支付寶客戶端的情況下,會通過該CompletionBlock2反饋結(jié)果)。
現(xiàn)有方案中是在AppDelegate中的方法是調(diào)用支付寶錢包(客戶端)的結(jié)果回調(diào)。
也就是:processOrderWithPaymentResult:standByCallback接口
而調(diào)用h5支付的時候的結(jié)果回調(diào)是使用的支付界面的回調(diào)。
也就是:payOrder:fromScheme:callback
升級過程中也就遇到了這么多問題,也沒多少東西。希望能夠幫到有需要的人。