|
@@ -84,6 +84,9 @@ class WholeController extends Curd
|
|
|
},
|
|
|
'cert' => function ($query) {
|
|
|
$query->select('join_cert_member_id', 'member_cert_name');
|
|
|
+ },
|
|
|
+ 'return' => function($query){
|
|
|
+ $query->select('orders_return_id','join_return_order_id', 'order_return_status');
|
|
|
}
|
|
|
]);
|
|
|
foreach ($where as $column => $value) {
|
|
@@ -126,8 +129,8 @@ class WholeController extends Curd
|
|
|
foreach ($items as &$item) {
|
|
|
if (!empty($item['sheet'])) {
|
|
|
$goods = Goods::where('goods_id', $item['sheet']['join_sheet_goods_id'])->first();
|
|
|
- $item['sheet']['goods_name'] = $goods->goods_name;
|
|
|
- $item['sheet']['goods_classify'] = $goods->goods_classify;
|
|
|
+ $item['sheet']['goods_name'] = $goods->goods_name ?? '';
|
|
|
+ $item['sheet']['goods_classify'] = $goods->goods_classify ?? '';
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -549,7 +552,7 @@ class WholeController extends Curd
|
|
|
'pay_status' => 'SUCCESS',
|
|
|
'pay_category' => $params['pay_category'],
|
|
|
'pay_amount' => $params['order_sheet_pay'],
|
|
|
- 'pay_prepayid' => 0,
|
|
|
+ 'pay_prepayid' => $params['join_order_member_id'].'-'.$params['pay_category'],
|
|
|
'pay_paytimes' => date('Y-m-d H:i:s'),
|
|
|
'pay_remark' => $params['order_remark'] ?? '',
|
|
|
'pay_addtimes' => time()
|
|
@@ -936,13 +939,18 @@ class WholeController extends Curd
|
|
|
|
|
|
public function doRefund(Request $request)
|
|
|
{
|
|
|
- $returnId = $request->post('return_id', '');
|
|
|
- $amount = $request->post('amount', 0);
|
|
|
- if (!$returnId || !$amount) {
|
|
|
+ $orderId = $request->post('order_id', '');
|
|
|
+ // $returnId = $request->post('return_id', '');
|
|
|
+ $amount = $request->post('refund_amount', 0);
|
|
|
+ $password = $request->post('refund_password', '');
|
|
|
+ if (!$orderId || !$amount || !$password) {
|
|
|
return json_fail('参数异常');
|
|
|
}
|
|
|
+ if ($password != '123456'){
|
|
|
+ return json_fail('支付密码错误');
|
|
|
+ }
|
|
|
|
|
|
- $return = OrderReturn::where('join_return_order_id', $returnId)
|
|
|
+ $return = OrderReturn::where('join_return_order_id', $orderId)
|
|
|
->first();
|
|
|
if (!$return) {
|
|
|
return json_fail("退款订单异常");
|
|
@@ -952,7 +960,7 @@ class WholeController extends Curd
|
|
|
if (!$order) {
|
|
|
return json_fail("订单异常");
|
|
|
}
|
|
|
- if ($order->order_is_complete == 'Y' || $order->order_is_complete == 'R'){
|
|
|
+ if ($order->order_is_complete == 'Y' || $order->order_is_complete == 'R') {
|
|
|
|
|
|
return json_fail('订单已完成,无法退款');
|
|
|
}
|
|
@@ -960,25 +968,12 @@ class WholeController extends Curd
|
|
|
return json_fail('退款金额不能超过订单金额');
|
|
|
}
|
|
|
|
|
|
- $payDetail = PayDetail::where('join_pay_order_id', $order->order_groupby)->first();
|
|
|
+ $payDetail = PayDetail::where('join_pay_order_id', $order->order_groupby)->where('pay_status', 'SUCCESS')->first();
|
|
|
if (!$payDetail) {
|
|
|
return json_fail("支付信息异常异常");
|
|
|
}
|
|
|
- $responseJson = [];
|
|
|
- if (!empty($payDetail->pay_json_response)) {
|
|
|
- $responseJson = json_decode($payDetail->pay_json_response, true);
|
|
|
- if (!isset($responseJson['trxid'])) {
|
|
|
- return json_fail("支付信息异常异常");
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- $data = [
|
|
|
- 'randomstr' => random_string(32),
|
|
|
- 'reqsn' => $return->join_return_order_id,
|
|
|
- 'oldtrxid' => $responseJson['trxid'],
|
|
|
- 'trxamt' => $amount * 100,
|
|
|
-
|
|
|
- ];
|
|
|
+ $payType = explode('-', $payDetail->pay_prepayid);
|
|
|
|
|
|
try {
|
|
|
Db::beginTransaction();
|
|
@@ -987,9 +982,76 @@ class WholeController extends Curd
|
|
|
// return 表
|
|
|
$return->order_return_status = 'DONE';
|
|
|
$return->save();
|
|
|
+ $res = '[]';
|
|
|
+ $data = '[]';
|
|
|
+ // 区分账户余额支付和通联支付
|
|
|
+ if (isset($payType[1]) && in_array($payType[1], ['W06', 'A01'])) {
|
|
|
+ $responseJson = [];
|
|
|
+ if (!empty($payDetail->pay_json_response)) {
|
|
|
+ $responseJson = json_decode($payDetail->pay_json_response, true);
|
|
|
+ if (!isset($responseJson['trxid'])) {
|
|
|
+ throw new PayException("支付信息异常");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data = [
|
|
|
+ 'randomstr' => random_string(32),
|
|
|
+ 'reqsn' => $return->join_return_order_id,
|
|
|
+ 'oldtrxid' => $responseJson['trxid'],
|
|
|
+ 'trxamt' => $amount * 100,
|
|
|
|
|
|
- $tlpay = new Tlpay();
|
|
|
- $res = $tlpay->refund($data);
|
|
|
+ ];
|
|
|
+
|
|
|
+ $tlpay = new Tlpay();
|
|
|
+ $res = $tlpay->refund($data);
|
|
|
+
|
|
|
+ $resArray = json_decode($res, true);
|
|
|
+ if (AppUtil::validSign($resArray)) {
|
|
|
+ if ($resArray['retcode'] != 'SUCCESS' || $resArray['trxstatus'] != '0000') {
|
|
|
+ throw new PayException('退款失败,原因:' . $resArray['errmsg']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 余额支付
|
|
|
+ if (isset($payType[1]) && $payType[1] == 'CASH') {
|
|
|
+ $account = MemberAccount::where('join_account_member_id', $order->join_order_member_id)
|
|
|
+ ->where('member_account_classify', 'CASH')
|
|
|
+ ->first();
|
|
|
+ $account->member_account_expend = $account->member_account_expend - $amount;
|
|
|
+ $account->member_account_surplus = $account->member_account_surplus + $amount;
|
|
|
+ $account->save();
|
|
|
+
|
|
|
+ $data = [
|
|
|
+ 'type' => 'REFUND',
|
|
|
+ 'member_id' => $order->join_order_member_id,
|
|
|
+ 'order_id' => $return->join_return_order_id,
|
|
|
+ 'return_id' => $return->orders_return_id
|
|
|
+ ];
|
|
|
+ $res = json_encode([
|
|
|
+ 'status' => 'SUCCESS'
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ // 卡支付
|
|
|
+ if (count($payType) == 1) {
|
|
|
+ $account = MemberAccount::where('join_account_member_id', $order->join_order_member_id)
|
|
|
+ ->where('member_account_nbr', $payType[0])
|
|
|
+ ->where('member_account_classify', 'CARD')
|
|
|
+ ->first();
|
|
|
+ $account->member_account_expend = $account->member_account_expend - $amount;
|
|
|
+ $account->member_account_surplus = $account->member_account_surplus + $amount;
|
|
|
+ $account->save();
|
|
|
+
|
|
|
+ $data = [
|
|
|
+ 'type' => 'REFUND',
|
|
|
+ 'nbr' => $account->member_account_nbr,
|
|
|
+ 'member_id' => $order->join_order_member_id,
|
|
|
+ 'order_id' => $return->join_return_order_id,
|
|
|
+ 'return_id' => $return->orders_return_id
|
|
|
+ ];
|
|
|
+ $res = json_encode([
|
|
|
+ 'status' => 'SUCCESS'
|
|
|
+ ]);
|
|
|
+ }
|
|
|
|
|
|
// 生成payDetail
|
|
|
$payDetailData = [
|
|
@@ -1001,31 +1063,26 @@ class WholeController extends Curd
|
|
|
'pay_paytimes' => date('Y-m-d H:i:s'),
|
|
|
'pay_json_request' => json_encode($data),
|
|
|
'pay_json_response' => $res,
|
|
|
- 'pay_prepayid' => 0,
|
|
|
+ 'pay_prepayid' => $payType[0] . '-REFUND',
|
|
|
'pay_addtimes' => time()
|
|
|
];
|
|
|
PayDetail::insert($payDetailData);
|
|
|
|
|
|
- $resArray = json_decode($res, true);
|
|
|
- if (AppUtil::validSign($resArray)) {
|
|
|
- if ($resArray['retcode'] != 'SUCCESS' || $resArray['trxstatus'] != '0000') {
|
|
|
-// throw new PayException('退款失败,原因:' . $resArray['errmsg']);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
Db::commit();
|
|
|
|
|
|
- _syslog("退款", "发起退款", $resArray, $data);
|
|
|
+ _syslog("退款", "发起退款", json_decode($res), $data);
|
|
|
return json_success("退款成功");
|
|
|
} catch (PayException $e) {
|
|
|
Db::rollBack();
|
|
|
|
|
|
- _syslog("退款", "发起退款", $resArray ?? $e->getMessage(), $data);
|
|
|
+ _syslog("退款", "发起退款", $e->getMessage(), $data);
|
|
|
return json_fail($e->getMessage());
|
|
|
} catch (\Exception $e) {
|
|
|
Db::rollBack();
|
|
|
|
|
|
- _syslog("退款", "发起退款", $resArray ?? $e->getMessage(), $data);
|
|
|
+ dump($e->getTrace());
|
|
|
+
|
|
|
+ _syslog("退款", "发起退款", $e->getMessage(), $data);
|
|
|
return json_fail("数据更新失败");
|
|
|
}
|
|
|
}
|