我当初买苹果没有申请ld用别人的下的微信,现在微信更新不了,我卸载win10更新了,然后用别的ld下载微信,就出

iOS微信支付步骤以及出现的问题总结(二) - 简书
<div class="fixed-btn note-fixed-download" data-toggle="popover" data-placement="left" data-html="true" data-trigger="hover" data-content=''>
写了114323字,被464人关注,获得了453个喜欢
iOS微信支付步骤以及出现的问题总结(二)
前提是已经创建完应用了在微信的官网上。根据上一篇的微信获得支付能力的步骤,这一篇主要制作微信支付的demo。回顾上一篇内容请看查看下一篇 。往往回忆就是痛苦的因为记不住曾经的经历,还是喜欢简单粗暴。1.微信支付的demo与SDK。2.下载完之后,里面有好多的没用的文件,包括登录,分享,等等。(看到这里好恶心,为啥不单独做一个demo呢,哎,还能不能愉快的玩耍了)。如下 的文件夹目录的内容:
3.创建一个wxDemo工程。4.查看微信的官方文档。5.因为现在 的工程是iOS9 ,所以需要配置网址与白名单。
配置网址与白名单
6.改变bitcode设置为NO。
改变bitcode为NO
7.添加URL Types,如下。
添加URL Schemes
8.添加微信SDK到wxDemo里面。9.添加框架,用来安装应用。 。需要添加以下库:
SystemConfiguration.framework,
libz.dylib,
libsqlite3.0.dylib,
libc++.dylib
添加依赖库
10.在Appdelegate.m里面添加如下代码://注册微信支付[WXApi
registerApp:@"wxXXXXXXXXXX"]; 此时运行编译,快捷键commd+b 运行程序会出现以下错误,以下是错误的信息:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from:
objc-class-ref in libWeChatSDK.a(MTAHelper.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
错误的图片:
错误信息的展示
11.修改错误操作,由于缺少一个依赖库:添加一个CoreTelephony.frame 依赖库,就可以解决了。
添加依赖库
12.根据微信里面的demo,添加需要的代码。以下是文件目录的一些解释:里面主要的方法就是支付的网络请求以及调用微信客户端的代码。
13.添加一个按钮的方法,实现支付。说明:支付目前来说有两种实现方式,一种是本地的app直接实现跳转进行支付;另一种方式是通过后台服务器进行网络请求。下面的这一种是通过服务器进行支付的跳转。
- (void)WXPay {
NSString*urlString=@"http://wxpay./pub_v2/app/app_pay.php?plat=ios";
//解析服务端返回json数据
//加载一个NSURL对象
NSURLRequest*request = [NSURLRequestrequestWithURL:[NSURLURLWithString:urlString]];
//将请求的url数据放到NSData对象中
NSData*response = [NSURLConnectionsendSynchronousRequest:requestreturningResponse:nilerror:nil];
if(response !=nil) {
NSMutableDictionary*dict =NULL;
//IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中
dict = [NSJSONSerializationJSONObjectWithData:responseoptions:NSJSONReadingMutableLeaveserror:&error];
NSLog(@"********url:%@",urlString);
if(dict !=nil){
NSMutableString*retcode = [dictobjectForKey:@"retcode"];
if(retcode.intValue==0){
NSMutableString*stamp= [dictobjectForKey:@"timestamp"];
//调起微信支付
//注意:此处的key一定要与demo中的key的字符一致,一个也不能少,一个也不能错。
PayReq* req= [[PayReqalloc]init];
req.partnerId= [dictobjectForKey:@"partnerid"];
req.prepayId= [dictobjectForKey:@"prepayid"];
req.nonceStr= [dictobjectForKey:@"noncestr"];
req.timeStamp= stamp.intV
req.package= [dictobjectForKey:@"package"];
req.sign= [dictobjectForKey:@"sign"];
[WXApisendReq:req];
//日志输出
NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[dictobjectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign);
NSLog(@"%@",[dictobjectForKey:@"retmsg"]);
NSLog(@"服务器返回错误,未获取json对象");
NSLog(@"服务器返回错误");
14.在完成此处之后,点击支付按钮会出现下面的问题:在跳转到支付界面之后,仅仅会出现一个“确定”的白色按钮。如下图:
支付出现问题
通过查找信息,是由于配置的参数问题。因此我们不用服务器端进行网络请求直接用自己生成这些参数,然后就可以实现支付功能了。15.下面是获取参数的解释。参数解释:partnerId: 商家向财付通申请的商家id(就是自己的id,也就是在你申请开发者资质认证之后,有一个商户平台,这个平台对应的id,就是你自己的id。好像还没有说明白。)获取方式:打开链接,直接将微信发送给你的邮件里面的内容登陆商户平台,就找到了partnerid了。
prepayId: 预支付订单(需要向微信服务器提交申请后返回的一个支付交易ID)获取方式:这个一般情况下是服务器端已经申请好的,客户端直接调用。a、微信的服务端返回的参数的说明:。(看着很乱,可是呢,还是太乱)b、还要生成一个签名,这个官方文档也是写了。(虽然看着很简单,但是还是搞不定,坑太多,哎,没办法就是这么坑,多看几遍就好了)根据微信的接口,返回的xml的数据参数。将数据解析之后,就能获得prepayid。nonceStr: 随机串,防重发(随机字符串,不长于32位)获取方式:
注意:#pragma mark-
需要引入依赖库libcommonCrypto.tbd并且引入头文件#import &CommonCrypto/CommonGigest.h&
char*str = [input
UTF8String];
result[CC_MD5_DIGEST_LENGTH];
CC_MD5(str,strlen(str),result);
NSMutableString*
ret = [NSMutableString
stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];
for(int i = 0 ;i &CC_MD5_DIGEST_LENGTH;i++) {
[ret appendFormat:@"%02X",result[i]];
NSLog(@"%@",[ret
uppercaseString]);
注意:就是一个随机数。noncestr就是在第一次生成签名的时候的那个随机数,不要再次生成。timeStamp:时间戳,防重发(标准北京时间,时区为东八区,自日 0点0分0秒以来的秒数)获取方式:NSString* timeString = [NSString
stringWithFormat:@"%.0f"[[NSDate date]timeIntervalSince1970]];由于:@property(nonatomic,assign)UInt32
timeS所以在提交的时候需要转换成对应的格式,UInt32 格式。sign:商家根据微信开放平台文档对数据做的签名,这里的签名不同于你第一次申请的prepayid的签名,这里的签名的参数是appid,prepayid,partnerid,timestamp,noncestr,package
这几个排序后再拼接的key最后生成一个sign。上面这些只是介绍了这些参数如何获取,在下面一篇文章中,开始仔细介绍,最后一步的支付流程,也就是配置参数、服务器相关的一些配置。参考资源:1.2.
喜欢这篇文章,就点个喜欢,打赏随意喽~。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
主要是在IT届工作的同行们提供一个技术钻研,同时扩充知识层面,能够在更深入的层次发展自己,专题投稿审核标准:1.
以技术为准,如果是...
· 416人关注
至少比在眼前失去许多东西...还要好得多!只要是能做的事,我都要去做!--路飞
分享开发的点滴,大家共同进步!
· 281人关注
菜鸟修炼成大神
· 58人关注
喜欢这篇文章,就点个喜欢,打赏随意喽~。
选择支付方式:就是关于微信和QQ,我QQ已经更新了但是Apple store里面还显示正在更新的状态,重启我也没用,卸载重下也不行,我把微信卸载了然后也显示正在下载中的状态,可我根本没下怎么办啊
已有2个回答
[见习专家]
专家星级&:&1.5星
问答堂专家综合评分
问题评分&:&2.6星
采纳、点赞&:&0星
二次回复率&:&0星
内容为广告/垃圾,我要举报!
特聘专家具有协助内容审核的特权
举报后内容将不能在前台展示
错乱举报会导致该权利被剥夺
选择举报原因×
擅长领域:
参与话题:
关机& 重启一次就好了
追问:重启好几次了不行
留下你的评论
那就只有恢复手机了
在通用里面 恢复到初始状态
不过提前备份好数据
内容为广告/垃圾,我要举报!
特聘专家具有协助内容审核的特权
举报后内容将不能在前台展示
错乱举报会导致该权利被剥夺
选择举报原因×
擅长领域:
参与话题:
& & & 楼主你好,看来楼主也是有强迫症的,如果实在不行,直接刷固件吧。
留下你的评论
微信公众账号ZOL问答堂
关注微信,随时随地解答您的疑惑
ZOL问答堂官方微博@ZOL问答堂
关注成功!该问题被回答后,将给您发送站内短信。
您也可以通过关注问答堂微信,及时获得您关注问题的回答。
微信关注问题方法“”}

我要回帖

更多关于 ie10无法卸载全部更新 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信