Laravel微信Native支付、微信jsapi支付

**

之前一直使用thinkphp做开发,偶然的一次机会运用了laravel框架并且做了一个微信扫码支付功能,发现laravel扩展功能大大超过了tp,接下来分享一下laravel的EasyWeChat扩展

**
1、首先下载EasyWeChat扩展

composer require "overtrue/laravel-wechat:^5.1"

2、注册 ServiceProvider 和 Facade (Laravel 5.5 + 无需手动注册)
在项目配置文件cofig/app.php加入

'providers' => [
    // ...
    Overtrue\LaravelWeChat\ServiceProvider::class,
],
'aliases' => [
    // ...
    'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class,
],

3、创建配置文件
在项目根目录输入:

php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"

输入以上命令系统会在根目录config创建wechat.php文件只需要修改里边的参数值就可以

<?php

/*
 * This file is part of the overtrue/laravel-wechat.
 *
 * (c) overtrue <i@overtrue.me>
 *
 * This source file is subject to the MIT license that is bundled
 * with this source code in the file LICENSE.
 */

return [
    /*
     * 默认配置,将会合并到各模块中
     */
    'defaults'         => [
        /*
         * 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
         */
        'response_type'     => 'array',

        /*
         * 使用 Laravel 的缓存系统
         */
        'use_laravel_cache' => true,

        /*
         * 日志配置
         *
         * level: 日志级别,可选为:
         *                 debug/info/notice/warning/error/critical/alert/emergency
         * file:日志文件位置(绝对路径!!!),要求可写权限
         */
        'log'               => [
            'level' => env('WECHAT_LOG_LEVEL', 'debug'),
            'file'  => env('WECHAT_LOG_FILE', storage_path('logs/wechat.log')),
        ],
    ],

    /*
     * 路由配置
     */
    'route'            => [
        /*
         * 开放平台第三方平台路由配置
         */
        // 'open_platform' => [
        //     'uri' => 'serve',
        //     'action' => Overtrue\LaravelWeChat\Controllers\OpenPlatformController::class,
        //     'attributes' => [
        //         'prefix' => 'open-platform',
        //         'middleware' => null,
        //     ],
        // ],
    ],

    /*
     * 公众号
     */
    'official_account' => [
        'default' => [
            'app_id'  => env('WECHAT_OFFICIAL_ACCOUNT_APPID', 'your-app-id'),         // AppID
            'secret'  => env('WECHAT_OFFICIAL_ACCOUNT_SECRET', 'your-app-secret'),    // AppSecret
            'token'   => env('WECHAT_OFFICIAL_ACCOUNT_TOKEN', 'your-token'),           // Token
            'aes_key' => env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY', ''),                 // EncodingAESKey

            /*
             * OAuth 配置
             *
             * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
             * callback:OAuth授权完成后的回调页地址(如果使用中间件,则随便填写。。。)
             * enforce_https:是否强制使用 HTTPS 跳转
             */
            // 'oauth'   => [
            //     'scopes'        => array_map('trim', explode(',', env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_SCOPES', 'snsapi_userinfo'))),
            //     'callback'      => env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_CALLBACK', '/examples/oauth_callback.php'),
            //     'enforce_https' => true,
            // ],
        ],
    ],

    /*
     * 开放平台第三方平台
     */
    // 'open_platform' => [
    //     'default' => [
    //         'app_id'  => env('WECHAT_OPEN_PLATFORM_APPID', ''),
    //         'secret'  => env('WECHAT_OPEN_PLATFORM_SECRET', ''),
    //         'token'   => env('WECHAT_OPEN_PLATFORM_TOKEN', ''),
    //         'aes_key' => env('WECHAT_OPEN_PLATFORM_AES_KEY', ''),
    //     ],
    // ],

    /*
     * 小程序
     */
    // 'mini_program' => [
    //     'default' => [
    //         'app_id'  => env('WECHAT_MINI_PROGRAM_APPID', ''),
    //         'secret'  => env('WECHAT_MINI_PROGRAM_SECRET', ''),
    //         'token'   => env('WECHAT_MINI_PROGRAM_TOKEN', ''),
    //         'aes_key' => env('WECHAT_MINI_PROGRAM_AES_KEY', ''),
    //     ],
    // ],

    /*
     * 微信支付
     */
     'payment' => [
         'default' => [
             'sandbox'            => env('WECHAT_PAYMENT_SANDBOX', false),
             'app_id'             => '你的appid',
             'mch_id'             => '你的商户号',
             'key'                => '你的支付密钥',
             'cert_path'          => env('WECHAT_PAYMENT_CERT_PATH', 'path/to/cert/apiclient_cert.pem'),    // XXX: 绝对路径!!!!
             'key_path'           => env('WECHAT_PAYMENT_KEY_PATH', 'path/to/cert/apiclient_key.pem'),      // XXX: 绝对路径!!!!
             'notify_url'         => 'http://example.com/payments/wechat-notify',                           // 默认支付结果通知地址
         ],
         // ...
     ],

    /*
     * 企业微信
     */
    // 'work' => [
    //     'default' => [
    //         'corp_id' => 'xxxxxxxxxxxxxxxxx',
    //         'agent_id' => 100020,
    //         'secret'   => env('WECHAT_WORK_AGENT_CONTACTS_SECRET', ''),
    //          //...
    //      ],
    // ],
];

