微信支付的文档和SDK容易带新人入坑,作为坑中的过来人写点爬坑经验吧。
之前做过很多次公众号支付,但是基本都是用的封装好的代码,今天用的虽然也是鹅厂给你封装好的SDK,但是二次封装也是封装。我们一步一步来做一遍公众号支付的开发。
(一)下载SDK
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1呐,就是这里。值得说的是我这时候下的sdk跟以前的版本不一样,似乎鹅厂工程师为了攀附‘高大上’用了接口的方式重写了一遍,但其实更不好用了好吧!!
这个SDK要根据自己的需要重新整合一下,如果只是为了公众号支付我建议保留的文件是这些:lib文件下的所有文件,log.php我暂时不知道干嘛的,就省去了。然后就保留example里的WxPay.config.php和WxPay.JsApiPay.php这两个文件。
(二)商户配置
首先你得有公众号,而且公众号 申请了开发者模式,也就是有appid和appsecret这两个参数,同时白名单呀、js安全域名、网页授权域名什么的也要配置好,否则到时候是用不了的。然后就是申请微信支付的商户号和秘钥,再进行支付授权目录设置。这些一大串东西设置好了上面的代码就能用了!
(三)重写SDK
虽然说是重写,其实也就是稍微修改一下。我们在TP5的环境下,把(一)中的放到一个自定义的文件夹下面,我起名字叫wxpay。
然后把wxpay文件夹放到vendor目录下。我在控制器里新加了一个wechat模块,写了一个 统一下单的控制器叫Unifiedorder.php。
我们主要做的就是根据dmeo中的jsapi.php进行‘改装’。php部分如下
我们把它改装成tp5的类
注意这里的PAY_PATH是在public下的index.php里定义的
而且需要注意的是,引入这个常量之后,所有的引入路径都要加上这个常量
另外注意的是,新建对象的时候tp5要加上反斜杠\,这个一定要记得!!!
接下来就是写配置,也就是WxPay.Config.php里GetAppId、GetMerchantId、GetKey、GetAppSecret里的参数,它的这种方式是写死的。这是这个sdk非常失败的一点,我们的微信配置一般都是存在数据库或者文件里,我们可以改装动态读取数据配置,这里就不改了,因为这样也能用。
然后就是GetSSLCertPath函数里要写上证书的路径。接着在WxPay.JsApiPay.php中GetOpenid方法里的回调地址要按实际情况改了,这个回调地址一定要是网页登录授权的域名下的,否则会出错。
需要注意的是公众号id和商户号id必须是对应的,不能用a商家的公众和和b商家的商户号对应,它两也配不上。
最后Unifiedorder.php里写上具体的订单信息和金额数量,把前端复制到对应的渲染页面里就可以用了。
到这里基本的支付流程就跑通了,然后就是调试回调地址里的接口,这个暂时不说。
网友评论