前段时间在很多地方接入了微信的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&timestamp=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&timestamp=1458890994&sign=9326D72E6EE0891983B81B1F83D3B5C4"]];

我这个商户号有时会被微信封掉没办法进行支付,你可以把相关信息替换成你自己的。 
最后,无论是支付宝支付,QQ登录,微博分享……这些功能都可以通过上面的思路不接入官方的SDK直接实现相关的功能。关键点就在于一或取要传递信息的内容格式,二是要获取数据传输方式。

不接入微信sdk,在APP中实现微信分享,支付的更多相关文章

  1. react-native 的微信SDK辅助包,支持微信登录、微信分享、微信支付

    微信SDK集成示例,现已完成微信授权登录,之后将陆续包装分享等其他功能. ReactNative高级交流群 127482131 或访问  http://blog.1ygowu.com ReactNat ...

  2. app中使用微信分享注意事项

    1.  在微信公众平台开通一个微信公众号,https://mp.weixin.qq.com 2.  将自己制作好的已签名的app安装到手机上 3.  下载微信开放平台获取应用签名的apk--- gen ...

  3. android APP 中微信分享功能实现 的总结

    //花了很长时间最终完成了微信分享功能,中间走了很多弯路,在此做一下小结,希望对在应用中使用到微信分享的朋友有所帮助. 主要问题就是下面两个: 1.为什么运行了项目之后,微信分享只是闪了一下就没有了? ...

  4. 利用微信支付的订单查询接口可以在APP 中提高支付的可靠性

    最近公司有一个应用,用户可以在微信公众号上面下单,也可以在APP 中下单. 当用户在公共号上面下单时,微信支付成功可以返回微信支付单号,但是在APP 中用户微信支付时,个别时候会出现用户已经付款成功, ...

  5. iOS-不用微信SDK唤起微信支付

    作者:TianBai 原文链接:http://www.jianshu.com/p/8930b4496023 要想知道微信SDK是如何调起微信客户端,那么咱们先看看微信SDK到底做了什么 前期准备 接入 ...

  6. 【Win10 UWP】微信SDK基本使用方法和基本原理

    上回讲到,作为一个长期散播温暖,散播希望的小清新无公害WP开发者,继QQ SDK之后,又把UWP微信SDK这茬了结了,仅供学习交流. 1.安装微信SDK for UWP 微信官方此前明确说明短时间内暂 ...

  7. Xamarin Android绑定微信SDK

    现在几乎所有的APP都集成了向微博,微信等社交平台分享的功能.这些社交平台官方也提供了SDK让开发者使用,对于Android和IOS平台而言,只需要下载官方的SDK,按照官方说明文档进行集成就可以轻松 ...

  8. iOS版微信开发小结(微信支付,APP跳转微信公众号)

    最近公司心血来潮,一心要搞微信.废话不多说,直接上干货. 开发前准备: 1.在微信开发者平台获取开发者认证:(一年300元人民币) PS:具体流程按照微信流程指示操作即可,在这就不废话了. 2.下载微 ...

  9. 微信网页版APP - 网页微信客户端电脑版体验

    微信网页版很早就出来了,解决了很多人上班不能玩手机的问题.微信电脑版-网页微信客户端,直接安装在桌面的微信网页版,免去了开浏览器的麻烦.双击就启动了,和其他的应用程序一样:运行过程中可以隐藏在桌面右下 ...

随机推荐

  1. CentOS7安装Jdk1.8

    一.前期准备 a) 首先从官网上下载Jdk 8 for Linux x64到window下. b) 我这边用的最小安装,所以没有安装centos自带的openjdk,如果你安装时,不是最小安装的话,可 ...

  2. Keras学习率调整

    Keras提供两种学习率适应方法,可通过回调函数实现. 1. LearningRateScheduler keras.callbacks.LearningRateScheduler(schedule) ...

  3. python路径相关操作

    #获取当前文件所在目录filedir = __file__ print os.path.dirname(filedir) #获取文件名print os.path.basename(filedir)

  4. (已解决)#warning:尚未配置[微信]URL Scheme:wx4868b35061f87884, 无法使用进行授权。

    #warning:尚未配置[微信]URL Scheme:wx4868b35061f87884, 无法使用进行授权. (说白了就是注册白名单) ” -canOpenURL: failed for URL ...

  5. 关于Stuck Archiver的疑问

    客户使用crsctl stat res -t命令去查看RAC集群状态时,发现异常,知晓Stuck Archiver代表归档满,问我们为什么RAC是同一个库,只有实例1显示Stuck Archiver, ...

  6. PyQT5速成教程-4 Qt Designer实战[上]

    本文由 沈庆阳 所有,转载请与作者取得联系! 前言 在前面几节的学习中,我们对PyQt的基本使用.Qt Designer与Python编码的工作流程有了基本的学习.同时也掌握了Qt Designer中 ...

  7. 在Windows10中运行debug程序

    下载debug.exe 下载DOSBox 安装DOXBox,尽量不要装在C盘 将debug.exe放到F:/TASM 运行DOSBox.exe,执行 mount c f:\TASM #挂载目录 c: ...

  8. C++的类型转换

    一.类型转换名称和语法 1.C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a    2.C++风格的类型转换提供了4种类型转换操作符来应对 ...

  9. django 1.9.7 css控制模板样式

    问题:css样式不能控制html样式(针对开发环境,不针对生产环境) 现象: django.template.exceptions.TemplateSyntaxError: Invalid block ...

  10. hdu5067

    题意 给了一个n*m的网格 然后一台挖掘机从(0,0) 这个位置出发,收集完全部的石头回到(0,0)挖掘机可以有无限的载重 用旅行商处理 dp[k][i] 表示在这个集合中最后到达i的最小距离,用集合 ...