以上就是EasyWeChat全部配置
接下来需要在控制里使用支付方式

 			$params = config('wechat.payment.default');//获取config文件数据
            $nonce_str = $this->createNonceStr();//随机数,自己写或者百度都可以
            $app = app('wechat.payment');

            $result = $app->order->unify([//这个可就简单了,直接下订单,依赖包里面都帮我们处理好了
                'trade_type'=>'NATIVE',
                'body' => $goods_name,
                'total_fee' => $payMoney*100,
                'out_trade_no' => $orderSn,
                'nonce_str' => $nonce_str,
                'notify_url' =>'你的回调地址',
            ]);

            if($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS')//判断成功
            {
                $url = $result['code_url'];//只有native支付才有code_url. 访问这个url可以直接调起支付
                $img =  QrCode::format('png')->size(200)->generate($url);    //format 是指定生成文件格式  默认格式是svg,可以直接在浏览器打开,png不能直接显示
                return  $data = 'data:image/png;base64,' . base64_encode($img );
            }

将code_url生成二维码是需要下载QrCode扩展的
下载安装使用教程在其他文章写过这里就不做赘述了

总结: Laravel微信Native支付使用EasyWeChat扩展方便简洁,都已封装好 自己直接调用就可以。大大减少开发者的工作量

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在composer中安装微信Native支付,你需要按照以下步骤操作: 1. 打开你的项目,确保已经安装了composer。 2. 在项目的根目录执行以下命令,添加微信支付SDK的依赖包: ``` composer require wechatpay/wechatpay-guzzlehttp:~1.0 ``` 3. 在你的代码中引入必要的命名空间和类。根据你的需求,可能需要引入`WeChatPay\Builder`、`WeChatPay\Crypto\AesGcm`、`WeChatPay\Crypto\Rsa`、`WeChatPay\Formatter`、`WeChatPay\Util\PemUtil`等类。确保你已经设置了正确的`APPID`、`MCHID`、`CERT_NUM`和`APIV3_KEY`。这些参数可以在微信支付平台上获取。 4. 运行以下命令来下载微信支付平台的证书。确保你已经创建了保存证书的文件夹,并将`outputFilePath`设置为正确的保存地址: ``` php vendor/bin/CertificateDownloader.php -k ${APIV3_KEY} -m ${MCHID} -f ${mchPrivateKeyFilePath} -s ${CERT_NUM} -o ${outputFilePath} ``` 5. 之后,你可以根据你的需求来使用微信支付的各种功能,比如Native下单、静态链接二维码和JSAPI支付等。根据你的具体情况,你可能需要使用到`NativeCall`、`NativeLink`和`JsApi`等接口。 请注意,上述步骤中的`${APIV3_KEY}`、`${MCHID}`、`${mchPrivateKeyFilePath}`、`${CERT_NUM}`和`${outputFilePath}`需要根据你的实际情况进行替换。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [PHP 实现微信Native扫码支付](https://blog.csdn.net/arlene12345/article/details/130883343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [PHP微信支付WxPayPubHelper](https://download.csdn.net/download/adytai/10112081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值