1、發(fā)起下單請(qǐng)求( 調(diào)用統(tǒng)一下單接口 )注:交易類型trade_type=MWEB

成都創(chuàng)新互聯(lián)公司是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計(jì)公司的優(yōu)秀設(shè)計(jì)人員和策劃人員組成的一個(gè)具有豐富經(jīng)驗(yàn)的團(tuán)隊(duì),其中包括網(wǎng)站策劃、網(wǎng)頁(yè)美工、網(wǎng)站程序員、網(wǎng)頁(yè)設(shè)計(jì)師、平面廣告設(shè)計(jì)師、網(wǎng)絡(luò)營(yíng)銷人員及形象策劃。承接:成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)站改版、網(wǎng)頁(yè)設(shè)計(jì)制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫(kù)開(kāi)發(fā),以高性價(jià)比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺(tái)等全方位的服務(wù)。
2、統(tǒng)一下單接口返回支付相關(guān)參數(shù)給商戶后臺(tái),如支付跳轉(zhuǎn)url(參數(shù)名“mweb_url”),商戶通過(guò)mweb_url調(diào)起微信支付中間頁(yè)。如: ;package=600759311redirect_url=http%3a%2f%2
3、中間頁(yè)進(jìn)行H5權(quán)限的校驗(yàn),安全性檢查( 具體錯(cuò)誤見(jiàn)微信官方文檔 )
4、如果權(quán)限校驗(yàn)成功,微信支付中間頁(yè)會(huì)發(fā)起支付請(qǐng)求。請(qǐng)求完畢跳到回調(diào)頁(yè)面(由redirect_url決定)。APP需要在webView中監(jiān)聽(tīng)這個(gè)請(qǐng)求,打開(kāi)微信進(jìn)行支付。如: weixin://wap/pay?prepayid%3Dwx2718114258281033efb8751f1574826586package=2965581453noncestr=1545905512sign=cb0f6dbd067549a04aada9c3eef09aac
5、微信支付完畢跳回APP。
HTTP Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)起請(qǐng)求的時(shí),一般會(huì)帶上Referer,告訴服務(wù)器我是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)。微信中間頁(yè)會(huì)對(duì)Referer進(jìn)行校驗(yàn),非安全域名將不能正常加載。
redirect_url是微信中間頁(yè)喚起微信支付之后,頁(yè)面重定向的地址。中間頁(yè)喚起微信支付后會(huì)跳轉(zhuǎn)到指定的redirect_url。并且微信APP在支付完成時(shí),也是通過(guò)redirect_url回調(diào)結(jié)果,redirect_url一般是一個(gè)頁(yè)面地址,所以微信支付完成會(huì)打開(kāi)Safari瀏覽器。本文通過(guò)修改redirect_url,實(shí)現(xiàn)微信支付完畢跳回當(dāng)前APP。
需要將微信H5支付的安全域名配置成scheme,微信支付完成會(huì)通過(guò)這個(gè)scheme跳轉(zhuǎn)回APP。
再shouldStartLoadWithRequest:方法里面攔截微信中間頁(yè)(以“ ”開(kāi)頭的請(qǐng)求),截取redirect_url,如果redirect_url已經(jīng)被替換成scheme不攔截,如果沒(méi)有被替換,攔截請(qǐng)求,保存當(dāng)前的redirect_url。創(chuàng)建一個(gè)新的微信中間頁(yè)請(qǐng)求,將redirect_url替換成“安全域名://”(微信支付完畢會(huì)通過(guò)openURL打開(kāi)當(dāng)前APP,如果不替換redirect_url,微信支付完畢會(huì)打開(kāi)Safari瀏覽器。)。設(shè)置“Referer”為安全域名(微信會(huì)校驗(yàn)Referer,不是安全域名會(huì)加載失敗),重新load請(qǐng)求。
微信中間頁(yè)加載成功后,會(huì)收到一個(gè)打開(kāi)微信的請(qǐng)求,用openURL:打開(kāi)這個(gè)url實(shí)現(xiàn)跳轉(zhuǎn)到微信支付。
微信中間頁(yè)跳轉(zhuǎn)到微信時(shí),會(huì)將頁(yè)面從定向到redirect_url,由于redirect_url被我們修改為scheme,所以需要攔截這個(gè)非法的scheme請(qǐng)求,替換成記錄下的redirect_url。
以UIWebView為例
還有一篇文章講的是H5支付封裝,H5支付不僅可以在網(wǎng)頁(yè)上使用,原生也可以調(diào)用。具體內(nèi)容見(jiàn): iOS-H5支付(微信、支付寶)原生封裝
商戶在微信開(kāi)放平臺(tái)申請(qǐng)開(kāi)發(fā)APP應(yīng)用后,微信開(kāi)放平臺(tái)會(huì)生成APP的唯一標(biāo)識(shí)APPID。在Xcode中打開(kāi)項(xiàng)目,設(shè)置項(xiàng)目屬性中的URL Schemes為您的APPID。如圖所示。
2.導(dǎo)入微信支付SDK
將官方demo中的這個(gè)文件夾拷貝到項(xiàng)目里
在APPdelegate里設(shè)置APPID
導(dǎo)入依賴庫(kù)
項(xiàng)目中點(diǎn)擊支付的按鈕寫上如下方法
別忘了導(dǎo)入頭文件和遵循代理和注冊(cè)代理??
info.plist里添加如下字段LSApplicationQueriesSchemes,為Array類型,然后在里面添加兩個(gè)小選項(xiàng),分別為weixin和wechat
注意!!!下面這三處? 一定要對(duì)應(yīng)上? 少一不可
如果不回調(diào),APPdelegate里寫上這個(gè)
//被廢棄的方法如下
- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url {
return? [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
//替換的新方法
- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary*)options {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
//調(diào)起微信支付
PayReq* req? = [[PayReq alloc] init];
req.partnerId = @"1220277201";
req.prepayId? = @"9201039000160315ab9324b87b451223";
req.nonceStr? = @"83DB7tk21akNRSFs";
req.timeStamp = 1458027344;
req.package? = @"Sign=WXPay";
req.sign? ? ? = @"db6919dbd8ccb3f8a25108bebcd87f7a02c52e39";
[WXApi sendReq:req];
// 獲取當(dāng)前時(shí)間
time_t now;
time(now);
// 時(shí)間戳
//NSString *timestamp = [NSString stringWithFormat:@"%ld", now];
// 隨機(jī)字符串
//NSString *nonceStr = [[self md5:timestamp] uppercaseString];
//訂單id
NSString *prepayid =? _prepayid;
PayReq *request = [[PayReq alloc] init];
/** 商家向財(cái)付通申請(qǐng)的商家id */
request.partnerId = WXPartnerid;
/** 預(yù)支付訂單 */
request.prepayId= prepayid;
/** 商家根據(jù)財(cái)付通文檔填寫的數(shù)據(jù)和簽名 */
request.package = @"Sign=WXPay";
/** 隨機(jī)串,防重發(fā) */
request.nonceStr= _noncestr;
/** 時(shí)間戳,防重發(fā) */
request.timeStamp = [_timestamp intValue];
/** 商家根據(jù)微信開(kāi)放平臺(tái)文檔對(duì)數(shù)據(jù)做的簽名 */
request.sign= _sign;
/*! @brief 發(fā)送請(qǐng)求到微信,等待微信返回onResp
*
* 函數(shù)調(diào)用后,會(huì)切換到微信的界面。第三方應(yīng)用程序等待微信返回onResp。微信在異步處理完成后一定會(huì)調(diào)用onResp。支持以下類型
* SendAuthReq、SendMessageToWXReq、PayReq等。
* @param req 具體的發(fā)送請(qǐng)求,在調(diào)用函數(shù)后,請(qǐng)自己釋放。
* @return 成功返回YES,失敗返回NO。
*/
[WXApi sendReq: request];
目錄: Cocos creator ios開(kāi)發(fā)-接入微信SDK系列文章
這是官方文檔: app微信支付開(kāi)發(fā)文檔
第一步、
先接入微信SDK,請(qǐng)參考 Cocos creator ios開(kāi)發(fā)—接入微信SDK
第二步、
在Xcode的Info的設(shè)置項(xiàng)中,URL Types 的URL Schemes填寫APPID
在AppController.h中添加接口:
app啟動(dòng)時(shí),注冊(cè)APPID,在AppController.mm中的didFinishLaunchingWithOptions方法中調(diào)用
第三步、
向oc發(fā)送支付信息
第四步、
oc收到支付信息,發(fā)起支付
分享題目:微信支付ios開(kāi)發(fā),iOS 微信支付開(kāi)發(fā)
新聞來(lái)源:http://chinadenli.net/article24/dsgjgje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站收錄、網(wǎng)站導(dǎo)航、自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)