最近在接入微信支付这块功能,博客园也有很多博友发表了支付的各种吐槽和解决之道,基于那些经验分享之上,我也来说说我的填坑之路。

1:准备工作,首先去申请注册一个公众号——服务号,然后将微信支付功能开通,获得一系列的微信给你分配的商户资料(重要的是商户号),然后在微信支付商户中心设置支付密钥,这个密钥在统一下单和微信签名里面要用到。

2:搭建自己的支付框架项目,开始用自己熟悉的语言开发前台支付页面和后台接口,这里可能因技术栈不同,而会衍生出多种版本,你可以基于PHP,JAVA,C#,NODEJS。

3:然后当你项目能生成订单,进入支付后,开始我们今天的核心介绍=》微信支付(暂只介绍网页支付方式JS-API),稍后会说明我的一些难点。

4:调用微信支付统一下单接口(https://api.mch.weixin.qq.com/pay/unifiedorder),传递下单参数,主要是签名逻辑要正确,然后各个版本都已经有很多源码了,注意几个地方:

4.1:终端IP是你微信商店线上(或测试)服务器IP。

4.2:统一下单签名参数名都是小写。

4.3:网页支付需要参数openid

4.4:订单金额单位是分,整型,不能是浮点型

5:统一下单成功后,返回预支付标识prepay_id,这个在网页支付中需要用到。

6:开始调用javascript的支付方法,这里可以使用JS-SDK的支付方法chooseWXPay,也可以用微信浏览器原生对象WeixinJSBridge,不同的是里面的参数要注意大小写问题,由于微信内部编程人员可能不同,导致他们参数出现了一些大小写不统一的问题,深表失望,也给广大开发者上了一堂课,在做第三方开放接口的同时,一定要制定统一的编码规则(具体是timeStamp这个参数,注意appId这个参与签名的参数大小写问题,前台调用和后台签名参数大小写必须保持一致,但是统一下单接口签名是例外,这也是微信支付的一个坑)

7:如果签名不正确,检查参数大小写,最后支付要设置授权目录,如果支付报 _invalid appid ,应该就是授权目录的问题,规则,授权目录一定是支付页面所在的目录,例如支付页面URL是:http://mydomain/weixin/pay/pay.php ,那授权目录是:http://mydomain/weixin/pay/ 最后有斜杠,特别注意,很多同学也已经开始开发SPA微信网页应用,最新版本微信已经支持Html5 pushstate 特性 本人用angularjs 开启了此特性 ,页面URL 经过angularjs 内部转换后呈现在地址栏 等价于真是的URL,只是基于URL友好性,而且能解决微信只需要授权一次的问题,不然每个页面都需要微信授权,授权目录也应该基于此友好URL来设置,不然会遇到支付失败的问题

8:以上是经验总结,基于网上代码太多,不放置代码,任何问题可以留言讨论。

微信支付V3版本的那些事的更多相关文章

  1. php微信支付v3版本签名生成

    前几天需要对接微信支付卡包营销活动需要对接微信新版SDKv3版 签名生成规则,微信的官方文档里面说明的还算可以吧,不过个人觉得不太理想- -.  自己调试的时候调试了半天才找了错误原因. https: ...

  2. 微信支付v3版本NET 图片上传API

    最近在写特约服务商进件的由于微信官方没有DEMO,导致踩了很多坑,特把自己经验分享给大家. 注意几点: 1.上传图片签名不是把所有body内容都进行签名,只需签名计算的请求主体为meta的json串: ...

  3. 微信APP支付V3版本签名 && APP下单/订单查询接口Python版实现

    问题背景 最近接入微信支付,微信官方并没有提供Python版的服务端SDK,因而只能根据文档手动实现一版,这里记录一下微信支付的整体流程.踩坑过程与最终具体实现. 微信支付APP下单流程 根据微信官方 ...

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

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

  5. 微信支付[v3]

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

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

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

  7. 微信支付 V3 的 Java 实现 Payment Spring Boot-1.0.7.RELEASE 发布

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

  8. 微信支付 V3 开发教程(一):初识 Senparc.Weixin.TenPayV3

    前言 我在 9 年前发布了 Senparc.Weixin SDK 第一个开源版本,一直维护至今,如今 Stras 已经破 7K,这一路上得到了 .NET 社区的积极响应和支持,也受到了非常多的宝贵建议 ...

  9. 微信支付v3接口的 官方 Java SDK

    啰嗦几句:微信支付v3版接口麻烦吗?在对接微信支付v3接口时,本来是一件很简单的事情,其实微信支付v3接口并不是很复杂,但是微信团队的管理很混乱,给我们开发者带来了巨大的麻烦. 微信支付v3版接口对接 ...

随机推荐

  1. TOD&FIXME&XXX

    TODO: + 说明: 如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明.FIXME: + 说明:如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作 ...

  2. bash: fork: Resource temporarily unavailable

    Last login: Wed Jul 26 09:19:11 2017 from ... -bash: fork: Resource temporarily unavailable -bash-3. ...

  3. WeUI 是由微信官方设计团队专为微信移动 Web 应用设计的 UI 库

    WeUI 是由微信官方设计团队专为微信移动 Web 应用设计的 UI 库. WeUI 是一套同微信原生视觉体验一致的基础样式库,为微信 Web 开发量身设计,可以令用户的使用感知更加统一.包含butt ...

  4. 关于android屏幕适配的问题(drawable-xxxxxxxx,dp,sp,px等等),偶尔看到了android源代码,关于dpi的区分的值

    上一篇博客说了一下.9.png图片http://blog.csdn.net/qq_23195583/article/details/46737419 当然,点九的是指的能够进行拉伸的.那么假设图片不能 ...

  5. PHP中的密码加密的解决方案

    层出不穷的类似事件对用户会造成巨大的影响,因为人们往往习惯在不同网站使用相同的密码,一家“暴库”,全部遭殃 一般的解决方案 1.将明文密码做单向hash $password = md5($_POST[ ...

  6. Java虚拟机学习 - 垃圾收集器 (4)

    HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器.如果两个收集器之间存在连线,就说明它们可以搭配使用. Serial(串行GC)收集器 Serial收集 ...

  7. Cookies揭秘 [Asp.Net, Javascript]

    一,前言 Cookies想必所有人都了解, 但是未必所有人都精通.本文讲解了Cookies的各方面知识, 并且提出来了最佳实践.这是笔者在日常工作中的积累和沉淀. 二,基础知识 1.什么是Cookie ...

  8. 页面livereload width grunt

    step-1.   安装node 环境 step-2.  npm  install grunt-cli  \ grunt http://www.gruntjs.net/docs/getting-sta ...

  9. PLSQL_性能优化索引Index介绍(概念)

    2014-06-01 BaoXinjian

  10. Linux内核中锁机制之完成量、互斥量

    在上一篇博文中笔者分析了关于信号量.读写信号量的使用及源码实现,接下来本篇博文将讨论有关完成量和互斥量的使用和一些经典问题. 八.完成量 下面讨论完成量的内容,首先需明确完成量表示为一个执行单元需要等 ...