微信支付場景介紹:php
適用於商戶在移動端APP中集成微信支付功能。api
商戶APP調用微信提供的SDK調用微信支付模塊,商戶APP會跳轉到微信中完成支付,支付完後跳回到商戶APP內,最後展現支付結果。服務器
目前微信支付支持手機系統有:IOS(蘋果)、Android(安卓)和WP(Windows Phone)。微信
官方文檔: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
交互細節以下:app
步驟1:用戶進入商戶APP,選擇商品下單、確認購買,進入支付環節。商戶服務後臺生成支付訂單,簽名後將數據傳輸到APP端。以微信提供的DEMO爲例。
函數
步驟2:用戶點擊後發起支付操做,進入到微信界面,調起微信支付,出現確認支付界面,見圖8.2。微信支付
步驟3:用戶確認收款方和金額,點擊當即支付後出現輸入密碼界面,可選擇零錢或銀行卡支付見圖8.3。ui
第四步:輸入正確密碼後,支付完成,用戶端微信出現支付詳情頁面。spa
第五步:回跳到商戶APP中,商戶APP根據支付結果個性化展現訂單處理結果。code
##案例介紹
如下是交互時序圖,統一下單API、支付結果通知API和查詢訂單API等都涉及簽名過程,調用都必須在商戶服務器端完成。
商戶系統和微信支付系統主要交互說明:
步驟1:用戶在商戶APP中選擇商品,提交訂單,選擇微信支付。
步驟2:商戶後臺收到用戶支付單,調用微信支付統一下單接口。參見【統一下單API】。
步驟3:統一下單接口返回正常的prepay_id,再按簽名規範從新生成簽名後,將數據傳輸給APP。參與簽名的字段名爲appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式爲Sign=WXPay
步驟4:商戶APP調起微信支付。api參見本章節【app端開發步驟說明】
步驟5:商戶後臺接收支付通知。api參見【支付結果通知API】
步驟6:商戶後臺查詢支付結果。,api參見【查詢訂單API】
##APP 開發步驟
商戶在微信開放平臺申請開發APP應用後,微信開放平臺會生成APP的惟一標識APPID。在Xcode中打開項目,設置項目屬性中的URL Schemes爲您的APPID。
2.註冊APPID
商戶APP工程中引入微信lib庫和頭文件,調用API前,須要先向微信註冊您的APPID,代碼以下:
[WXApi registerApp:@」wxd930ea5d5a258f4f」 withDescription:@」demo 2.0」];
三、調起支付
商戶服務器生成支付訂單,先調用【統一下單API】生成預付單,獲取到prepay_id後將參數再次簽名傳輸給APP發起支付。如下是調起微信支付的關鍵代碼:
1 |
PayReq *request = [[[PayReq alloc] init] autorelease]; |
四、支付結果回調
照微信SDK Sample,在類實現onResp函數,支付完成後,微信APP會返回到商戶APP並回調onResp函數,開發者須要在該函數中接收通知,判斷返回錯誤碼,若是支付成功則去後臺查詢支付結果再展現用戶實際支付結果。注意 必定不能以客戶端返回做爲用戶支付的結果,應以服務器端的接收的支付通知或查詢API返回的結果爲準。代碼示例以下:
1 |
-(void)onResp:(BaseResp*)resp{ |
回調中errCode值列表:
名 稱 | 描述 | 解決方案 |
---|---|---|
0 | 成功 | 展現成功頁面 |
-1 | 錯誤 | 可能的緣由:簽名錯誤,未註冊appid,項目設置appid不正確,註冊的appid與設置的不匹配,其餘異常等 |
-2 | 用戶取消 | 無需處理。發生場景:用戶中途取消支付,返回商戶app |
微信支付業務流程與支付寶大體相同,可是有一點區別就是:
微信支付須要先生成預支付訂單.