使用laravel-wechat微信支付
参考文档
https://github.com/overtrue/laravel-wechat
https://easywechat.com/docs/4.1/payment/index
laravel-wechat
微信 SDK for Laravel 5 / Lumen, 基于 overtrue/wechat
交流QQ群:319502940
框架要求
Laravel/Lumen >= 5.1
安装
# Laravel < 5.8
composer require "overtrue/laravel-wechat:~4.0"
# Laravel >= 5.8
composer require "overtrue/laravel-wechat:~5.0"
配置
Laravel 应用
- 在
config/app.php
注册 ServiceProvider 和 Facade (Laravel 5.5 + 无需手动注册)
'providers' => [
// ...
Overtrue\LaravelWeChat\ServiceProvider::class,
],
'aliases' => [
// ...
'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class,
],
- 创建配置文件:
php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"
-
修改应用根目录下的
config/wechat.php
中对应的参数即可。 -
每个模块基本都支持多账号,默认为
default
。
操作
1.composer
composer require "overtrue/laravel-wechat:~5.0"
2.创建配置文件
php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"
3.修改应用根目录下的 config/wechat.php
中对应的参数即可。
4.在操制器里调用
use EasyWeChat\Factory; use function EasyWeChat\Kernel\Support\generate_sign; $config = [ // 必要配置 'app_id' => '', 'mch_id' => '', 'key' => '', // API 密钥 // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书) 'cert_path' => '', // XXX: 绝对路径!!!! 'key_path' => '', // XXX: 绝对路径!!!! 'notify_url' => 'http:///payments/wechat-notify', // 你也可以在下单时单独设置来想覆盖它 ]; $app = Factory::payment($config); $result = $app->order->unify([ 'body' => 'test', 'out_trade_no' => '20150807861253465555', 'total_fee' => 88, 'notify_url' => 'http:///payments/wechat-notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址 'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型 'openid' => 'Mok', ]); // 如果成功生成统一下单的订单,那么进行二次签名 if ($result['return_code'] === 'SUCCESS') { // 二次签名的参数必须与下面相同 $params = [ 'appId' => '你的小程序的appid', 'timeStamp' => time(), 'nonceStr' => $result['nonce_str'], 'package' => 'prepay_id=' . $result['prepay_id'], 'signType' => 'MD5', ]; // config('wechat.payment.default.key')为商户的key $params['paySign'] = generate_sign($params, config('wechat.payment.default.key')); return $params; } else { return $result; }