新增微信支付
This commit is contained in:
@@ -16,6 +16,10 @@ use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use RuntimeException;
|
||||
|
||||
/**
|
||||
* 前台 VIP 支付控制器
|
||||
* 负责接收用户选择的支付渠道,下发支付中心订单并处理回调结果。
|
||||
*/
|
||||
class VipPaymentController extends Controller
|
||||
{
|
||||
/**
|
||||
@@ -41,10 +45,11 @@ class VipPaymentController extends Controller
|
||||
}
|
||||
|
||||
$vipLevel = VipLevel::query()->findOrFail((int) $request->validated('vip_level_id'));
|
||||
$provider = (string) $request->validated('provider');
|
||||
|
||||
try {
|
||||
// 先创建本地订单,再向支付中心发起下单,确保回调时有本地单据可追踪。
|
||||
$vipPaymentOrder = $this->vipPaymentService->createLocalOrder($request->user(), $vipLevel);
|
||||
$vipPaymentOrder = $this->vipPaymentService->createLocalOrder($request->user(), $vipLevel, $provider);
|
||||
$remoteOrder = $this->vipPaymentService->createRemoteOrder($vipPaymentOrder);
|
||||
$payUrl = (string) ($remoteOrder['pay_url'] ?? '');
|
||||
|
||||
|
||||
@@ -8,7 +8,12 @@
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Validator;
|
||||
|
||||
/**
|
||||
* 创建 VIP 支付订单请求
|
||||
* 负责校验会员购买等级与支付渠道,确保下单时明确指定支付方式。
|
||||
*/
|
||||
class CreateVipPaymentOrderRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
@@ -28,16 +33,14 @@ class CreateVipPaymentOrderRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'vip_level_id' => ['required', 'integer', 'exists:vip_levels,id'],
|
||||
'provider' => ['required', 'string', 'in:alipay,wechat'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置验证器实例。
|
||||
*
|
||||
* @param \Illuminate\Validation\Validator $validator
|
||||
* @return void
|
||||
*/
|
||||
public function withValidator($validator): void
|
||||
public function withValidator(Validator $validator): void
|
||||
{
|
||||
$validator->after(function ($validator) {
|
||||
$user = $this->user();
|
||||
@@ -71,6 +74,8 @@ class CreateVipPaymentOrderRequest extends FormRequest
|
||||
return [
|
||||
'vip_level_id.required' => '请选择要购买的 VIP 等级',
|
||||
'vip_level_id.exists' => '所选 VIP 等级不存在或已被删除',
|
||||
'provider.required' => '请选择支付方式',
|
||||
'provider.in' => '当前支付方式不受支持,请重新选择',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user