使用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 应用

  1. config/app.php 注册 ServiceProvider 和 Facade (Laravel 5.5 + 无需手动注册)
'providers' => [
    // ...
    Overtrue\LaravelWeChat\ServiceProvider::class,
],
'aliases' => [
    // ...
    'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class,
],
  1. 创建配置文件:
php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"
  1. 修改应用根目录下的 config/wechat.php 中对应的参数即可。

  2. 每个模块基本都支持多账号,默认为 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;
        }

 

 
 

posted on 2019-10-21 17:55  小V_chen  阅读(4550)  评论(0编辑  收藏  举报

导航