內建微信支付詳細步驟及說明——解決點選微信支付隻有一個确定按鈕的情況
最近做了微信支付的功能,有比較坑的地方,在這裡寫出來和大家分享下,避免大家多走彎路,浪費時間。
本文詳細介紹了微信支付的每一步,并且可以解決點選跳轉到微信用戶端隻有一個确定按鈕的情況,請仔細往下看吧
注:來看“解決點選微信支付隻有一個确定按鈕的情況”的同學直接看最下面,(四)即可解決該情況,若還未解決,歡迎加群
(一)準備工作
1、首先要去微信的開放平台(http://open.weixin.qq.com)進行開發者賬号的注冊
2、在開發者賬号裡建立一個APP應用,然後填寫必填資訊送出稽核
3、進入APP應用,在接口資訊中,進行申請“獲得微信支付能力”的功能,期間會送出相關的公司營業資訊證明等
說明:(1)說實話,不是我吐槽,他這個稽核也太慢了
(2)以上3步有的公司已經給弄好了,碼農們直接向上級要所需的參數就可以了,包括:商戶号、商戶密鑰、AppID
一般第一步不用看啦 ,那麼開始第二步 >_<
(二)導入相應的檔案,配置環境
微信官方文檔一份:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417694084&token=36432ad73d9973c2604798c8d42f5b4c84b411ed&lang=zh_CN
>>>>>>>>>>>先看1、2、下面說明<<<<<<<<<<<
1、首先到微信開放平台——>登入——>資源中心——>資源下載下傳
2、step1:在你的工程裡面,建議建立一個檔案夾“微信支付”,其下建立兩個子檔案夾:一個WeiXinSDK,一個WeiXinFiles
step2:把解壓之後的檔案全放進<WeiXinSDK>裡面
step3:把我demo裡面內建的微信支付的檔案放在<WeiXinFiles>裡面
>>>>>>>>>>>>>>>重要說明<<<<<<<<<<<<<<<<<<
可以省略1、2、兩步,直接把demo裡面有一個<微信支付>的檔案夾拖到你工程的根目錄即可,如果你那麼做了,那麼配置路徑可以直接寫此路徑:$(SRCROOT)/你的項目工程名/微信支付/WeixinSDK
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3、在你的工程檔案中選擇Build Setting,在Search Paths中添加 libWeChatSDK.a ,WXApi.h,WXApiObject.h 三個檔案所在位置
(1)選擇Build Setting —> 輸入search —>找到Search Paths
(2)配置Header這一項的路徑,你的微信SDK存放在什麼檔案夾就寫哪個檔案夾的路徑,一般為:$(SRCROOT)/你的項目工程名/微信支付/WeixinSDK
【路徑這個比較愛出錯,如果你配置出了問題,歡迎加群:171907129,本人會耐心解答的】
4、在TARGETS下,選擇info,在URLTypes裡面添加一項
>>>>>>SDK包裡的重要說明<<<<<<<
1、iOS 9系統政策更新,限制了http協定的通路,此外應用需要在“Info.plist”中将要使用的URL Schemes列為白名單,才可正常檢查其他應用是否安裝。
受此影響,當你的應用在iOS 9中需要使用微信SDK的相關能力(分享、收藏、支付、登入等)時,需要在“Info.plist”裡增加如下代碼:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
或者配置白名單域名pingma.qq.com
2、開發者需要在工程中連結上 CoreTelephony.framework、sqlib3.tbb、libz.tbd、libc++.tbd
3、解決bitcode編譯不過問題,設定bit code為NO
4、AFNetworking也有用到,如果有不用重複導入
(三)開始寫代碼
1、在APPdelegate.h中導入頭檔案,遵守微信的delegate
#import "WXApi.h"
@interface AppDelegate : UIResponder <WXApiDelegate>
2、在didFinishLaunchingWithOptions:方法中注冊你的appId;
//注冊微信appId
[WXApi registerApp:@"填寫你的appId"]
3、openURL:方法
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
if(url != nil && [[url host] isEqualToString:@"pay"]){
//微信支付
NSLog(@"open:微信支付");
return [WXApi handleOpenURL:url delegate:self];
}
else{
//其他
return YES;
}
}
4、handleOpenURL:方法
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
NSLog(@"1url = %@ [url host] = %@",url,[url host]);
if(url != nil && [[url host] isEqualToString:@"pay"]){
//微信支付
NSLog(@"handle:微信支付");
return [WXApi handleOpenURL:url delegate:self];
}
else{
//其他
return YES;
}
}
5、實作WXApiDelegate協定的兩個方法(demo中含詳細代碼及說明)
-(void)onReq:(BaseReq *)req{
}
-(void)onResp:(BaseResp *)resp{
}
(四)>>>>>>>>>>>>>需要你修改的資訊<<<<<<<<<<<<<<<<
>>> 打開LVWxPay.m檔案
1、應用APPID appid = @"填寫你的appId";
2、微信支付商戶号 mch_id = @"填寫你的商戶号";
3、支付結果異步通知的網站 notify_url [email protected]"填寫通知的網址”;
4、商戶密鑰 partner = @"填寫你的商戶密鑰";
5、request.sign = [md5 createMD5SingForPay:@"填寫你的appId" partnerid:request.partnerId prepayid:request.prepayId package:request.package noncestr:request.nonceStr timestamp:request.timeStamp];
>>> 打開DataMD5.m檔案
1、添加商戶密鑰key字段
[contentString appendFormat:@"key=%@", @"填寫你的商戶密鑰"];
>>>>>>【注意】:除了上面所寫參數外,其他參數不需要修改,也不要修改,否則可能引起簽名錯誤 <<<<<<<
那麼做完上面的工作之後,我們就可以愉快的支付啦.......
//>>>>>>>>>>>>>微信支付<<<<<<<<<<<<<<<<
1、在你需要去支付這個功能的檔案裡面,導入頭檔案
#import "LVWxPay.h"
2、在你點選去微信支付的時候實作下面方法(詳細說明請看demo)
[LVWxPay WXPayWithbody:productDes andtrade_no:trade_no andPrice:total_fee];
本人是一名碼農女,最近剛開通的部落格,想和大家分享自己的經驗,也在向大神們學習,如果對以上内容有什麼疑問或者想要互相交流的,歡迎進群:171907129交流學習;
另外說明:本文涉及到的demo我放在群共享裡面,有需要的加下群去拿吧(因為剛開通,不知道把檔案添加到哪裡),陸續還會在群共享裡面添加其他資料,歡迎下載下傳