iOS --app微信支付

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

適用場(chǎng)景

用戶使用xxAPP時(shí),需要通過微信支付完成某項(xiàng)報(bào)名。此時(shí)xxAPP調(diào)用微信提供的SDK調(diào)用微信支付模塊,接著xxAPP跳轉(zhuǎn)到微信支付頁面,由客戶完成支付,支付完成后跳回到xxAPP頁面,顯示支付結(jié)果。

APP端開發(fā)步驟如下:

1.在xxAPP工程里設(shè)置APPID

商家在微信開放平臺(tái)申請(qǐng)開發(fā)app應(yīng)用后,微信開放平臺(tái)會(huì)生成該app的唯一標(biāo)識(shí)appId。在xcode中設(shè)置sppId步驟

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

2.注冊(cè)appId

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

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

3.調(diào)用支付

用戶在使用xxApp完成支付功能時(shí),商家服務(wù)器會(huì)生成支付訂單,先調(diào)用微信的【統(tǒng)一下單API】生成預(yù)付單,獲取到prepay_id后將參數(shù)再次簽名傳輸給app發(fā)起支付。調(diào)用支付的關(guān)鍵代碼如下:

PayReq?*request?=?[[PayReq?alloc]?init];

request.partnerId?=?@"商戶號(hào)";

request.prepayId=?@"預(yù)支付交易會(huì)話ID";

request.package?=?@"Sign=WXPay";

request.nonceStr=?@"隨機(jī)字符串";

request.timeStamp=?@"時(shí)間戳";

request.sign=?@"簽名";

[WXApi?sendReq:request];

4.支付結(jié)果回調(diào)

參照微信SDK

Sample,實(shí)現(xiàn)onResp方法、完成支付后,微信app會(huì)返回到商家app頁面,并且回調(diào)onResp函數(shù),開發(fā)者需要在該方法中接收通知,判斷返

回碼,如果支付成功則去后臺(tái)查詢支付結(jié)果再展示給用戶實(shí)際支付結(jié)果。注意:不能以客戶端取到的錢數(shù)作為用戶支付結(jié)果,應(yīng)該以服務(wù)器端接收到的支付通知或查

詢API返回的結(jié)果為準(zhǔn)。代碼示例如下:

-(void)onResp:(BaseResp*)resp

{

if?([respisKindOfClass:[PayRespclass]])

{

PayResp*response=(PayResp*)resp;

switch(response.errCode)

{

case?0:

//服務(wù)器端查詢支付通知或查詢API返回的結(jié)果再提示成功

NSlog(@"支付成功");

break;

default:

NSlog(@"支付失敗,retcode=%d",resp.errCode);

break;

}}}

回調(diào)中errCode值列表

0????? 成功

-1???? 失敗

-2???? 用戶取消

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容