iOS --app微信支付

微信支付分為好幾種,這里記錄的是app微信支付流程。

適用場景

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

APP端開發步驟如下:

1.在xxAPP工程里設置APPID

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

xxAPP-->info-->URL Types-->URL Schemes-->輸入商戶自己的appId。

2.注冊appId

在xxAPP工程中引入微信lib庫和頭文件,調用微信的api之前,需要先向微信注冊商家的appId,代碼如下

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

3.調用支付

用戶在使用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???? 用戶取消

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容