微信支付
2016-03-21 12:33
666 查看
先到
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1下载下面两个:
下载完成后
然后把SDK导入工程
然后到
http://kf.qq.com/faq/120911VrYVrA150906F3qqY3.html注册需要钱哦 这个只是APPID的注册流程注册完得到相关的信息
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=3_1打开SDK里面会有一个read_me.txt
然后导入类库
然后到info.plist导入
<key>LSApplicationQueriesSchemes</key> <array> <string>weixin</string> </array> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
然后info.info.plist
看看有没有
然后点击工程
然后到工程AppDelegate.m
微信测试 APPID wxb4ba3c02aa476ea1 1.导入微信支付 SDK,注册微信支付 2.设置微信APPID 为URL Schemes 3.发起支付,调用微信支付 4.处理支付结果
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [WXApi registerApp:@"这里写APPID" withDescription:@"wxdemo"];//这里天名字 return YES; }
然后在AppDelegate.m上面的代码下面添加
-(void)onResp:(BaseResp *)resp { if ([resp isKindOfClass:[PayResp class]]) { //返回支付结果,实际支付结果需要取微信服务端查询 NSString *strMsg = @"支付结果"; switch (resp.errCode) { case WXSuccess: strMsg = @"支付成功"; NSLog(@"支付成功-PaySuccess,resp.errCode = %d",resp.errCode); break; default: strMsg = @"支付失败"; NSLog(@"支付失败-PaySuccess,resp.errCode = %d,resp.errStr = %@",resp. errCode,resp.errStr); break; } UIAlertController *alertController = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"%d",resp.errCode ]message:resp.errStr preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *sure = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [alertController addAction:sure]; [self.window.rootViewController presentViewController:alertController animated:YES completion:^{ }]; } }
然后在在上面代码的下面添加
//跳到第三方时调用 -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options { return [WXApi handleOpenURL:url delegate:self]; } //支付完或分享完 -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [WXApi handleOpenURL:url delegate:self]; }
然后在ViewController.m文件里吗添加
+ (NSString *)jumpToBizPay { if (![WXApi isWXAppInstalled]) { NSLog(@"该设备没有安装微信"); return @"该设备没有安装微信"; } if (![WXApi isWXAppSupportApi]) { NSLog(@"该设备不支持,支付功能"); return @"该设备不支持,支付功能"; } //============================================================ // V3&V4支付流程实现 // 注意:参数配置请查看服务器端Demo // 更新时间:2015年11月20日 //============================================================ NSString *urlString = @"http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=ios"; //解析服务端返回json数据 NSError *error; //加载一个NSURL对象 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]; //将请求的url数据放到NSData对象中 NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; if ( response != nil) { NSMutableDictionary *dict = NULL; //IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中 dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error]; NSLog(@"url:%@",urlString); if(dict != nil){ NSMutableString *retcode = [dict objectForKey:@"retcode"]; if (retcode.intValue == 0){ NSMutableString *stamp = [dict objectForKey:@"timestamp"]; //调起微信支付 PayReq* req = [[PayReq alloc] init]; req.partnerId = [dict objectForKey:@"partnerid"]; req.prepayId = [dict objectForKey:@"prepayid"]; req.nonceStr = [dict objectForKey:@"noncestr"]; req.timeStamp = stamp.intValue; req.package = [dict objectForKey:@"package"]; req.sign = [dict objectForKey:@"sign"]; [WXApi sendReq:req]; //日志输出 NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[dict objectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign ); return @""; }else{ return [dict objectForKey:@"retmsg"]; } }else{ return @"服务器返回错误,未获取到json对象"; } }else{ return @"服务器返回错误"; } }
然后创建点击事件
- (void)viewDidLoad { [super viewDidLoad]; UIButton *button=[[UIButton alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width/2-50, [UIScreen mainScreen].bounds.size.height/2-30, 100, 30)]; [button setTitle:@"微信支付" forState:UIControlStateNormal]; [button addTarget:self action:@selector(payAction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; }
点击事件
- (void)payAction:(UIButton *)sender { NSLog(@"%@",[ViewController jumpToBizPay]); }
这个需要真机测试 是真的打钱 但打钱的数量由商家确定
相关文章推荐
- Zabbix监控整合OneAlert报警平台实现邮件、短信、微信、电话多方式报警
- 微信开发之访问微信接口(带参数)
- 微信开发之解析xml
- 微信开发之获取accessToken
- iOS微信支付
- 微信接口 菜单 40016
- 微信语音idk的demo学习
- 对话框小程序
- 微信退款demo--Java
- 当OA遇到微信,通达OA官方微信公众号来啦!
- 微信登入,获取用户信息
- QQ也可以和微信一样只能共同好友见评论
- 微信公众平台开发(一) 配置接口
- 小程序分析
- [编程题]微信红包
- 我运营公众号这一个月
- 微信开发01-申请新浪SAE
- 微信开发环境搭建
- 微信图片反防盗链的方法(此图片来自微信公众平台,未经允许不可引用)
- 第一个小程序:用户登录