微信公众号支付开发(续)
2016-11-02 本文已影响300人
Rotten_Pencil
前言
之前写了一篇微信公众号开发的文,原文链接。
现在再写一篇续,以记录这一路遇见的坑……
坑
总结一下遇见的几个坑:
-
KEY--商户支付密钥,这个字符串必须要32位。之前用了一个网上的随机字符串生成器,也没有仔细检查,结果生成了一个40多位的KEY,以至于支付用的签名一直无法通过。并且即便是使用微信自己的检查工具也没有检查出这个问题
-
微信支付需要在微信公众平台的后台添加上你网站的域名地址后方能生效。并且需要注意的是开发的时候我们一般用的是测试授权目录,网站正是运营的时候一定要添加到支付授权目录
授权目录.png -
订单过期时间过短问题。在
WxPayUnifiedOrder类
中,有两个方法可以设置订单的开始和过期时间:SetTime_start
和SetTime_expire
。我之前设置了10分钟的过期时间,微信还是报错说过期时间太少,至少要5分钟什么的。之所以会有这个错误是因为这个方法使用的是北京时间。所以,如果你使用了date()
函数时,就必须先要设置好时区:
$input = new WxPayUnifiedOrder();
date_default_timezone_set('PRC'); //设置成北京时间,如果没有这句就会报错
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
- 价格问题。如果你数据库中储存的商品价格是¥10.00这样的价格。在通过微信支付前需要乘以100。这样做是因为微信支付需要处理的价格必须是个整数(其实也就是说微信支付使用的是分作单位,而一般我们用的是元)。如果是浮点小数,在省略小数点的过程中容易出现一些匪夷所思的错误。
测试工具
最后放两个工具的链接地址