where(['merchant_uid' => $merchantUid])->get(['payment_type_uid']); if (empty($relation)) { return []; } $paymentTypeUids = []; foreach ($relation as $v){ $paymentTypeUids[] = $v->payment_type_uid; } $paymentLists = PaymentTypeModel::query()->whereIn('uid', $paymentTypeUids)->where('status', 1)->orderBy('weights', 'desc')->get(['id', 'name', 'pay_type', 'belong_device', 'limit', 'limit_type']); if ($paymentLists->isEmpty()) { return []; } else { return $paymentLists->toArray(); } }); return $payment; } /** * 创建系统订单 * * @param $merchantUid 商户uid * @param $paymentTypeInfo 支付类型 * @param $inputData 请求数据 * @return array|false */ public function createdOrder(string $merchantUid, $paymentTypeInfo, $inputData, $merchantMark) { $data = [ 'order_sn' => createOrderSn('PAY', $merchantMark), 'merchant_order_sn' => $inputData['order_id'], 'merchant_uid' => $merchantUid, 'order_amount' => $inputData['amount'], 'real_amount' => $inputData['amount'], 'status' => 1, 'notice_status' => 1, 'payment_uid' => $paymentTypeInfo->payment->uid ?? '', 'payment_attr_uid' => $paymentTypeInfo->paymentAttr->uid ?? '', 'pay_type' => $paymentTypeInfo->pay_type, 'notify_url' => $inputData['notify_url'], 'redirect_url' => $inputData['redirect_url'], 'product_name' => $inputData['product_name'], 'merchant_info' => json_encode($inputData), ]; $res = OrderModel::query()->create($data); if ($res) { $data['pay_code'] = $paymentTypeInfo->payment->pay_code; $data['pay_attr_code'] = $paymentTypeInfo->paymentAttr->code; $data['order_id'] = $res->id; $data['ip'] = $inputData['ip']; $data['partner_id'] = $paymentTypeInfo->payment->partner_id; event(new PayTotalEvent($merchantUid, $paymentTypeInfo->payment->uid, $paymentTypeInfo->paymentAttr->uid, (float)$inputData['amount'], 1)); return $data; } else { return false; } } /** * 获取支付订单 * * @param $order * @return string */ public function createPayLink($order) { $config = make(ConfigService::class)->getConfig(); $payUrl = $config['pay_notify_url']['value']; $notifyUrl = trim($payUrl, '/'); $notifyUrl .= '/api/notify/' . $order['order_id'] . '/' . $order['pay_code']; $payData = [ 'order_id' => $order['order_id'], 'order_sn' => $order['order_sn'], 'money' => $order['real_amount'], 'pay_attr_code' => $order['pay_attr_code'], 'notify_url' => $notifyUrl, 'partner_id' => $order['partner_id'], 'pay_url' => $payUrl, 'ip' => $order['ip'] ]; $result = PaymentInterface::factory($order['pay_code'])->createPayLink($payData); if ($result) { return $result; } return ''; } }