目錄: Cocos creator ios開發(fā)-接入微信SDK系列文章
成都創(chuàng)新互聯(lián)擁有10余年的建站服務(wù)經(jīng)驗,在此期間,我們發(fā)現(xiàn)較多的客戶在挑選建站服務(wù)商前都非常的猶豫。主要問題集中:在無法預(yù)知自己的網(wǎng)站呈現(xiàn)的效果是什么樣的?也無法判斷選擇的服務(wù)商設(shè)計出來的網(wǎng)頁效果自己是否會滿意?成都創(chuàng)新互聯(lián)業(yè)務(wù)涵蓋了互聯(lián)網(wǎng)平臺網(wǎng)站建設(shè)、移動平臺網(wǎng)站制作、網(wǎng)絡(luò)推廣、定制制作等服務(wù)。成都創(chuàng)新互聯(lián)網(wǎng)站開發(fā)公司本著不拘一格的網(wǎng)站視覺設(shè)計和網(wǎng)站開發(fā)技術(shù)相結(jié)合,為企業(yè)做網(wǎng)站提供成熟的網(wǎng)站設(shè)計方案。
這是官方文檔: app微信支付開發(fā)文檔
第一步、
先接入微信SDK,請參考 Cocos creator ios開發(fā)—接入微信SDK
第二步、
在Xcode的Info的設(shè)置項中,URL Types 的URL Schemes填寫APPID
在AppController.h中添加接口:
app啟動時,注冊APPID,在AppController.mm中的didFinishLaunchingWithOptions方法中調(diào)用
第三步、
向oc發(fā)送支付信息
第四步、
oc收到支付信息,發(fā)起支付
1、發(fā)起下單請求( 調(diào)用統(tǒng)一下單接口 )注:交易類型trade_type=MWEB
2、統(tǒng)一下單接口返回支付相關(guān)參數(shù)給商戶后臺,如支付跳轉(zhuǎn)url(參數(shù)名“mweb_url”),商戶通過mweb_url調(diào)起微信支付中間頁。如: ;package=600759311redirect_url=http%3a%2f%2
3、中間頁進行H5權(quán)限的校驗,安全性檢查( 具體錯誤見微信官方文檔 )
4、如果權(quán)限校驗成功,微信支付中間頁會發(fā)起支付請求。請求完畢跳到回調(diào)頁面(由redirect_url決定)。APP需要在webView中監(jiān)聽這個請求,打開微信進行支付。如: weixin://wap/pay?prepayid%3Dwx2718114258281033efb8751f1574826586package=2965581453noncestr=1545905512sign=cb0f6dbd067549a04aada9c3eef09aac
5、微信支付完畢跳回APP。
HTTP Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)起請求的時,一般會帶上Referer,告訴服務(wù)器我是從哪個頁面鏈接過來。微信中間頁會對Referer進行校驗,非安全域名將不能正常加載。
redirect_url是微信中間頁喚起微信支付之后,頁面重定向的地址。中間頁喚起微信支付后會跳轉(zhuǎn)到指定的redirect_url。并且微信APP在支付完成時,也是通過redirect_url回調(diào)結(jié)果,redirect_url一般是一個頁面地址,所以微信支付完成會打開Safari瀏覽器。本文通過修改redirect_url,實現(xiàn)微信支付完畢跳回當(dāng)前APP。
需要將微信H5支付的安全域名配置成scheme,微信支付完成會通過這個scheme跳轉(zhuǎn)回APP。
再shouldStartLoadWithRequest:方法里面攔截微信中間頁(以“ ”開頭的請求),截取redirect_url,如果redirect_url已經(jīng)被替換成scheme不攔截,如果沒有被替換,攔截請求,保存當(dāng)前的redirect_url。創(chuàng)建一個新的微信中間頁請求,將redirect_url替換成“安全域名://”(微信支付完畢會通過openURL打開當(dāng)前APP,如果不替換redirect_url,微信支付完畢會打開Safari瀏覽器。)。設(shè)置“Referer”為安全域名(微信會校驗Referer,不是安全域名會加載失敗),重新load請求。
微信中間頁加載成功后,會收到一個打開微信的請求,用openURL:打開這個url實現(xiàn)跳轉(zhuǎn)到微信支付。
微信中間頁跳轉(zhuǎn)到微信時,會將頁面從定向到redirect_url,由于redirect_url被我們修改為scheme,所以需要攔截這個非法的scheme請求,替換成記錄下的redirect_url。
以UIWebView為例
還有一篇文章講的是H5支付封裝,H5支付不僅可以在網(wǎng)頁上使用,原生也可以調(diào)用。具體內(nèi)容見: iOS-H5支付(微信、支付寶)原生封裝
商戶在微信開放平臺申請開發(fā)APP應(yīng)用后,微信開放平臺會生成APP的唯一標(biāo)識APPID。在Xcode中打開項目,設(shè)置項目屬性中的URL Schemes為您的APPID。如圖所示。
2.導(dǎo)入微信支付SDK
將官方demo中的這個文件夾拷貝到項目里
在APPdelegate里設(shè)置APPID
導(dǎo)入依賴庫
項目中點擊支付的按鈕寫上如下方法
別忘了導(dǎo)入頭文件和遵循代理和注冊代理??
info.plist里添加如下字段LSApplicationQueriesSchemes,為Array類型,然后在里面添加兩個小選項,分別為weixin和wechat
注意!!!下面這三處? 一定要對應(yīng)上? 少一不可
如果不回調(diào),APPdelegate里寫上這個
//被廢棄的方法如下
- (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)前時間
time_t now;
time(now);
// 時間戳
//NSString *timestamp = [NSString stringWithFormat:@"%ld", now];
// 隨機字符串
//NSString *nonceStr = [[self md5:timestamp] uppercaseString];
//訂單id
NSString *prepayid =? _prepayid;
PayReq *request = [[PayReq alloc] init];
/** 商家向財付通申請的商家id */
request.partnerId = WXPartnerid;
/** 預(yù)支付訂單 */
request.prepayId= prepayid;
/** 商家根據(jù)財付通文檔填寫的數(shù)據(jù)和簽名 */
request.package = @"Sign=WXPay";
/** 隨機串,防重發(fā) */
request.nonceStr= _noncestr;
/** 時間戳,防重發(fā) */
request.timeStamp = [_timestamp intValue];
/** 商家根據(jù)微信開放平臺文檔對數(shù)據(jù)做的簽名 */
request.sign= _sign;
/*! @brief 發(fā)送請求到微信,等待微信返回onResp
*
* 函數(shù)調(diào)用后,會切換到微信的界面。第三方應(yīng)用程序等待微信返回onResp。微信在異步處理完成后一定會調(diào)用onResp。支持以下類型
* SendAuthReq、SendMessageToWXReq、PayReq等。
* @param req 具體的發(fā)送請求,在調(diào)用函數(shù)后,請自己釋放。
* @return 成功返回YES,失敗返回NO。
*/
[WXApi sendReq: request];
最近接到一個項目,需要做App微信支付 iOS 微信支付 小程序支付 微信公眾號支付 在這個過程中走了很多彎路。因此記錄一下
App微信支付 iOS 微信支付 小程序支付
在app支付中查看 uni-app官網(wǎng) ? 可以實現(xiàn)? app微信支付? ?App微信支付 iOS 微信支付 小程序支付
注:iOS 微信支付 需要調(diào)起上面鏈接里面的App支付?可以實現(xiàn)?iOS 微信支付,需要在蘋果開發(fā)賬號配置一些東西詳細看文檔? 并且IOS只能打包在手機測試
微信公眾號支付
查看文檔? ;index=6 ? 里面有詳細的流程,我遇到了一些坑? 做之前建議小伙伴們把需要的東西提前準(zhǔn)備好??
注: 微信支付需要openid 前端需要拿code去換取后臺的openid? 獲取code的請看問文檔 微信開放文檔
;redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.phpresponse_type=codescope=snsapi_userinfostate=STATE#wechat_redirect
上面的鏈接需要填appid??redirect_uri而redirect_uri 需要urlEncode 對鏈接進行處理?scope的參數(shù)snsapi_base不彈出授權(quán)?snsapi_userinfo彈出授權(quán)
在Apple的文檔中,scheme在URL相關(guān)的內(nèi)容中出現(xiàn)過,比如:
緊接著這一段,有如下說明:
詳情點擊 這里 。可以看出,scheme是URL中 : 之前的部分。
在iOS/macOS/WatchOS 2中,可以利用scheme來標(biāo)記APP并且通過它進行一些簡單的通信。
微信、支付寶、微博等應(yīng)用的第三方登錄、支付、分享功能,都是通過scheme來實現(xiàn)的。下面我們用微信的登錄為例,來講解一下scheme的使用過程。
要使用微信的授權(quán)登錄功能,首先要去微信開放平臺創(chuàng)建一個應(yīng)用,需要我們填寫應(yīng)用名稱、icon和Bundle Identifier,之后微信會把應(yīng)用的AppId和AppSecret給我們。然后根據(jù)AppID集成微信的SDK,并且在URL types里面添加一個以appid為scheme的item。到這里,微信的分享功能就集成完成了。那么,每一步都在做什么呢?
其中,第3步中是否到服務(wù)器驗證應(yīng)該可以通過抓包來看到,但是我懶了,沒有做。也不影響整體的流程。
因為本人并不是微信的開發(fā)人員,以上內(nèi)容可能會有出入,微信在安全方面做的應(yīng)該更好。但是,大致的流程應(yīng)該就是這樣。其他平臺、功能應(yīng)該差別也不大。如有錯誤或者疑問可以在下面留言。
PS: 玩王者榮耀遇到的坑貨太多,弄的很郁悶,又無處發(fā)泄,我就自己做了一個《舉報坑貨》的APP,目前只有iOS版本的基本功能,歡迎試玩吐槽。(QQ群:280597764)
當(dāng)前名稱:微信ios支付開發(fā),iOS 微信支付開發(fā)
文章路徑:http://chinadenli.net/article2/dsdsooc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、小程序開發(fā)、網(wǎng)站制作、標(biāo)簽優(yōu)化、網(wǎng)站營銷、App設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)