前言
关于微信支付的教程,网上资源也是铺天盖地,知道了其中的原理,就能发现方法都是大同小异。微信支付 SDK 没有命名空间,那么要想将 SDK 放入到现有框架中,就需要修改一些代码。本文将演示 ThinkPHP 5.1 框架下引入微信支付。
接口申请
使用微信支付需要先申请接口权限。目前,微信公众平台仅支持认证的服务号以及认证的政府与媒体类订阅号申请支付权限。在微信支付模块按照要求依次填写资料、验证账号并签署协议。当申请完成之后,将收到微信发过来的成功通过微信支付商户资料审核的邮件,其中包含微信支付商户号及微信商户平台的登录账号及密码,至此,微信支付就申请成功了。
配置微信支付
正式开发微信支付程序之前,需要配置微信支付目录。在微信公众平台后台的“微信支付”功能中,可以找到“开发配置”模块:
在上述配置中,公众号支付的支付授权目录,是指最终发起 JSAPI 支付的页面的目录。扫码支付的回调 URL,是用于接收扫码支付时的请求信息。而刷卡支付不需要在后台配置,可以直接调用接口发起请求。上述地址需要与实际的支付程序正确对应。
设置API密钥
API 密钥是微信支付中用于签名校验身份的重要参数。商户号登录微信商户平台之后,在“账户中心”标签中找到“API安全”,然后找到“API密钥”,其中可以看到“设置密钥”按钮。
API密钥是一个32位由数字和英文大小写字母的组合成的字符串,需要自己预先生成再填入进去。建议使用随机字符生成器生成,这样不易被别人猜出或暴力破解。
下载 SDK 并引入
在下载之前,我们先在项目中新建一个配置文件,专门用于微信支付的参数配置。在 /config 目录下新建 weixinpay.php,内容如下:
代码语言:javascript复制<?php
// ----------------------------------------------------------------------
// | 微信支付配置
// ----------------------------------------------------------------------
return [
'name' => '支付系统',
'appid' => 'appid',
'appsecret' => 'appsecret',
'key' => '支付密钥',
'merchantid' => '商户号',
'notify_url' => '回调地址',
'sign_type' => 'HMAC-SHA256',
];
完成后,在微信官方网站下载 SDK 与 DEMO ,解压后保留 example 和 lib 目录,前一个是 demo,后一个是核心 SDK。example 目录中,已经包含了各种支付的使用 demo:
- 将 phpqrcode 目录放入 /extend 下。
- 在 /extend 目录下新建 wxpay 目录。
- 把 SDK 的 lib 目录复制过来,并在 wxpay 下新建 cert 和 log 目录,分别用于存放证书和生成日志。
- 把 example 中的 log.php 复制到 wxpay 下。
关于对 demo 文件的修改,只是稍作修改,目的是为了改造成适合框架使用的形式。例如我要开发 JSAPI 支付,那么可以整合 example 目录中的 jsapi.php 和 WxPay.JsApiPay.php 以及 notify.php,下面代码中是整合好的 Native 支付、JSAPI 支付和刷卡支付类,以及他们的回调,最后四个文件它们的名称都带“.”符号,分别修改它们的名称为 WxPayConfig.php、JsApiPay.php、MicroPay.php、NativePay.php,另外将 native_notify.php 和 notify.php 分别重命名为 NativeNotifyCallBack.php 和 PayNotifyCallBack.php,最后将它们几个都放入到 /extend/wxpay 中。
修改后文件如下: