|
|
|
|
@ -39,92 +39,94 @@ class PayController extends Controller
|
|
|
|
|
if ($orderInfo->status !== 1) return \Yz::echoError1("订单不是待支付状态不能支付。当前状态:" . $orderInfo->status);
|
|
|
|
|
$personInfo = DB::table('web_user_person')->where(['id' => $orderInfo->person_id, 'is_del' => 0])->first();
|
|
|
|
|
if (!$personInfo) return \Yz::echoError1("就诊人异常");
|
|
|
|
|
$sub_org_code=0; //小程序端医院代码
|
|
|
|
|
if($orderInfo->hospital_id==1){
|
|
|
|
|
$sub_org_code=6;
|
|
|
|
|
$sub_org_code = 0; //小程序端医院代码
|
|
|
|
|
if ($orderInfo->hospital_id == 1) {
|
|
|
|
|
$sub_org_code = 6;
|
|
|
|
|
}
|
|
|
|
|
if($orderInfo->hospital_id==2){
|
|
|
|
|
$sub_org_code=2;
|
|
|
|
|
if ($orderInfo->hospital_id == 2) {
|
|
|
|
|
$sub_org_code = 2;
|
|
|
|
|
}
|
|
|
|
|
if($sub_org_code==0) return \Yz::echoError1("医院id异常");
|
|
|
|
|
$XCXApi=new XCXApiController();
|
|
|
|
|
if ($sub_org_code == 0) return \Yz::echoError1("医院id异常");
|
|
|
|
|
$XCXApi = new XCXApiController();
|
|
|
|
|
$params = [
|
|
|
|
|
'appid' =>$XCXApi::$appid,
|
|
|
|
|
'sub_org_code'=>$sub_org_code,
|
|
|
|
|
'appid' => $XCXApi::$appid,
|
|
|
|
|
'sub_org_code' => $sub_org_code,
|
|
|
|
|
'ghzid' => $personInfo->ghzid,
|
|
|
|
|
'orderid' => $orderInfo->order_number,
|
|
|
|
|
'order_desc' => $orderInfo->title,
|
|
|
|
|
'amount' => (int)($orderInfo->true_price * 100),
|
|
|
|
|
'notify_url'=> config('app.globals.PayNotifyUrl')
|
|
|
|
|
'notify_url' => config('app.globals.PayNotifyUrl')
|
|
|
|
|
];
|
|
|
|
|
$nonce=self::nonce();
|
|
|
|
|
$timestamp=(string)time();
|
|
|
|
|
$nonce = self::nonce();
|
|
|
|
|
$timestamp = (string)time();
|
|
|
|
|
|
|
|
|
|
//签名
|
|
|
|
|
$pay_path="/jeecg-boot/hospital/openapi/order/create";
|
|
|
|
|
$base64Signature=$XCXApi::Sign($pay_path,$params,$nonce,$timestamp,true);
|
|
|
|
|
$params['timestamp']=$timestamp;
|
|
|
|
|
$params['nonce']=$nonce;
|
|
|
|
|
$params['signature']=$base64Signature;
|
|
|
|
|
return \Yz::Return(true,"操作完成",['info'=>$params]);
|
|
|
|
|
$pay_path = "/jeecg-boot/hospital/openapi/order/create";
|
|
|
|
|
$base64Signature = $XCXApi::Sign($pay_path, $params, $nonce, $timestamp, true);
|
|
|
|
|
$params['timestamp'] = $timestamp;
|
|
|
|
|
$params['nonce'] = $nonce;
|
|
|
|
|
$params['signature'] = $base64Signature;
|
|
|
|
|
return \Yz::Return(true, "操作完成", ['info' => $params]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//订单支付查询
|
|
|
|
|
public function CheckPay()
|
|
|
|
|
{
|
|
|
|
|
$openid = request('openid');
|
|
|
|
|
$order_number= request('order_number');
|
|
|
|
|
$order_number = request('order_number');
|
|
|
|
|
$XCX = new XCXApiController();
|
|
|
|
|
$res = $XCX::Post('订单查询', ['orderid'=>$order_number]);
|
|
|
|
|
$res = $XCX::Post('订单查询', ['orderid' => $order_number]);
|
|
|
|
|
//判断如果支付成功,更改订单状态
|
|
|
|
|
if($res['data']['trade_state']==='SUCCESS'){
|
|
|
|
|
$order=DB::table('orders')->where(['order_number'=>$order_number])->first();
|
|
|
|
|
DB::table('orders')->where(['id'=>$order->id])->update([
|
|
|
|
|
'status'=>2,
|
|
|
|
|
if ($res['data']['trade_state'] === 'SUCCESS') {
|
|
|
|
|
$order = DB::table('orders')->where(['order_number' => $order_number])->first();
|
|
|
|
|
DB::table('orders')->where(['id' => $order->id])->update([
|
|
|
|
|
'status' => 2,
|
|
|
|
|
'pay_time' => date('Y-m-d H:i:s'),
|
|
|
|
|
]);
|
|
|
|
|
$Finish=new OrderController();//预约体检
|
|
|
|
|
$Finish = new OrderController();//预约体检
|
|
|
|
|
$Finish->Finish($order_number);
|
|
|
|
|
return \Yz::Return(true,"支付成功",['id'=>$order->id]);
|
|
|
|
|
}else{
|
|
|
|
|
return \Yz::echoError1("支付失败".$res['data']['trade_state']);
|
|
|
|
|
return \Yz::Return(true, "支付成功", ['id' => $order->id]);
|
|
|
|
|
} else {
|
|
|
|
|
return \Yz::echoError1("支付失败" . $res['data']['trade_state']);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//退款
|
|
|
|
|
public function Refund()
|
|
|
|
|
{
|
|
|
|
|
//先调用思信取消,恢复号源,然后再退款
|
|
|
|
|
//判断订单状态是否是已经支付,判断是否到检,
|
|
|
|
|
$openid = request('openid');
|
|
|
|
|
$id= request('id');
|
|
|
|
|
$id = request('id');
|
|
|
|
|
$orderInfo = DB::table('orders')->where(['id' => $id])->first();
|
|
|
|
|
if (!$orderInfo) return \Yz::echoError1("未找到有效订单");
|
|
|
|
|
if ($orderInfo->status !==2) return \Yz::echoError1("订单状态异常。当前状态:" . $orderInfo->status);
|
|
|
|
|
if ($orderInfo->check_status ==2) return \Yz::echoError1("已登记体检,禁止退款");
|
|
|
|
|
if ($orderInfo->status !== 2) return \Yz::echoError1("订单状态异常。当前状态:" . $orderInfo->status);
|
|
|
|
|
if ($orderInfo->check_status == 2) return \Yz::echoError1("已登记体检,禁止退款");
|
|
|
|
|
//调用思信取消,恢复号源
|
|
|
|
|
$ap=new OrderController();
|
|
|
|
|
$cancel= $ap->cancel_appointment($orderInfo->hospital_id,[
|
|
|
|
|
$ap = new OrderController();
|
|
|
|
|
$cancel = $ap->cancel_appointment($orderInfo->hospital_id, [
|
|
|
|
|
'type' => $orderInfo->type,
|
|
|
|
|
'预约Id' => $orderInfo->appointment_number
|
|
|
|
|
]);
|
|
|
|
|
if($cancel['code']!=0) return \Yz::echoError1("取消预约失败,".$cancel['message']);
|
|
|
|
|
//退款
|
|
|
|
|
$data=[
|
|
|
|
|
'orderid'=>$orderInfo->order_number,
|
|
|
|
|
'refund_order_id'=>'T'.$orderInfo->order_number,
|
|
|
|
|
'refund_amount'=>(int)($orderInfo->true_price * 100),
|
|
|
|
|
'refund_reason'=>"体检H5订单退款",
|
|
|
|
|
if ($cancel['code'] != 0) return \Yz::echoError1("取消预约失败," . $cancel['message']);
|
|
|
|
|
//如果真实支付大于0 则调用小程序退款
|
|
|
|
|
if ($orderInfo->true_price > 0) {
|
|
|
|
|
$data = [
|
|
|
|
|
'orderid' => $orderInfo->order_number,
|
|
|
|
|
'refund_order_id' => 'T' . $orderInfo->order_number,
|
|
|
|
|
'refund_amount' => (int)($orderInfo->true_price * 100),
|
|
|
|
|
'refund_reason' => "体检H5订单退款",
|
|
|
|
|
];
|
|
|
|
|
$XCX = new XCXApiController();
|
|
|
|
|
$res = $XCX::Post('订单退款', $data);
|
|
|
|
|
if($res['data']['refund_state']==='SUCCESS'){
|
|
|
|
|
DB::table('orders')->where(['id'=>$id])->update([
|
|
|
|
|
'status'=>5
|
|
|
|
|
]);
|
|
|
|
|
return \Yz::Return(true,"退款成功",[]);
|
|
|
|
|
}else{
|
|
|
|
|
return \Yz::echoError1("退款失败".$res['data']['refund_state']);
|
|
|
|
|
if ($res['data']['refund_state'] != 'SUCCESS') {
|
|
|
|
|
return \Yz::echoError1("退款失败" . $res['data']['refund_state']);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
DB::table('orders')->where(['id' => $id])->update([
|
|
|
|
|
'status' => 5
|
|
|
|
|
]);
|
|
|
|
|
return \Yz::Return(true, "退款成功", []);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|