商城首页欢迎来到中国正版软件门户

您的位置:首页 >使用ThinkPHP6实现微信支付的详细步骤

使用ThinkPHP6实现微信支付的详细步骤

  发布于2025-03-04 阅读(0)

扫一扫,手机访问

随着移动支付的普及,微信支付已经成为越来越多企业和个人的首选支付方式。而在开发中,一个好的框架可以大大提高开发效率。在这里,我们就介绍一下如何使用ThinkPHP6框架来实现微信支付功能。

前置条件
在使用ThinkPHP6进行微信支付开发前,需要先准备好以下几个条件:
1. 微信公众号/小程序的AppID和AppSecret
2. 微信支付的商户号(mch_id)
3. 微信支付的API秘钥(key)
4. SSL证书(apiclient_cert.pem和apiclient_key.pem)

1、获取微信支付配置参数

首先,在config目录下创建wechat.php文件,用于存放微信支付相关配置。

<?php

return [

// 开发者ID
'app_id' => '',
// 开发者密钥
'app_secret' => '',
// 商户号
'mch_id' => '',
// API秘钥
'api_key' => '',
// SSL证书所在路径
'ssl_cert_path' => '',
'ssl_key_path' => '',
//证书密钥载入私钥格式
'ssl_key_password' => '',

// 微信支付回调地址
'notify_url' => '',

];

其中,app_id和app_secret是微信公众号/小程序的开发者ID和密钥。mch_id是商户号,api_key是API秘钥。

还需要指定SSL证书的路径和密钥,ssl_cert_path和ssl_key_path分别指向apiclient_cert.pem和apiclient_key.pem所在的路径。如果证书是加密的话,需要在ssl_key_password中指定密钥的密码。

2、统一下单

接下来,我们就开始实现微信支付的代码。首先,需要在控制器中引用一下必要的类文件:

use WeChatPayPay;
use WeChatPayOrder as PayOrder;

Pay类是我们封装好的类,用于调用微信支付的接口;Order类用于创建订单信息。

接着,创建一个order方法:

public function order()
{

// 订单信息
$order_info = [
    'out_trade_no' => $this->buildOrderNo(), // 订单号
    'total_fee' => 1, // 金额:单位为分
    'body' => '微信支付测试订单', // 订单描述
    'trade_type' => 'JSAPI', // 交易类型
    'openid' => 'openid', // 用户标识
];

// 统一下单
$pay = new Pay(
    config('wechat.app_id'),
    config('wechat.mch_id'),
    config('wechat.api_key'),
    config('wechat.ssl_cert_path'),
    config('wechat.ssl_key_path'),
    config('wechat.ssl_key_password'),
    config('wechat.notify_url')
);
$result = $pay->unifiedorder(new PayOrder($order_info));

// 返回支付参数
echo json_encode($result);

}

在这里,我们通过buildOrderNo()方法生成了订单号,在实际开发中需要根据实际情况自行编写。

接着,创建一个Pay实例,并调用unifiedorder()方法发起统一下单请求,将传入一个PayOrder对象,用于封装订单信息。PayOrder类的构造函数如下:

public function __construct($attributes)
{

$this->attributes = $attributes;
$this->attributes['appid'] = static::$app_id;
$this->attributes['mch_id'] = static::$mch_id;
$this->attributes['nonce_str'] = Str::random(16);
$this->attributes['sign'] = $this->getSign();

}

在构造函数中,我们会将开发者ID和商户号添加到订单信息中,并生成随机字符串nonce_str,然后调用getSign()方法生成签名sign。

最后,我们将$response数组返回前端,前端通过微信JSAPI接口调用微信支付即可。

3、处理支付结果

支付完成后,微信会将支付结果以POST方式通知到配置的notify_url。在控制器中,可以通过如下代码来处理支付结果:

public function notify()
{

$pay = new Pay(
    config('wechat.app_id'),
    config('wechat.mch_id'),
    config('wechat.api_key'),
    config('wechat.ssl_cert_path'),
    config('wechat.ssl_key_path'),
    config('wechat.ssl_key_password'),
    config('wechat.notify_url')
);

// 处理支付结果
$result = $pay->handleNotify(function($notify, $successful){
    // 处理订单逻辑
    // 如果返回true,微信服务器就会认为告诉我们支付成功了
    return true;
});

return $result;

}

在这里,我们创建一个Pay实例,并调用handleNotify()方法来处理支付结果。handleNotify()方法需要传入一个回调函数,回调函数的参数$notify包含了微信服务器传递过来的支付结果,$successful表示支付结果是否成功。回调函数需要返回true或false,如果返回true,微信服务器就会认为告诉我们支付成功了。

4、验收

以上就是使用ThinkPHP6框架实现微信支付的主要流程,当然在实际开发中还有很多的细节需要注意。

验收有多个步骤,可以在微信开放平台的商户中心中找到“支付”-“开发配置”-“接口测试工具”,选择JSAPI支付类型,填入商户号以及必要的参数,确保微信支付功能正常。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注