前段时间在很多地方接入了微信的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. nodejs发送邮件

    这里我主要使用的是 nodemailer 这个插件 第一步 下载依赖 cnpm install nodemailer --save 第二步 建立email.js 'use strict'; const ...

  2. CSU 1849 Comparing answers(数学矩阵)

    Comparing answers 离散数学真的要好好学啊:一个邻接矩阵(这个矩阵一定是n×n的方阵,n是图的节点个数),表示的是从i到j有几条通路的时候,矩阵的1次方就代表从从i到j长度为1的路径通 ...

  3. ssh简单入门级案例教程

    准备工作:struts2.3.34+spring4.2.2+hibernate3.3.2 导入需要的开发包: struts开发包---注意:javassist-3.18.1-GA.jar包与hiber ...

  4. node.js中ws模块创建服务端和客户端,网页WebSocket客户端

    首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ...

  5. 四 js Math数学简单使用

    //Math是全局的 //Math.PI 数学里的3.1415926.... console.log(Math.PI); //取随机数 //js提供的随机函数 Math.random() --> ...

  6. Sitecore CMS中的项目如何配置帮助文本

    如何在Sitecore CMS中的项目上配置帮助文本. 所有Sitecore项目都有长短描述字段,以及“帮助链接”字段.这些字段有助于向内容编辑者提供其他信息.这对于很少编辑的项目和字段尤其重要,因为 ...

  7. Sql server 存储过程批量插入若干数据。

    测试时,经常需要生成大量数据来测试系统性能,此功能可以用存储过程快速生成. 1. 随机生成日期 DECLARE @Date_start datetime DECLARE @Date_end datet ...

  8. HashSet, HashTable

    HashTable 存储键值对 , Hashtable和Dictionary<TKey,TValue>都是存键值对 HashSet 只存储值,盛放不同的数据,相同的数据只保留一份 Hash ...

  9. File §2

    Previously speaking,File can be seen as one ducument, also can be seen as list of documents like dir ...

  10. webservice 生成客户端代码

    使用 jdk 自带工具 wsimport wsimport -keep http://webservice/url?wsdl