getJsonData(); $rules = [ 'merchant_code' => 'required|string', 'payment_id' => 'required|integer', 'amount' => 'required', 'order_id' => 'required|string', 'notify_url' => 'required|string', 'redirect_url' => 'required|string', 'product_name' => 'nullable|string', 'signature' => 'required', 'ip' => 'required' ]; $validator = Validator::make($inputData, $rules); if ($validator->fails()) { // 如果有错误(可能是多个信息),这里只取第一个错误信息返回. logger($validator->errors()->first()); return json_fail($validator->errors()->first()); } $merchantInfo = MerchantModel::query()->where(['merchant_code' => $inputData['merchant_code'], 'status' => 1])->first(); if (empty($merchantInfo)) { logger('该商户没有开通!'); return json_fail('该商户没有开通!'); } $paymentTypeInfo = PaymentTypeModel::query()->where(['id' => $inputData['payment_id'], 'status' => 1])->first(['uid', 'pay_type', 'payment_uid', 'payment_attr_uid']); if (empty($paymentTypeInfo)) { logger('该支付通道不存在!'); return json_fail('该支付通道不存在!'); } $mpt = MerchantPaymentTypeModel::query()->where(['merchant_uid' => $merchantInfo->uid, 'payment_type_uid' => $paymentTypeInfo->uid])->count('id'); if ($mpt == 0) { logger('商户没有分配该通道!'); return json_fail('商户没有分配该通道!'); } // 验签 $signData = [ 'merchant_code' => $inputData['merchant_code'], 'order_id' => $inputData['order_id'], 'product_name' => $inputData['product_name'], 'amount' => $inputData['amount'], 'notify_url' => $inputData['notify_url'], 'redirect_url' => $inputData['redirect_url'], 'payment_id' => $inputData['payment_id'] ]; $sign = build_sign($signData, $merchantInfo->key); if ($inputData['signature'] != $sign) { logger('签名失败!'); return json_fail('签名失败!'); } $order = make(PaymentService::class)->createdOrder($merchantInfo->uid, $paymentTypeInfo, $inputData, $merchantInfo->merchant_mark); if (!$order) { logger('订单创建失败!'); return json_fail('订单创建失败!'); } // 获取支付链接 $payLink = make(PaymentService::class)->createPayLink($order); if (empty($payLink)) { logger('获取支付链接失败!', $order); return json_fail('获取支付链接失败'); } return json_success(['pay_url' => $payLink]); } }