OrderPay.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\order;
  11. use app\model\system\Pay;
  12. /**
  13. * 订单支付相关
  14. *
  15. * @author Administrator
  16. *
  17. */
  18. class OrderPay extends OrderCommon
  19. {
  20. /**
  21. * 改变订单的交易流水号
  22. * @param $params
  23. */
  24. public function reset0rderTradeNo($params){
  25. $out_trade_no = $params['out_trade_no'];
  26. $order_condition = array(
  27. ['pay_status', '=', 0]
  28. );
  29. $order_condition[] = ['out_trade_no', '=', $out_trade_no];
  30. $order_list = model('order')->getList($order_condition, 'pay_money,order_name,out_trade_no,order_id,pay_status,site_id,member_id,member_card_order');
  31. //判断订单数是否匹配
  32. if (empty($order_list))
  33. return $this->error([], '没有可支付订单!');
  34. $order_name = '';
  35. $pay_money = 0;
  36. foreach($order_list as $v){
  37. $site_id = $v['site_id'];
  38. $order_name = string_split($order_name, ',', $v['order_name']);
  39. $pay_money += $v['pay_money'];
  40. }
  41. $pay_model = new Pay();
  42. // $pay_info = $pay_model->getPayInfo($out_trade_no)['data'] ?? [];
  43. // if(empty($pay_info))
  44. // return $this->error([], '找不到可支付的单据!');
  45. $result = $pay_model->deletePay($out_trade_no);//关闭旧支付单据
  46. if($result['code'] < 0){
  47. return $this->error([], '当前单据已支付!');
  48. }
  49. $member_id = $order_list[0]['member_id'];
  50. $new_out_trade_no = $pay_model->createOutTradeNo($member_id ?? 0);
  51. $update_data = array(
  52. 'out_trade_no' => $new_out_trade_no
  53. );
  54. model('order')->update($update_data, [['out_trade_no', '=', $out_trade_no], ['pay_status', '=', 0]]);
  55. model('member_level_order')->update($update_data, [['out_trade_no', '=', $out_trade_no], ['pay_status', '=', 0]]);
  56. $result = $pay_model->addPay($site_id, $new_out_trade_no, '', $order_name, $order_name, $pay_money, '', 'OrderPayNotify', '');
  57. return $this->success($new_out_trade_no);
  58. }
  59. }