0) { $data_pd = []; $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $rcb_amount; $data_pd['order_sn'] = $order_info['order_sn']; $predeposit_model->changeRcb('order_comb_pay', $data_pd); } //下单,支付被冻结的预存款 $pd_amount = floatval($order_info['pd_amount']); if ($pd_amount > 0) { $data_pd = []; $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $pd_amount; $data_pd['order_sn'] = $order_info['order_sn']; $predeposit_model->changePd('order_comb_pay', $data_pd); } //更新订单状态 $update_order = []; $update_order['order_state'] = ORDER_STATE_PAY; $update_order['payment_time'] = isset($post['payment_time']) ? strtotime($post['payment_time']) : TIMESTAMP; $update_order['payment_code'] = $post['payment_code']; $update_order['trade_no'] = $post['trade_no']; $update = $TicketOrder->edit($update_order, ['id' => $order_info['id']]); if (!$update) { throw new \think\Exception(lang('ds_common_save_fail'), 10006); } Db::commit(); return ds_callback(true, '更新成功'); } catch (Exception $e) { Db::rollback(); return ds_callback(false, $e->getMessage()); } } /** * 积分支付 */ public function pointPay($order_info, $input, $buyer_info) { $point_ratio = config('app.point_ratio'); $point_amount = floatval($buyer_info['point'] / $point_ratio); if ($point_amount <= 0) return $order_info; $order_model = model('TicketOrder'); $predeposit_model = model('predeposit'); $order_amount = round($order_info['order_amount'] - $order_info['rcb_amount'] - $order_info['pd_amount'], 2); $data_point = []; $data_point['member_id'] = $buyer_info['member_id']; $data_point['union_id'] = $buyer_info['member_wxunionid']; $data_point['member_name'] = $buyer_info['member_name']; $data_point['amount'] = $order_amount; $data_point['order_sn'] = $order_info['order_sn']; if ($point_amount >= $order_amount) { //积分立即支付,订单支付完成 $predeposit_model->changePoint('order_pay', $data_point); // 订单状态 置为已支付 $data_order = []; $order_info['order_state'] = $data_order['order_state'] = 40; $data_order['payment_time'] = TIMESTAMP; $data_order['finished_time'] = TIMESTAMP; $data_order['payment_code'] = 'predeposit'; $order_info['point_amount'] = $data_order['point_amount'] = round($order_info['point_amount'] + ($order_amount * $point_ratio), 2); $result = $order_model->edit($data_order, ['id' => $order_info['id']]); if (!$result) { throw new \think\Exception('订单更新失败', 10006); } } else { //暂冻结预存款,后面还需要 API彻底完成支付 $data_point['amount'] = $point_amount; $predeposit_model->changeRcb('order_freeze', $data_point); //预存款支付金额保存到订单 $data_order = []; $order_info['point_amount'] = $data_order['point_amount'] = $order_info['point_amount'] + $point_amount * $point_ratio; $result = $order_model->editorder($data_order, ['id' => $order_info['id']]); if (!$result) { throw new \think\Exception('订单更新失败', 10006); } } return $order_info; } }