微信公众号支付开发(续)


前言

之前写了一篇微信公众号开发的文,原文链接
现在再写一篇续,以记录这一路遇见的坑……


总结一下遇见的几个坑:

  1. KEY--商户支付密钥,这个字符串必须要32位。之前用了一个网上的随机字符串生成器,也没有仔细检查,结果生成了一个40多位的KEY,以至于支付用的签名一直无法通过。并且即便是使用微信自己的检查工具也没有检查出这个问题

  2. 微信支付需要在微信公众平台的后台添加上你网站的域名地址后方能生效。并且需要注意的是开发的时候我们一般用的是测试授权目录,网站正是运营的时候一定要添加到支付授权目录


    授权目录.png
  3. 订单过期时间过短问题。在WxPayUnifiedOrder类中,有两个方法可以设置订单的开始和过期时间:SetTime_startSetTime_expire。我之前设置了10分钟的过期时间,微信还是报错说过期时间太少,至少要5分钟什么的。之所以会有这个错误是因为这个方法使用的是北京时间。所以,如果你使用了date()函数时,就必须先要设置好时区:

  $input = new WxPayUnifiedOrder();
  date_default_timezone_set('PRC'); //设置成北京时间,如果没有这句就会报错
  $input->SetTime_start(date("YmdHis"));
  $input->SetTime_expire(date("YmdHis", time() + 600));
  1. 价格问题。如果你数据库中储存的商品价格是¥10.00这样的价格。在通过微信支付前需要乘以100。这样做是因为微信支付需要处理的价格必须是个整数(其实也就是说微信支付使用的是分作单位,而一般我们用的是元)。如果是浮点小数,在省略小数点的过程中容易出现一些匪夷所思的错误。

测试工具

最后放两个工具的链接地址

  1. 签名校验工具。这个工具是用来校验生成的支付签名用的。可以用SDK中ToXml()方法所生成的xml字符串在这里进行验证。

    签名校验

  2. 接口调试工具。这个工具和上一个工具作用非常相似。唯一的不同之处是它会自动给你生成一个xml的文本。对于一些商品单一的支付来说,xml其实是可以写死的。而在这里就可以直接获取。

    接口调试

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,598评论 25 708
  • 今日推荐 经常阅读博客是个好习惯推荐鸿洋CSDN的博客 微信支付相关文章 详细介绍Android开发集成微信支付(...
    MrQ_Android阅读 6,204评论 9 52
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • 创业,就像画了个更大的圆圈,接触的未知更多,真正的学习时代到来。公司注册,财务纳税,社保公积金,市场营销,海报设计...
    爱米粒儿W阅读 225评论 0 0
  • 文/小燕儿 又是两年。他才来见她。 十年了,但是相见屈指可数。每年的同学会偶尔的相逢,也经常无意或有意地同处一...
    珈珞的小世界阅读 650评论 0 0