业务需要一个在微信上能付款的功能,于是乎想到了最普遍的支付宝,坑爹的是T与A是水火不容啊,默默的还是接微信支付吧,没想到从此掉进了连环坑……

网上写微信支付接口的还是很多,PHP官方有(鄙视源码作者,连参数对应都错了,能跑通才怪),NET版 微信支付--入门篇 这篇算是比较全的,java版。

PHP的只能参考,终究还是先按NET版的还创建项目,不过文章里面也没具体写到如何前后台交互(偶用的MVC),对于初次接触的人来说只能问题来一个解决一个。

至于怎么从0开发就不用详细说明了,参考这位仁兄的 微信支付--入门篇 ,微信支付V2版网上也有Demo,但V3与V2相差太大,以此就新版V3 碰到的问题来说明解决方法。

基础问题先排除:

    1. 确保 商户功能 审核通过,会有官方邮件
    2. 支付授权目录(注意看文档,大小写关系很大 点击支付按钮,提示“access_denied” 网上有很多关于此问题的解决)
    3. 点击支付按钮,提示“access_not_allow” 需要将测试人的微信帐号加入白名单
    4. 【在开发调试阶段,测试链接需要在公众号内点击打开 白名单用户在公众号内向公众号发一条消息,消息内容即为测试链接,然后点击打开】文档中写得很清楚,但中招的人还是不计其数(偶也中了……)。
    5. 【参数大小写敏感】md5 运算后,字符串的字符要转换为大写,注意是MD5运算模块。

基本问题排除后,出问题最多的就是 利用JSAPI 支付,提示“该公众号支付签名无效,无法发起该笔交易”,此问题搞了2天多,网上到处搜索,不停的对比文档,无耐欲哭无泪啊,“不要用wifi和用流量才不报错”的答案都有(没遇到过)

基于园友提出的另一个问题”测试目录改为http://mall.xxx.com/后,网页支付时直接提示get_brand_wcpay_request:fail_invalid appid 。使用了其他的目录如http://store.xxx.com/ 也毫无问题。估计微信内部把含mall的支付都给屏蔽了。 “ 此问题还没亲自验证,不过在微信中还是请不要用关于阿里有关的域名,否则都不知道怎么坑死的。

具体的问题与 坑人的微信新版支付(V3.3.6) 中说的一样,能得到预支付 ID:prepay_id,但点击支付就是一直 提示“该公众号支付签名无效,无法发起该笔交易”,又不能本地调试,只能发布后写日志。

根据网上说的调整参数位置、没办法又看文档,那问题出在哪呢?

签名无效,说明出在第二次签名,此次要将参数提交给前台用js来传给微信来校验,查看MD5操作,

prepay_id的获得需传参:

其中MD5签名方法

  /// <summary>
/// 创建md5摘要,规则是:按参数名称a-z排序,遇到空值的参数不参加签名
/// </summary>
/// <param name="key">参数名</param>
/// <param name="value">参数值</param>
/// key和value通常用于填充最后一组参数
/// <returns></returns>
public virtual string CreateMd5Sign(string key, string value)
{
StringBuilder sb = new StringBuilder(); ArrayList akeys = new ArrayList(Parameters.Keys);
akeys.Sort(); foreach (string k in akeys)
{
string v = (string)Parameters[k];
if (null != v && "".CompareTo(v) !=
&& "sign".CompareTo(k) != && "key".CompareTo(k) != )
{
sb.Append(k + "=" + v + "&");
}
} sb.Append(key + "=" + value); string sign = MD5Util.GetMD5(sb.ToString(), GetCharset()).ToUpper(); return sign;
}

1.package改为prepay_id=u802345jgfjsdfgsdXXX 的格式(html页也是此格式)

2.加入signType为MD5加密参数(有人说不加是不对的)

3.两次MD5加密都要按文档的方法 key要放在最后再加密

4.MD5加密对大小写加密的结果是不一样的,检查 appId与appid、timeStamp与timestamp加密后是不一样的,确保HTML与后台加密的参数一模一样,是一模一样哦!!(坑中坑,没想到微信支付竟然对大小写敏感到如此地步),注意第一次加密参数都是小写

