获取患者订单支付数据接口新增服务包订单支付数据获取。

This commit is contained in:
wucongxing8150 2024-04-11 14:43:51 +08:00
parent a1d496dd51
commit d7338c495b
4 changed files with 103 additions and 11 deletions

View File

@ -20,7 +20,7 @@ class PatientOrderRequest extends FormRequest
'family_id',// 家庭成员id就诊用户
],
'getPatientOrderPayInfo' => [ // 获取患者订单支付数据
"order_type", // 订单类型1:问诊订单 2药品订单 3检测订单)
"order_type", // 订单类型1:问诊订单 2:药品订单 3:检测订单 4:随访包订单 5:健康包订单)
"order_no"// 订单编号
],
'addPatientOrderPay' => [ // 模拟支付成功-金额为0时使用
@ -75,7 +75,7 @@ class PatientOrderRequest extends FormRequest
'inquiry_status' => 'required|integer|min:0|max:4',
'order_type' => 'required|integer|min:1|max:3',
'order_type' => 'required|integer|min:1|max:5',
'order_no' => 'required',
'order_prescription_id' => 'required',

View File

@ -28,6 +28,7 @@ use App\Model\OrderProduct;
use App\Model\OrderProductCoupon;
use App\Model\OrderProductItem;
use App\Model\OrderProductLogistic;
use App\Model\OrderServicePackage;
use App\Model\PatientFamily;
use App\Model\PatientFamilyHealth;
use App\Model\PatientFamilyPersonal;
@ -770,8 +771,8 @@ class PatientOrderService extends BaseService
$result['pay_config'] = []; // 小程序支付配置
$result['cannot_use_coupon_reason'] = ""; // 不可使用优惠卷原因
// 问诊订单
if ($order_type == 1) {
// 问诊订单
$params = array();
$params['inquiry_no'] = $order_no;
$params['patient_id'] = $user_info['client_user_id'];
@ -784,6 +785,7 @@ class PatientOrderService extends BaseService
if ($order_inquiry['inquiry_status'] != 1) {
$return_result['message'] = "订单状态错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_inquiry['order_inquiry_id'];
$return_result['data']['order_status'] = $order_inquiry['inquiry_status'];
$return_result['data']['order_pay_status'] = $order_inquiry['inquiry_pay_status'];
@ -794,6 +796,7 @@ class PatientOrderService extends BaseService
if ($order_inquiry['inquiry_pay_status'] != 1) {
$return_result['message'] = "订单支付状态错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_inquiry['order_inquiry_id'];
$return_result['data']['order_status'] = $order_inquiry['inquiry_status'];
$return_result['data']['order_pay_status'] = $order_inquiry['inquiry_pay_status'];
@ -805,6 +808,7 @@ class PatientOrderService extends BaseService
if ($diff_time >= 30) {
$return_result['message'] = "订单已过期";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_inquiry['order_inquiry_id'];
$return_result['data']['order_status'] = $order_inquiry['inquiry_status'];
$return_result['data']['order_pay_status'] = $order_inquiry['inquiry_pay_status'];
@ -835,8 +839,10 @@ class PatientOrderService extends BaseService
// 获取小程序支付配置
$pay_config = $WechatPay->getAppletsPayConfig($prepay['prepay_id']);
}
} elseif ($order_type == 2) {
// 药品订单
}
// 药品订单
if ($order_type == 2) {
$params = array();
$params['order_product_no'] = $order_no;
$params['patient_id'] = $user_info['client_user_id'];
@ -849,6 +855,7 @@ class PatientOrderService extends BaseService
if ($order_product['order_product_status'] != 1) {
$return_result['message'] = "订单状态错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_product['order_product_id'];
$return_result['data']['order_status'] = $order_product['order_product_status'];
$return_result['data']['order_pay_status'] = $order_product['pay_status'];
@ -859,6 +866,7 @@ class PatientOrderService extends BaseService
if ($order_product['pay_status'] != 1) {
$return_result['message'] = "订单支付状态错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_product_id'] = $order_product['order_product_id'];
$return_result['data']['order_product_status'] = $order_product['order_product_status'];
$return_result['data']['order_pay_status'] = $order_product['pay_status'];
@ -870,6 +878,7 @@ class PatientOrderService extends BaseService
if ($diff_time >= 30) {
$return_result['message'] = "订单已过期";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_product_id'] = $order_product['order_product_id'];
$return_result['data']['order_product_status'] = $order_product['order_product_status'];
$return_result['data']['order_pay_status'] = $order_product['pay_status'];
@ -896,6 +905,7 @@ class PatientOrderService extends BaseService
if (empty($order_prescription_products)) {
$return_result['message'] = "优惠卷数据错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_product_id'] = $order_product['order_product_id'];
$return_result['data']['order_product_status'] = $order_product['order_product_status'];
$return_result['data']['order_pay_status'] = $order_product['pay_status'];
@ -909,6 +919,7 @@ class PatientOrderService extends BaseService
if (empty($product)) {
$return_result['message'] = "优惠卷数据错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_product_id'] = $order_product['order_product_id'];
$return_result['data']['order_product_status'] = $order_product['order_product_status'];
$return_result['data']['order_pay_status'] = $order_product['pay_status'];
@ -943,8 +954,10 @@ class PatientOrderService extends BaseService
// 获取小程序支付配置
$pay_config = $WechatPay->getAppletsPayConfig($prepay['prepay_id']);
}
} elseif ($order_type == 3) {
// 检测订单
}
// 检测订单
if ($order_type == 3) {
// 获取检测订单数据
$params = array();
$params['detection_no'] = $order_no;
@ -958,6 +971,7 @@ class PatientOrderService extends BaseService
if ($order_detection['detection_status'] != 1) {
$return_result['message'] = "订单状态错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_detection['order_detection_id'];
$return_result['data']['order_status'] = $order_detection['detection_status'];
$return_result['data']['order_pay_status'] = $order_detection['detection_pay_status'];
@ -968,6 +982,7 @@ class PatientOrderService extends BaseService
if ($order_detection['detection_pay_status'] != 1) {
$return_result['message'] = "订单支付状态错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_detection['order_detection_id'];
$return_result['data']['order_status'] = $order_detection['detection_status'];
$return_result['data']['order_pay_status'] = $order_detection['detection_pay_status'];
@ -979,6 +994,7 @@ class PatientOrderService extends BaseService
if ($diff_time >= 30) {
$return_result['message'] = "订单已过期";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_detection['order_detection_id'];
$return_result['data']['order_status'] = $order_detection['detection_status'];
$return_result['data']['order_pay_status'] = $order_detection['detection_pay_status'];
@ -1007,8 +1023,75 @@ class PatientOrderService extends BaseService
$pay_config = $WechatPay->getAppletsPayConfig($prepay['prepay_id']);
}
} else {
return fail();
}
// 服务包订单
if ($order_type == 4 || $order_type == 5) {
// 获取检测订单数据
$params = array();
$params['order_service_no'] = $order_no;
$params['patient_id'] = $user_info['client_user_id'];
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)) {
return fail(HttpEnumCode::HTTP_ERROR, "非法订单");
}
// 验证订单状态
if ($order_service_package['order_service_status'] != 1) {
$return_result['message'] = "订单状态错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_service_package['order_service_id'];
$return_result['data']['order_status'] = $order_service_package['order_service_status'];
$return_result['data']['order_pay_status'] = $order_service_package['pay_status'];
return success($return_result);
}
// 验证订单支付状态
if ($order_detection['pay_status'] != 1) {
$return_result['message'] = "订单支付状态错误";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_service_package['order_service_id'];
$return_result['data']['order_status'] = $order_service_package['order_service_status'];
$return_result['data']['order_pay_status'] = $order_service_package['pay_status'];
return success($return_result);
}
// 验证订单过期支付时间
$diff_time = (strtotime($order_service_package['created_at']) - time()) / 60;
if ($diff_time >= 30) {
$return_result['message'] = "订单已过期";
$return_result['data'] = $result;
$return_result['data']['order_no'] = $order_no;
$return_result['data']['order_id'] = $order_service_package['order_service_id'];
$return_result['data']['order_status'] = $order_service_package['order_service_status'];
$return_result['data']['order_pay_status'] = $order_service_package['pay_status'];
return success($return_result);
}
$result['order_id'] = $order_service_package['order_service_id'];
$result['created_at'] = $order_service_package['created_at'];
// 获取订单金额
$result['amount_total'] = $order_service_package['amount_total']; // 订单金额
$result['payment_amount_total'] = $order_service_package['amount_total'] - 0; // 实际订单金额
$result['coupon_amount_total'] = 0; // 优惠金额
if ($order_service_package['payment_amount_total'] > 0) {
// 发起支付
$WechatPay = new WechatPay(1, 3);
// 获取预支付交易会话标识
$prepay = $WechatPay->getJsapiPrepayId($order_no, (int)round($order_service_package['payment_amount_total'] * 100), $user_info['open_id'], "检测服务");
if (empty($prepay)) {
return fail(HttpEnumCode::SERVER_ERROR);
}
// 获取小程序支付配置
$pay_config = $WechatPay->getAppletsPayConfig($prepay['prepay_id']);
}
}
$result['pay_config'] = $pay_config ?? [];

View File

@ -48,6 +48,8 @@ return [
"product_refund_notify_url" => env('PATIENT_WECHAT_PRODUCT_REFUND_NOTIFY_URL', 'callback/wxpay/product/refund'),
"detection_pay_notify_url" => env('PATIENT_WECHAT_DETECTION_PAY_NOTIFY_URL', 'callback/wxpay/detection/success'),
"detection_refund_notify_url" => env('PATIENT_WECHAT_DETECTION_REFUND_NOTIFY_URL', 'callback/wxpay/detection/refund'),
"service_pay_notify_url" => env('PATIENT_WECHAT_SERVICE_PAY_NOTIFY_URL', 'callback/wxpay/service/success'),
"service_refund_notify_url" => env('PATIENT_WECHAT_SERVICE_REFUND_NOTIFY_URL', 'callback/wxpay/service/refund'),
],
"pharmacist" => [
"app_id" => env('DOCTOR_WECHAT_APP_ID', 'wxc83296720404aa7b'),

View File

@ -28,7 +28,7 @@ class WechatPay
/**
* @param string $user_type 用户类型1患者端 2:专家端 3:药师端)
* @param int $order_type 订单类型1:问诊订单 2:药品订单 3:检测订单)
* @param int $order_type 订单类型1:问诊订单 2:药品订单 3:检测订单 4:随访包订单 5:健康包订单)
*/
public function __construct(string $user_type,int $order_type)
{
@ -44,7 +44,7 @@ class WechatPay
throw new BusinessException("系统配置错误", HttpEnumCode::SERVER_ERROR);
}
if (!in_array($order_type,[1,2,3])){
if (!in_array($order_type,[1,2,3,4,5])){
throw new BusinessException("订单类型错误", HttpEnumCode::SERVER_ERROR);
}
@ -69,6 +69,13 @@ class WechatPay
$this->pay_config = config("we_chat.applets.pay.1636644248");
}
if ($order_type == 4 || $order_type == 5){
$this->pay_notify_url = $this->config['service_pay_notify_url'];
$this->refund_notify_url = $this->config['service_refund_notify_url'];
$this->pay_config = config("we_chat.applets.pay.1659662936");
}
$app_env = config('app_env','dev');
if ($app_env == "prod"){
$this->domain_name = env('DOMAIN_NAME_PROD','https://prod.hospital.applets.igandanyiyuan.com/');