laravel easyWecaht 微信支付使用分享

下面是一个使用Laravel框架和EasyWeChat库实现微信支付的示例代码:

首先,使用Composer安装EasyWeChat库:

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

接着,在config/services.php文件中添加配置:

'wechat_pay' => [
    'app_id' => 'your_app_id',
    'mch_id' => 'your_mch_id',
    'key' => 'your_key',
    'cert_path' => 'path/to/your/cert.pem',
    'key_path' => 'path/to/your/key.pem',
    'notify_url' => 'your_notify_url',
],

然后,在routes/web.php文件中添加路由:

Route::get('/pay', function () {
    // 创建订单
    $order = new \EasyWeChat\Payment\Order([
        'body' => '测试商品',
        'out_trade_no' => '201708101001',
        'total_fee' => 1,
        'trade_type' => 'NATIVE',
        'product_id' => '1234567890',
    ]);

    // 发起支付
    $payment = app('wechat.pay');
    $result = $payment->prepare($order);

    if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS') {
        $codeUrl = $result->code_url;
        return view('pay', compact('codeUrl'));
    } else {
        return "支付失败";
    }
});

在这个示例代码中,首先定义了一个/pay路由。在该路由中,创建了一个订单对象,并使用微信支付SDK的prepare方法发起支付请求。如果支付请求成功,则返回视图并传递支付二维码URL。否则返回“支付失败”字符串。

最后,创建一个视图文件pay.blade.php,用于显示支付二维码和支付结果:

<img src="{
   
   { $codeUrl }}">
<p id="result"></p>

<script>
    // 每3秒查询一次支付结果
    setInterval(function () {
        $.get('/query', {out_trade_no: '201708101001'}, function (data) {
            if (data == 'SUCCESS') {
                $('#result').text('支付成功');
            } else if (data == 'FAIL') {
                $('#result').text('支付失败');
            }
        });
    }, 3000);
</script>

在这个视图中,首先使用{
   
   { $codeUrl }}指令显示支付二维码。然后使用JavaScript定时器每3秒发送一次查询请求,根据查询结果显示支付结果。

需要注意的是,在实际开发中,还需要考虑一些细节和问题,如如何处理异步通知、如何处理退款等。同时也需要注意安全性问题,如防止CSRF攻击、防止重复提交等。

猜你喜欢

转载自blog.csdn.net/vcit102/article/details/130301781