我們在集成sdk前需要到微信開放平臺註冊自己的應用,然後拿到對應的key,其實這個一般都是後臺來做,只要問後臺拿到key就行
微信支付集成SDK介紹cocopods集成SDK和手動集成SDK
一、cocopods集成SDK
1.需要安裝cocopods(安裝及使用方法參照點擊打開鏈接)
2、導入
pod 'WechatOpenSDK'
3.配置一下scheme(申請回來的key)
3.在AppDelegate.h中導入頭文件,以及實現代理
#import <WechatOpenSDK/WXApi.h>//微信支付
@interface AppDelegate : UIResponder <UIApplicationDelegate,WXApiDelegate>
4.在AppDelegate.m中實現一下方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[WXApi registerApp:@"wxd930ea5d5a258f4f"];//wxd930ea5d5a258f4f這串key是在微信開放平註冊該應用後獲得的,註冊一般是後臺去做的,叫後臺把key給你即可
return YES;
}
#pragma mark -- 重寫AppDelegate的handleOpenURL和openURL方法:--
//9.0前的方法,爲了適配低版本 保留
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
return [WXApi handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
return [WXApi handleOpenURL:url delegate:self];
}
//9.0後的方法
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
//這裏判斷是否發起的請求爲微信支付,如果是的話,用WXApi的方法調起微信客戶端的支付頁面(://pay 之前的那串字符串就是你的APPID,)
return [WXApi handleOpenURL:url delegate:self];
}
#pragma mark --你的程序要實現和微信終端交互的具體請求與迴應,因此需要實現WXApiDelegate協議的兩個方法:--
-(void) onReq:(BaseReq*)req{
//onReq是微信終端向第三方程序發起請求,要求第三方程序響應。第三方程序響應完後必須調用sendRsp返回。在調用sendRsp返回時,會切回到微信終端程序界面。
}
-(void) onResp:(BaseResp*)resp{
//如果第三方程序向微信發送了sendReq的請求,那麼onResp會被回調。sendReq請求調用後,會切到微信終端程序界面。
if([resp isKindOfClass:[PayResp class]])
{
PayResp*response=(PayResp*)resp;
NSString *strMsg = @"支付失敗";
switch(response.errCode){
case WXSuccess:
{
//服務器端查詢支付通知或查詢API返回的結果再提示成功
NSLog(@"支付成功");
strMsg = @"支付成功";
break;
}
case WXErrCodeUserCancel:
{
NSLog(@"用戶點擊取消");
strMsg = @"用戶點擊取消";
}
break;
default:
NSLog(@"支付失敗,retcode=%d",resp.errCode);
break;
}
}
}
5.在需要調用的地方進行調用
- (void)weixinPay{
PayReq *req = [[PayReq alloc] init];
//實際項目中這些參數都是通過網絡請求後臺得到的,詳情見以下注釋,測試的時候可以讓後臺將價格改爲1分錢
req.openID = @"appid";//微信開放平臺審覈通過的AppID
req.partnerId = @"partnerid";//微信支付分配的商戶ID
req.prepayId = @"prepayid";// 預支付交易會話ID
req.nonceStr =@"noncestr";//隨機字符串
// req.timeStamp = @"timestamp";//當前時間
req.package = @"package";//固定值
req.sign =@"sign";//簽名,除了sign,剩下6個組合的再次簽名字符串
if ([WXApi isWXAppInstalled] == YES) {
//此處會調用微信支付界面
BOOL sss = [WXApi sendReq:req];
if (!sss ) {
// [MBManager showMessage:@"微信sdk錯誤" inView:weakself.view afterDelayTime:2];
}
}else {
//微信未安裝
// [MBManager showMessage:@"您沒有安裝微信" inView:weakself.view afterDelayTime:2];
}
}
二、手動集成SDK
請到微信開放平臺下載SDK。
建議把iOS頭文件和支付示例都下載下來
1.導入上面那個iOS頭文件和庫下載下載出來的SDK包的就行,然後需要鏈接上依賴庫,在Target —> BuildPhases —> Link Binary With Libraries— 點擊+號 -> 搜索你需要的系統庫。
- SystemConfiguration.framework
- libz.tbd
- libsqlite3.0.tbd
- CoreTelephony.framework
- QuartzCore.framework
demo地址,碼字寫demo不容易,歡迎指點,喜歡的動動小手給顆星點擊下載demo