IOS --app微信支付

微信支付分爲好幾種,這裏記錄的是app微信支付流程。php

適用場景web

用戶使用xxAPP時,須要經過微信支付完成某項報名。此時xxAPP調用微信提供的SDK調用微信支付模塊,接着xxAPP跳轉到微信支付頁面,由客戶完成支付,支付完成後跳回到xxAPP頁面,顯示支付結果。api

APP端開發步驟以下:xcode

1.在xxAPP工程裏設置APPID
服務器

商家在微信開放平臺申請開發app應用後,微信開放平臺會生成該app的惟一標識appId。在xcode中設置sppId步驟微信

xxAPP-->info-->URL Types-->URL Schemes-->輸入商戶本身的appId。
app

2.註冊appId函數

在xxAPP工程中引入微信lib庫和頭文件,調用微信的api以前,須要先向微信註冊商家的appId,代碼以下微信支付

[WXApi registerApp:@"商家appId" withDescription:nil];

3.調用支付
spa

用戶在使用xxApp完成支付功能時,商家服務器會生成支付訂單,先調用微信的統一下單API】生成預付單,獲取到prepay_id後將參數再次簽名傳輸給app發起支付。調用支付的關鍵代碼以下:

PayReq *request = [[PayReq alloc] init];
request.partnerId = @"商戶號";
request.prepayId= @"預支付交易會話ID";
request.package = @"Sign=WXPay";
request.nonceStr= @"隨機字符串";
request.timeStamp= @"時間戳";
request.sign= @"簽名";
[WXApi sendReq:request];

4.支付結果回調

參照微信SDK Sample,實現onResp方法、完成支付後,微信app會返回到商家app頁面,而且回調onResp函數,開發者須要在該方法中接收通知,判斷返回碼,若是支付成功則去後臺查詢支付結果再展現給用戶實際支付結果。注意:不能以客戶端取到的錢數做爲用戶支付結果,應該以服務器端接收到的支付通知或查詢API返回的結果爲準。代碼示例以下:

 -(void)onResp:(BaseResp*)resp
 {
        if ([respisKindOfClass:[PayRespclass]])
               {
		    PayResp*response=(PayResp*)resp;
			   switch(response.errCode)
			       {
			          case 0:
                      			//服務器端查詢支付通知或查詢API返回的結果再提示成功
                      			NSlog(@"支付成功");
                      	break;
                      	default:
                      	NSlog(@"支付失敗,retcode=%d",resp.errCode);
                      	break;
                                  }
                }
 }

回調中errCode值列表

0      成功

-1     失敗

-2     用戶取消

相關文章
相關標籤/搜索