不接入微信sdk,在APP中实现微信分享,支付
2017-04-21 15:56
537 查看
前段时间在很多地方接入了微信的sdk,发现过程比较繁琐,此外因为导入的sdk比较大会影响最终APP打包的体积,所以就有了不接入sdk也实现相同的功能的想法。 要实现这个目标我个人认为最困难的地方是不知道我们自己的app在调用微信时会传递怎样的参数给微信。如果知道了参数那么实现这个目的就比较简单了后来经过了一番波折最终获取到了微信分享好友和朋友圈以及微信支付的通信参数。 进入正题吧,首先要在一个APP中调起另外一个APP我们都知道要实现这个方法:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
1
1
这里的URL将会决定到底会调起哪个APP不卖关子了当:
url = @”weixin://app/wx63e70d351f028e3c/sendreq/?”;
时就会吊起微信分享,wx63e70d351f028e3c这个值是你在微信开发者平台注册APP时微信给你的URL Schemes。但是仅仅有这个是不够的,要知道分享的时候必然会伴随这数据的传递,这些数据可以决定你是分享文本还是图片或者视频等等。那么怎么获得这些数据的形式现在先放一放,这里主要说的是怎么把这些数据从我们自己的 APP传递给微信。iOS有个粘贴板可以实现应用简单的数据通信。
NSDictionary *dic1 = @{ @"command":@"1020", @"result" :@"1", @"returnFromApp":@"0", @"scene":@"0", @"sdkver":@"1.5", @"title":@"不接微信的sdk成功进行微信分享了" }; NSDictionary *diction = @{@"wx63e70d351f028e3c":dic1};
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
dic1的key: scene的值决定你是分享到好友还是分享到朋友圈,这个根据微信官方文档可以确定当值为0和1是将分别分享到朋友圈和好友。
字典diction是我们的应用将要传递给微信的数据,在这要首先转换个数据类型进行数据编码方便进行下一步的操作
NSData *output1=[NSPropertyListSerialization dataWithPropertyList:diction format:NSPropertyListBinaryFormat_v1_0 options:0 error:nil];
1
1
这个方法是粘贴板的数据编码方法,然后就可以将数据存入粘贴板了:
[[UIPasteboard generalPasteboard] setData:output1 forPasteboardType:@"content"];
1
2
1
2
最后我们要实现这个方法就可以进行微信分享了:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"weixin://app/wx63e70d351f028e3c/sendreq/?"]];
1
1
最后为了实现分享后的回调你要添加微信的URL Schemes。
看完整的代码,这个是最简单的分享文本了:
NSDictionary *dic1 = @{ @"command":@"1020", @"result" :@"1", @"returnFromApp":@"0", @"scene":@"0", @"sdkver":@"1.5", @"title":@"不接微信的sdk成功进行微信分享了" }; NSDictionary *diction = @{@"wx63e70d351f028e3c":dic1};NSData *output1=[NSPropertyListSerialization dataWithPropertyList:diction format:NSPropertyListBinaryFormat_v1_0 options:0 error:nil];
[[UIPasteboard generalPasteboard] setData:output1 forPasteboardType:@"content"];[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"weixin://app/wx63e70d351f028e3c/sendreq/?"]];
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
下面说说怎么进行微信支付,同样的要想进行支付也要调起微信的那么:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
1
1
这个方法最终也是要调用的,可能你也看出来了,调用微信支付的URL值是关键,不罗嗦了进行微信支付要比进行微信分享简单多了,微信支付的信息可以直接写在url后面不需要通过粘贴板的这是微信支付的URL值:
NSString *url = @"weixin://app/wx63e70d351f028e3c/pay/?noncestr=1q8XRJDjqO&partnerid=1234499502&package=Sign%3DWXPay&prepayid=wx20160325152953b84e5404140168616407×tamp=1458890994&sign=9326D72E6EE0891983B81B1F83D3B5C4";
看了这url你或许就明白了,pay代表了支付,其他的诸如noncestr,partnerid,prepayid……这些值都代表了一些支付信息比如商户号,订单号,签名……这些信息在这就不详细说明了,你可以在微信的官方文档中获得这些值的解释。
好了看微信支付的完整代码,很简单就一行:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"weixin://app/wx63e70d351f028e3c/pay/?noncestr=1q8XRJDjqO&partnerid=1234499502&package=Sign%3DWXPay&prepayid=wx20160325152953b84e5404140168616407×tamp=1458890994&sign=9326D72E6EE0891983B81B1F83D3B5C4"]];
我这个商户号有时会被微信封掉没办法进行支付,你可以把相关信息替换成你自己的。
最后,无论是支付宝支付,QQ登录,微博分享……这些功能都可以通过上面的思路不接入官方的SDK直接实现相关的功能。关键点就在于一或取要传递信息的内容格式,二是要获取数据传输方式。
相关文章推荐
- 不接入微信sdk,在APP中实现微信分享,支付
- cocos2dx3.15接入微信SDK实现登录和分享android studio2.3.3
- android 不调用微信,易信等SDK实现实现一键分享图片文字到微信,易信,以及全部可选app
- iOS APP接入支付宝SDK支付功能的实现(小白篇)
- Android平台好友点击微信分享的内容后跳转来源App的实现方案研究
- 关于android webview 端调原生app 的支付宝接口实现 还有BeeCloud(秒支付) 的接入使用
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈,后台实现
- 不使用官方SDK,实现微信分享(发送到朋友,发送到朋友圈)
- cocos2d手游之微信分享SDK接入指南
- android APP 中微信分享功能实现 的总结
- Android微信SDK分享实现,及分享结果监测
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到QQ,分享到微博
- 友盟分享——Android App接入微信开放平台注意事项
- 微信APP支付-Java后台实现
- 不使用官方SDK,实现微信分享(发送到朋友,发送到朋友圈)
- 实现微信JS-SDK分享自定义标题和图片
- Android微信SDK实现分享
- 实现微信App支付---关于Android实现App支付时的注意事项(或者叫坑)
- android APP 中微信分享功能实现 的总结