V2版本和V3版本存在很大的差异。

1. 从成功通过微信支付商户的资料审核返回的邮件开始:

你可以获得这些参数  appid,appSecret,partnerID,    partnerKey(从平台上获得) 。

在v3中你获得不到v2所谓的“paySignKey”,--------- 这个把我害残了。当然在v3你真的不需要这个参数了。

2.在做微信支付的时候你要抛弃v2版本的做法,你不需要获得access_token,你不需要用sha1加密。我就是结合v2去做,然后越陷越深。

3. 首先我在做支付之前集成了shareSDK,因为里面有微信的sdk,然后就用sharesdk中的wxSDK了

4.在appdelegate.m中做些东西,这个就不罗嗦了。但要留意下

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation

这个方法,等下要用到。

5.打开微信的开放平台:http://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_1 , 记得一定要抛弃v2版本的思想,跟着“文档”走,因为这是最官方的了。

不得不承认这个文档有点渣。但大体步骤还是ok的。

6. 用统一下单的api生成预支付单,获取prepay_id.  根据文档的api以及相应的api必传参数

去做,这样才能获得prepay_id。

注意:

1. 签名生成算法根据文档来,注意要md5后 转化为  大写

2.发送post 请求的时候,参数不是NSDictionary,而是xml格式

,记得把NSDictionay 转化为文档上的xml格式。

NSURL *url = [NSURL URLWithString:strUrl];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:@"application/xml" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/xml" forHTTPHeaderField:@"Accept"];
[request setHTTPBody:[xml dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPMethod:@"POST"];

3. 然后解析返回的数据。获取prepay_id.

7. 构造支付请求。

8. 接收返回的响应。但在这里我又遇到了一个坑。就是我在自己的 WXPayEngine.m 设置微信的delegate,实现

- (void)onResp:(BaseResp *)resp ,可以当我去真正run的时候,这个东西就没被调用。然后我想在appdelegate.m 实现这个方法,但还是不被鸟。    ???why

我太想当然了。

记得在4中我说我们会用到的

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation

你就会发现原因了, 一直返回的都是no,然后就没调用你的delegate了 。但是我并不care这个no,这个delegate。

我只关注这个url 。

打印这个url,你会神奇 的发现这里有你想要的东西。这里我就不做在多解释了。你可以根据这个url做你要的逻辑:支付是否成功。

that‘s all ,thaks to read

ios微信支付 v3的更多相关文章

  1. 坑爹的微信支付v3,其实没有那么坑

    http://www.cnblogs.com/zskbll/p/wxpay.html 研究微信开发一年多了,每个新接口,都会第一时间进行研究.微信支付开放很久,一直没机会接触到支付接口,等了好久终于从 ...

  2. 到处都是坑的微信支付V3之 微信支付回调页面

    据上次 到处都是坑的微信支付V3 后很多园友在被虐了千百遍后终于跳转到了亲切的微信支付界面,但输入密码支付后却不知道怎么处理了,接下来补上支付后的处理流程. 1. html中根据前台支付后反馈信息成功 ...

  3. 到处都是坑的微信支付V3

    业务需要一个在微信上能付款的功能,于是乎想到了最普遍的支付宝,坑爹的是T与A是水火不容啊,默默的还是接微信支付吧,没想到从此掉进了连环坑…… 网上写微信支付接口的还是很多,PHP官方有(鄙视源码作者, ...

  4. 微信支付v3发布到iis时的证书问题(转)

    本文纯粹转载(原地址:微信支付v3发布到iis时的证书问题 ) 一开始报“出现了内部错误” 解决方法是 方法一 var cer = new X509Certificate(certpath, pass ...

  5. 微信支付[v3]

    原文:微信支付[v3] V2升级V3 顺便记录一下 ,文档: http://pay.weixin.qq.com/wiki/doc/api/index.html !!! 支付授权目录与测试人的微信帐号白 ...

  6. iOS微信支付集成

    概述 iOS微信支付集成 详细 代码下载:http://www.demodashi.com/demo/10735.html 支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧(纯 ...

  7. 微信支付v3开发(5) 扫码并输入金额支付

    关键字:微信支付 微信支付v3 动态native支付 统一支付 Native支付 prepay_id 作者:方倍工作室 本文介绍微信支付下的扫描二维码并输入自定义金额的支付的开发过程. 注意 微信支付 ...

  8. 为了Java微信支付V3开发包,我找出了微信支付文档至少六个错误

    1. 前言 最近忙的一批,难得今天有喘气的机会就赶紧把最近在开发中的一些成果分享出来.前几日分享了自己写的一个微信支付V3的开发包payment-spring-boot-starter,就忙里偷闲完善 ...

  9. 如何在Spring Boot项目中集成微信支付V3

    Payment Spring Boot 是微信支付V3的Java实现,仅仅依赖Spring内置的一些类库.配置简单方便,可以让开发者快速为Spring Boot应用接入微信支付. 演示例子: paym ...

随机推荐

  1. 将数组分割为几个等长度的子数组(使用slice)

    先了解一下slice方法: slice() 1.定义:slice()可从已有数组中截取返回指定的元素,形成一个新的数组: 语法:arrayObject.slice(start,end): 参数 描述 ...

  2. Cheat sheet for Jupyter Notebook

    近期,DataCamp发布了jupyter notebook的 cheat sheet,[Python数据之道]第一时间与大家一起来分享下该cheat sheet的内容. 以下是该cheat shee ...

  3. [python学习笔记] 开篇

    今天开始学习markdown,立贴为证. 平均一天一小时.两个月先学完基础. 所有的帖子只为了学习记录,有不对的请提出,轻吐槽

  4. 性能压测诡异的Requests/second 响应刺尖问题

    最近一段时间都在忙着转java项目最后的冲刺,前期的coding翻代码.debug.fixbug都逐渐收尾,进入上线前的性能压测. 虽然不是大促前的性能压测要求,但是为了安全起见,需要摸个底心里有个数 ...

  5. 翻译 | 玩转 React 表单 —— 受控组件详解

    原文地址:React.js Forms: Controlled Components 原文作者:Loren Stewart 译者:小 B0Y 校对者:珂珂君 本文涵盖以下受控组件: 文本输入框 数字输 ...

  6. java 面向对象 1

    目录 一.面向过程的思想和面向对象的思想 二.简单理解面向对象 三.面向对象的设计思想 四.对象和类的概念 五.如何抽象出一个类? 六.类(对象)之间的关系 七.Java与面向对象 八.为什么使用面向 ...

  7. snsapi_base和snsapi_userinfo

    1.以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的.用户感知的就是直接进入了回调页(往往是业务页面) 2.以snsap ...

  8. macbook 263企业邮箱设置

    第一步:打开邮箱,点击添加账号,选择其他 第二步:填写完整的电子邮件地址和密码 第三步:填写收件服务器(popcom.263xmail.com),发件服务器(smtpcom.263xmail.com)

  9. MyBatis注解select in参数

    /** *  * @param ids '1,2,3' * @return */ @Select("select * from user_info where id in (${ids})& ...

  10. SQL Server XML数据解析

    --5.读取XML --下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <In ...