5.参数个数5个

6.body参数过长

7.加入openid

我们的问题大多出现在4,按上面顺序解决后终于看到了支付窗口!!!!

此文献给还在深坑中的小伙伴们……

不说了,说多了都是泪……

之前微支付已经集成到项目中一直没时间抽出,现在需要的留下邮箱,java的单独说明下,点下推荐。

   鉴于没时间看邮件急于想要的可自行扫文尾的二维码进入微信公众号【一个码农的日常】,回复 net支付 或 java支付  或 php支付

        或加入  新建2号QQ群:340250479  (1号群: 437802986 已满)在文件里面有源码地址(等群主有时间会通过)。

这里抽出来的是net版本的,主要解决前期页面支付问题,只是个基本的demo,没有回调页面。有园友也提出了demo中的不足,建议先跑通这个demo,然后在此基础上补充不严谨的支付逻辑,毕竟是涉及到money的问题,毕竟也只是个demo,不能不思考就完全照般。

微信现在开放了最新的JS-SDK, 有园友指出现在的demo上用js-sdk会冲突,建议先不用js-sdk,能运行后,可将全部js都照JS-SDK的支付方法更改。微信JS-SDK说明文档哥也只能帮你到这了……

=============================================================

争对于园友新手调通支付后回调页面问题特此又写了一篇 到处都是坑的微信支付V3之 微信支付回调页面 以供参考。

最近将NET版的回调页也加入了源码。

        其它干货下载资源已放入公众号【一个码农的日常】微信号:icodertime 

     

到处都是坑的微信支付V3的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. 微信支付[v3]

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

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

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

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

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

随机推荐

  1. php报表使用

    php报表的使用: 1.到官网(http://jpgraph.net/)下载,建议下载jpgraph-3.0.7.tar.gz版本 2.解压后有两个文件夹 docportal:使用手册 src:报表核 ...

  2. 下载apk文件浏览器会直接打开并显示乱码的问题

    今天同事反映他的apk文件在自己的老项目中下载有问题:下载apk文件浏览器会直接打开并显示乱码,在别的项目中就没有问题. 后分析response的content-type发现,老项目的类型是text/ ...

  3. cxf3.1.4所需jar,大部分都可以从cxf3.1.4的lib包下找到

    asm-.jar commons-beanutils-.jar commons-collections-.jar commons-lang-2.6.jar cxf-core-.jar cxf-rt-b ...

  4. JSP学习笔记

    JSP学习笔记 Jsp网页主要分为Elements与Template Data两部分. Template Data:JSP Container不处理的部分,例如HTML内容 Elements:必须经由 ...

  5. 深入浅出NodeJS——数据通信,NET模块运行机制

    互联网的运作,最根本的驱动就是信息的交互,NodeJS 在数据交互这一块做的很带感,异步编程让人很惬意,关于 NodeJS 的数据通信,最基础的两个模块是 NET 和 HTTP,前者是基于 TCP 的 ...

  6. 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法

    前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼音首字母却要引入200kb的字 ...

  7. android内部培训视频_第三节 常用控件(Button,TextView,EditText,AutocompleteTextView)

    第三节:常用控件 一.Button 需要掌握的属性: 1.可切换的背景 2.9.png使用 3.按钮点击事件 1)  onClick 3) 匿名类 4) 公共类 二.TextView 常用属性 1.a ...

  8. [ASP.NET MVC 小牛之路]02 - C#知识点提要

    本人博客已转移至:http://www.exblr.com/liam  本篇博文主要对asp.net mvc开发需要撑握的C#语言知识点进行简单回顾,尤其是C# 3.0才有的一些C#语言特性.对于正在 ...

  9. OracleConnection is obsolete

    用EF搞Oracle的 fake CodeFirst 时,一直报错以下错误: 对类型“System.Data.OracleClient.OracleConnection”的存储区提供程序实例调用“ge ...

  10. Angularjs1培训

    Angularjs1培训: angularjs解决什么问题? 从无穷无尽的DOM操作中解放出来,专注于业务逻辑,DOM操作不叫业务逻辑,那是试图呈现. 组件化,模块化为构建大型项目铺平道路,模块发开发 ...