我们在集成sdk前需要到微信开放平台注册自己的应用,然后拿到对应的key,其实这个一般都是后台来做,只要问后台拿到key就行 使用详情参照https://blog.csdn.net/qq_33298465/article/details/80422571,demo里我也写注释了,欢迎大神指点,喜欢的动动小手给个星,妹子一个写个demo也不容易
微信支付集成SDK介绍cocopods集成SDK和手动集成SDK
一、cocopods集成SDK
1.需要安装cocopods(安装及使用方法参照https://blog.csdn.net/qq_33298465/article/details/59078425)
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。
下载微信SDK 建议把iOS头文件和支付示例都下载下来
1.导入上面那个iOS头文件和库下载下载出来的SDK包的就行,然后需要链接上依赖库,在Target —> BuildPhases —> Link Binary With Libraries— 点击+号 -> 搜索你需要的系统库。
SystemConfiguration.framework libz.tbd libsqlite3.0.tbd CoreTelephony.framework QuartzCore.framework
2.剩下的步骤参照cocopods第三步