1.安装必要的第三方包
$ composer require overtrue/wechat:~5.0 -vvv
- 在控制器中添加微信支付调用方法
public function payOrder(Request $request)
{
$memberId = $request->attributes->get('memberId');
$orderSn = $request->get('orderSn');
$order = Orders::where('order_sn', $orderSn)->where('status', 0)->get()->toArray();
if (empty($order)) {
return ['code' => 404, 'massage' => '找不到订单!'];
}
try {
$config = Pay::payByWeChat(reset($order)['id'], $memberId);
return ['code' => 200, 'data' => $config];
} catch (\Exception $e) {
return ['code' => 404, 'massage' => $e->getMessage()];
}
}
3.在模型中创建支付方法
public static function getConfig()
{
$config = Configs::first()->toArray();
return [
// 必要配置
'app_id' => $config['app_id'] ?? env('WECHAT_APP_ID'),
'mch_id' => $config['mch_id'] ?? env('WECHAT_MCH_ID'),
'key' => $config['key'] ?? env('WECHAT_KEY'), // API 密钥
// 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
// 'cert_path' => 'path/to/your/cert.pem', // 绝对路径!!!!
// 'key_path' => 'path/to/your/key', // 绝对路径!!!!
'notify_url' => route('order.notify'), // 你也可以在下单时单独设置来想覆盖它
// 'sandbox' => true, // 设置为 false 或注释则关闭沙箱模式
];
}
public static function payByWeChat($orderId, $memberId)
{
$goodsIds = OrderItems::where('orders_id', 11)->select('goods_id')->get()->toArray();
$goodsIds = array_column($goodsIds, 'goods_id');
$lastOrder = Orders::join('orders_items', 'orders_items.orders_id', '=', 'orders.id')