109 lines
3.2 KiB
PHP
109 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\ServicePay;
|
|
|
|
use App\Models\MerchantOrder;
|
|
use App\Models\MerchantRegist;
|
|
use Yansongda\Pay\Pay;
|
|
|
|
class MerchantOrderServices
|
|
{
|
|
use PayTrait;
|
|
public $must_input = ['model_type', 'model_id', 'pay_type'];
|
|
|
|
public function setLogName($pay_type)
|
|
{
|
|
$name = 'merchant_order_';
|
|
|
|
$this->log_name = $name;
|
|
}
|
|
|
|
|
|
public function alert($msg)
|
|
{
|
|
echo '<script>alert("' .$msg . '");window.history.back()</script>';
|
|
}
|
|
|
|
public function order($request)
|
|
{
|
|
//验证表单数据
|
|
$this->checkPost($request);
|
|
//通道检查
|
|
$this->checkGateway($request);
|
|
if (count(self::$errorArr) > 0) {
|
|
return $this->msg($this->errorFormat());
|
|
}
|
|
|
|
//订单金额
|
|
$regist=MerchantRegist::find($request->input('model_id'));
|
|
if(empty($regist))
|
|
{
|
|
return $this->alert('缺少参数');
|
|
}
|
|
$this->user = [];
|
|
//设置订单数据
|
|
$order_sn = $request->input('order_sn');
|
|
$system_money=config_cache_default('merchant_config.merchant_regist_min_money',500);
|
|
|
|
if($system_money>($regist->money+0))
|
|
{
|
|
return $this->alert('商户注册链接失效');
|
|
}
|
|
|
|
//订单数据
|
|
$order_data = [
|
|
'order_sn' => $order_sn,
|
|
'name' => $order_sn . '定制',
|
|
'money'=>$regist->money,
|
|
'model_type'=>$request->input('model_type'),
|
|
'model_id'=>$request->input('model_id'),
|
|
'from_merchant_id'=>$regist->from_merchant_id,
|
|
'gateway_id'=>$this->gateway['id'],
|
|
'gateway_type'=>$this->pay_type,
|
|
'gateway_method'=>$this->pay_method,
|
|
'gateway_data'=>json_encode($this->gateway),
|
|
'merchant_money'=>$regist->money-$system_money,
|
|
'system_money'=>$system_money
|
|
];
|
|
//创建订单
|
|
$order_r=MerchantOrder::create($order_data);
|
|
$this->order=$order_r;
|
|
if ($order_r) {
|
|
|
|
$this->debugLog('选择通道是---' . $this->gateway['id'] . '方式是--' . $this->pay_method);
|
|
//支付通道配置,签名之类的
|
|
$config=[
|
|
'return_url' => route('web.merchant.order.notify', ['type' => $this->pay_type,'method'=>'return']),
|
|
'notify_url' => route('web.merchant.order.notify', ['type' => $this->pay_type,'method'=>'notify']),
|
|
];
|
|
$this->pay_service->payConfig($this->pay_type,$config);
|
|
$data =[
|
|
'out_trade_no' => $order_data['order_sn'],
|
|
'total_amount' => $order_data['money'],
|
|
'subject' => $order_data['order_sn'] . '定制' //$request->input('title','测试数据')
|
|
];
|
|
$this->debugLog('订单数据:',$data);
|
|
|
|
//发送支付请求
|
|
return $this->paySend($data);
|
|
} else {
|
|
return $this->msg(['error' => 1, 'msg' => '提交失败']);
|
|
}
|
|
}
|
|
//扫码支付
|
|
public function scan($r)
|
|
{
|
|
|
|
$data = [
|
|
'url' => $r->qr_code,
|
|
'order' => $this->order,
|
|
'type_name' => config('adconfig.pay_type')[$this->pay_type]
|
|
];
|
|
return view('web.order.scan2', $data);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} |