C#_微信支付V3
基础问题先排除:
- 确保 商户功能 审核通过,会有官方邮件
- 支付授权目录(注意看文档,大小写关系很大 点击支付按钮,提示“access_denied” 网上有很多关于此问题的解决)
- 点击支付按钮,提示“access_not_allow” 需要将测试人的微信帐号加入白名单
- 【在开发调试阶段,测试链接需要在公众号内点击打开 白名单用户在公众号内向公众号发一条消息,消息内容即为测试链接,然后点击打开】文档中写得很清楚,但中招的人还是不计其数(偶也中了……)。
- 【参数大小写敏感】md5 运算后,字符串的字符要转换为大写,注意是MD5运算模块。
基本问题排除后,出问题最多的就是 利用JSAPI 支付,提示“该公众号支付签名无效,无法发起该笔交易”,此问题搞了2天多,网上到处搜索,不停的对比文档,无耐欲哭无泪啊,“不要用wifi和用流量才不报错”的答案都有(没遇到过)
具体的问题与 坑人的微信新版支付(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];
&& && )
{
sb.Append(k + "=" + v + "&");
}
}
sb.Append(key + "=" + value);
string sign = MD5Util.GetMD5(sb.ToString(), GetCharset()).ToUpper();
return sign;
}
MD5签名方法
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,按上面顺序解决后终于看到了支付窗口!!!!
C#_微信支付V3的更多相关文章
- 坑爹的微信支付v3,其实没有那么坑
http://www.cnblogs.com/zskbll/p/wxpay.html 研究微信开发一年多了,每个新接口,都会第一时间进行研究.微信支付开放很久,一直没机会接触到支付接口,等了好久终于从 ...
- 到处都是坑的微信支付V3之 微信支付回调页面
据上次 到处都是坑的微信支付V3 后很多园友在被虐了千百遍后终于跳转到了亲切的微信支付界面,但输入密码支付后却不知道怎么处理了,接下来补上支付后的处理流程. 1. html中根据前台支付后反馈信息成功 ...
- 到处都是坑的微信支付V3
业务需要一个在微信上能付款的功能,于是乎想到了最普遍的支付宝,坑爹的是T与A是水火不容啊,默默的还是接微信支付吧,没想到从此掉进了连环坑…… 网上写微信支付接口的还是很多,PHP官方有(鄙视源码作者, ...
- 微信支付v3发布到iis时的证书问题(转)
本文纯粹转载(原地址:微信支付v3发布到iis时的证书问题 ) 一开始报“出现了内部错误” 解决方法是 方法一 var cer = new X509Certificate(certpath, pass ...
- 微信支付[v3]
原文:微信支付[v3] V2升级V3 顺便记录一下 ,文档: http://pay.weixin.qq.com/wiki/doc/api/index.html !!! 支付授权目录与测试人的微信帐号白 ...
- 微信支付v3开发(5) 扫码并输入金额支付
关键字:微信支付 微信支付v3 动态native支付 统一支付 Native支付 prepay_id 作者:方倍工作室 本文介绍微信支付下的扫描二维码并输入自定义金额的支付的开发过程. 注意 微信支付 ...
- 为了Java微信支付V3开发包,我找出了微信支付文档至少六个错误
1. 前言 最近忙的一批,难得今天有喘气的机会就赶紧把最近在开发中的一些成果分享出来.前几日分享了自己写的一个微信支付V3的开发包payment-spring-boot-starter,就忙里偷闲完善 ...
- 如何在Spring Boot项目中集成微信支付V3
Payment Spring Boot 是微信支付V3的Java实现,仅仅依赖Spring内置的一些类库.配置简单方便,可以让开发者快速为Spring Boot应用接入微信支付. 演示例子: paym ...
- Payment Spring Boot 1.0.4.RELEASE 发布,最易用的微信支付 V3 实现
Payment Spring Boot 是微信支付V3的Java实现,仅仅依赖Spring内置的一些类库.配置简单方便,可以让开发者快速为Spring Boot应用接入微信支付. 欢迎ISSUE,欢迎 ...
随机推荐
- hiho 第117周 二分图多重匹配,网络流解决
描述 学校的秋季运动会即将开始,为了决定参赛人员,各个班又开始忙碌起来. 小Hi和小Ho作为班上的班干部,统计分配比赛选手的重任也自然交到了他们手上. 已知小Hi和小Ho所在的班级一共有N名学生(包含 ...
- JavaScript获取元素尺寸和大小操作总结
一.获取元素的行内样式 复制代码 代码如下: var obj = document.getElementById("test"); alert(obj.height + " ...
- C# DataTable的详细用法
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...
- NSIntger CGFloat NSNumber
NSIntger CGFloat NSNumber 1.NSIntger (long) %ld NSInteger a=; NSLog(@"----------%ld",(l ...
- Mysql 中 text类型和 blog类型的异同
MySQL存在text和blob: (1)相同 在TEXT或BLOB列的存储或检索过程中,不存在大小写转换,当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被 ...
- RTP学习笔记
一.定义 实时传输协议(Real- time Transport Protocol,RTP)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多 ...
- CANopen笔记1
CAN现场总线只定义了OSI网络模型的第一层(物理层) 和第二层(数据链路层) ,而这两层一般已被CAN硬件完全实现了.由于没有规定应用层,本身并不完整,需要一个高层协议来定义CAN报文中的11/29 ...
- DJANGO基础学习之转义总结:escape,autoescape,safe,mark_safe
何谓转义?就是把html语言的关键字过滤掉.例如,<div>就是html的关键字,如果要在html页面上呈现<div>,其源代码就必须是<div> PS:转义其实就 ...
- 安全漏洞API接口
这个是avfisherapi写的API,经常用,每次找他的博客都搜到AV,尴尬..在这里记下来. 0x01 查询最新安全事件和漏洞的接口 接口URL: 乌云网: http://avfisherapi. ...
- Spring的核心机制——依赖注入(Dependency Inject)
Spring不仅提供对象,还提供对象的属性值,而不是由使用该对象的程序所提供的. Java应用是由一些相互协作的对象所组成的,在Spring中这种相互协作的关系就叫依赖关系. 如果A组件调用了B组件的 ...