微信支付V3版本的那些事

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

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:以上是经验总结,基于网上代码太多,不放置代码,任何问题可以留言讨论。

时间: 2024-10-05 10:25:13

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

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

对接微信新版SDKv3版 签名生成规则,微信的官方文档里面说明的还算可以吧,不过个人觉得不太理想- -.  自己调试的时候调试了半天才找了错误原因. https://wechatpay-api.gitbook.io/wechatpay-api-v3 微信v3接口更换了新版签名方式 商户需要使用自身的私钥对API URL.消息体等关键数据的组合进行SHA-256 with RSA签名. 请求的签名信息通过HTTP头Authorization传递,具体说明请见签名生成指南. 没有携带签名或者签名验证

微信支付V3集成过程(Native)

长话短说,微信支付V3版本相比V2版本,简化许多接口,大大降低了商户的接入代价,只不过由于相关的集成说明文档写的过于笼统,细节描述不够具体,demo版本不够完善等等原因,被大家诟病. 最近基于业务需要,完成了微信支付的接入,选择的是公众号扫码支付(Native模式).在此把集成的大致过程贴出来,希望能对正在困扰的各位有所帮助. 整个交互过程分为四步: 1.商户:生成微信支付二维码 2.微信:扫描二维码,获取商户订单信息 3.微信:确认支付,调起微信支付模块,完成支付,回调商户通知接口 4.商户:

微信支付[v3]

原文:微信支付[v3] V2升级V3 顺便记录一下 ,文档: http://pay.weixin.qq.com/wiki/doc/api/index.html !!! 支付授权目录与测试人的微信帐号白名单(出现access_denied或access_not_allow错误,请检查是否设置正确) 微信签名(用于jssdk调用支付,查询订单,异步参数签名等) 数字证书,用于微信退款 参数签名 对所有传入参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL 键值对的格式(即key1=v

微信支付v3发布到iis时的证书问题

找了问题半天,调试没有问题,但是放到网站上就报错.最后解决方法. 一开始报“出现了内部错误” 解决方法是 方法一 var cer = new X509Certificate(certpath, password,X509KeyStorageFlags.MachineKeySet); 方法二 iis 找到部署的站点应用连接池,右键高级设置,找到“加载用户配置文件”改为true.window service2008 默认为false的. 解决后报另一个错误 基础连接已关闭 连接被意外关闭 其实是没访

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

研究微信开发一年多了,每个新接口,都会第一时间进行研究.微信支付开放很久,一直没机会接触到支付接口,等了好久终于从朋友那儿搞到了接口,从此开始了我两天多的支付接口的研究. 拿到这个接口文档的第一个想法就是这也没什么难的嘛, 和支付宝.财付通.网银在线等一些传统接口的思路逻辑都是一样的,觉得差不多最多一个下午就可以搞定,结果第一步调用统一支付接口就给来了个下马威,不管怎么改,就一直返回签名错误.第一次遇到签名错误,首先想到的是应该是没有正确理解签名的生成规则,又从头看了几次签名的生成规则,每次都是

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

据上次 到处都是坑的微信支付V3 后很多园友在被虐了千百遍后终于跳转到了亲切的微信支付界面,但输入密码支付后却不知道怎么处理了,接下来补上支付后的处理流程. 1. html中根据前台支付后反馈信息成功与否跳转到相关页面 if (res.err_msg == "get_brand_wcpay_request:ok") { // message: "微信支付成功!", window.location.replace("@Url.Content("~/

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

关键字:微信支付 微信支付v3 动态native支付 统一支付 Native支付 prepay_id 作者:方倍工作室 本文介绍微信支付下的扫描二维码并输入自定义金额的支付的开发过程. 注意 微信支付现在分为v2版和v3版,2014年9月10号之前申请的为v2版,之后申请的为v3版.V3版的微信支付没有paySignKey参数.v2的相关介绍请参考方倍工作室的其他文章.本文介绍的为微信支付v3. 一. OAuth2.0授权 JSAPI 支付前需要调用 登录授权接口获取到用户的 Openid .所

微信支付v3版-微信支付开发教程

微信支付现在分为v2版和v3版,2014年9月10号之前申请的为v2版,之后申请的为v3版.V3版的微信支付没有paySignKey参数. 微信支付v3 提示:因微信支付商户平台升级,若您在资料审核通过后,收到支付小助手发送的邮件通知为以下信息,请按本页面接口文档进行支付开发.1. 信息包括:商户ID.申请编号.登录帐号.登录密码.商户API密码2..证书包括:商户API证书.证书密钥.CA证书 1. 使用网页授权接口 使用网页授权接口获取用户的基本信息. [微信公众号]OAuth2.0授权.p

微信NATIVE动态支付(V3版本)

官方相关文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_1 其实native动态支付就是调用微信的统一支付接口,在传trade_type时值为NATIVE即可.参考下个类. package com.wingo.action.config; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; import com.wingo.