user; if ($user->platform == 0 || $user->platform == 2) { $res = WechatPay::orderRefund($order, $order_type, $refundFee, $orderRefundNo); if (!$res || $res['code'] == 1) { return $res; } return true; } else if ($user->platform == 1) { $res = Alipay::refund($order, $refundFee); if (!$res || $res['code'] == 1) { return $res; } return true; } else { return [ 'code' => 1, 'msg' => '退款失败' ]; } } /** * @param $order Order | PtActivityOrder * @param $order_type string * @param $refundFee integer 退款金额 * @param $orderRefundNo string 退款单号 * @return array|bool|\Yansongda\Supports\Collection */ public static function refund($order, $order_type, $orderRefundNo, $refundFee) { if(isset($order['order_type']) && $order['order_type'] == Order::ORDER_TYPE_GIVING_GIFTS && $refundFee && $order['giving_gifts_received_user_id']){ AccountLog::saveLog($order['giving_gifts_received_user_id'], $refundFee, AccountLog::TYPE_BALANCE, AccountLog::LOG_TYPE_INCOME, AccountLog::TYPE_PLATFORM_REFUND_ORDER, $order->id, "送礼订单退款至余额:退款订单号:{$orderRefundNo}"); return true; } if ($order->pay_type == Order::PAY_TYPE_YUNST_WECHAT_PAY && $order->transaction_id) { debug_log('我是退款111'); $orderYunst = new OrderYunst(); $store = Store::findOne($order->store_id); $data["cusid"] = $store->cusid;//商户号 // $data["trxamt"] = $refundFee *100;//退款金额 $data["trxamt"] = 1;//退款金额 $data["reqsn"] = $order->order_no .time();//商户退款订单号 $data["oldreqsn"] = $order->order_no;//原交易订单号 $data["oldtrxid"] = $order->transaction_id;//原交易流水 // $data["oldtrxid"] = '240124119500033224';//原交易流水 $res_info = $orderYunst->YunstRefund($data); debug_log($data); debug_log('走到通联退款'); debug_log($res_info); if ($res_info['subCode'] != 'SUCCESS' || $res_info['data']['trxstatus'] != '0000') { $res = [ 'code' => 1, 'msg' => '订单取消失败,退款失败,' . $res_info['data']['errmsg'], 'res' => $res_info, ]; }else{ $res = [ 'code' => 0, 'msg' => 'success', 'data' => true ]; return true; } return $res; debug_log($res_info); } if ($order->pay_type == 1 && $order->transaction_id) { $self_mini = intval(\app\models\Option::get('self_mini', $order->store_id, 'store', 0)['value']); if (\Yii::$app->prod_is_dandianpu() && (!Store::hasIncoming($order->store_id) && !$self_mini)) { $res = WechatPay::orderRefund($order, $order_type, $refundFee, $orderRefundNo); } else { if (is_profit_pay()) { $res = WechatNewPay::orderRefund($order, $order_type, $refundFee, $orderRefundNo); } else { $res = WechatPay::orderRefund($order, $order_type, $refundFee, $orderRefundNo); } } if (!$res || $res['code'] == 1) { return $res; } return true; } else if (in_array($order->pay_type, [Order::PAY_TYPE_WX_B2B]) && $order->transaction_id) { $res = Wechat\B2b\B2bPay::orderRefund($order, $order_type, $refundFee, $orderRefundNo); if (!$res || $res['code']) { //处理23.0的支付类型存为b2b的bug, if($order->version == 23.0 && $res['res'] && $res['res']['errcode'] == 48001){ $order->pay_type = 1; if(!$order->save()){ return [ 'code' => 1, 'msg' => $order->getFirstErrors(), ]; } return self::refund($order, $order_type, $orderRefundNo, $refundFee); } return $res; } return true; } else if (in_array($order->pay_type, [Order::PAY_TYPE_ADAPAY_WX, Order::PAY_TYPE_ADAPAY_ALIPAY, Order::PAY_TYPE_ADAPAY_QUICKPAY_FRONTPAY, Order::PAY_TYPE_HUIFU_V2_JSPAY_WX]) && $order->adapay_payment_id) { $res = Adapay::orderRefund($order, $order_type, $refundFee, $orderRefundNo); if (!$res || $res['code']) { return $res; } return true; } else if (in_array($order->pay_type, [Order::PAY_TYPE_ALLINPAY_WX]) && $order->allinpay_payment_id) { $res = Allinpay::orderRefund($order, $order_type, $refundFee, $orderRefundNo); if (!$res || $res['code'] == 1) { return $res; } return true; }else if ($order->pay_type == 4 && $order->alipay_trade_no) { if (is_profit_pay()) { $res = AlipayProfit::refund($order, $refundFee); } else { $res = Alipay::refund($order, $refundFee); } if (!$res || $res['code'] == 1) { return $res; } return true; } else if ($order->pay_type == Order::PAY_TYPE_MONTH) { $res = UserPayMonth::refund($order->user_id, $order, $refundFee); if (!$res || $res['code']) { return $res; } return true; } else { return [ 'code' => 1, 'msg' => '退款失败' ]; } } }