iOS集成微信支付各种坑收录
2016-05-09 14:53
330 查看
统一下单的参数要拼接成XML格式,使用AFN请求时要对参数转义,直接传入字典给AFN无法识别(这个接口微信demo中并没有提供示例)
解析统一下单会返回一个prepay_id字段,在调起支付接口中作为传入参数。
注意统一下单返回的数据是XML格式的数据,并且使用了"<![CDATA[" 开始,由 "]]>"转义,解析器会忽略CDATA中的数据,用常规方式无法解析。
可以使用这个代理方法
- (void)parser:(__unused NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
捕捉到xml中忽略的字符串,对忽悠字符进行解析。
可参照此文demo
签名最容易出错,严格按照官方给出的签名算法来,签名后可以将结果拿到微信提供网页上对比,和网页生成的一致即可。(签名错误的时候,会调转到微信app出现一个“确认”按钮,点击后又跳回商户app)
"调起支付接口"官网提供的请求参数有7个,实际上只需要6个,不需要appid这个参数,但在签名时,需要appid进行签名。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; //这里传入的xml字符串只是形似xml,但是不是正确是xml格式,需要使用af方法进行转义 manager.responseSerializer = [[AFHTTPResponseSerializer alloc] init]; [manager.requestSerializer setValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [manager.requestSerializer setValue:@"https://api.mch.weixin.qq.com/pay/unifiedorder" forHTTPHeaderField:@"SOAPAction"]; [manager.requestSerializer setQueryStringSerializationWithBlock:^NSString *(NSURLRequest *request, NSDictionary *parameters, NSError *__autoreleasing *error) { return xml; }];
解析统一下单会返回一个prepay_id字段,在调起支付接口中作为传入参数。
注意统一下单返回的数据是XML格式的数据,并且使用了"<![CDATA[" 开始,由 "]]>"转义,解析器会忽略CDATA中的数据,用常规方式无法解析。
可以使用这个代理方法
- (void)parser:(__unused NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
捕捉到xml中忽略的字符串,对忽悠字符进行解析。
可参照此文demo
签名最容易出错,严格按照官方给出的签名算法来,签名后可以将结果拿到微信提供网页上对比,和网页生成的一致即可。(签名错误的时候,会调转到微信app出现一个“确认”按钮,点击后又跳回商户app)
"调起支付接口"官网提供的请求参数有7个,实际上只需要6个,不需要appid这个参数,但在签名时,需要appid进行签名。
相关文章推荐
- 微信验证及自动回复
- David Camp 微信公众平台开发官方内容拓展版---PHP版本
- Android微信智能心跳方案
- 支付宝微信支付需要注意的地方
- 微信支付SDK-两行代码解决支付
- 微信编辑自定义菜单
- 微信支付开发-从零开始-Part3
- 基于微信的域名交易系统(进度汇报之微信接口)
- 基于微信的域名交易系统(进度汇报之功能实现现状)
- 一步一步实现iOS微信自动抢红包(非越狱)
- 微信分享操作JSSDK
- PHP微信开发之微信消息自动回复下所遇到的坑
- 基于微信的域名交易系统(进度汇报之页面设计原型)
- 60、微信-聊天页面ChatActivity
- 59、微信-我-设置SettingActivity
- 58、微信-我-我的二维码MyCodeActivity
- 57、微信-我Fragment_Profile
- 微信开发全局返回码说明
- 微信入坑第二弹【自动回复消息下】
- 微信公众平台(测试接口)准备工作