public function createRefundOrder($fields) { $account = AccountBiz::getInstance()->getOrCreateAccount($fields['user_id'], $fields['channel']); $refund = new RefundModel(); $refund->id = CommonUtil::longId(); $refund->user_id = $fields['user_id']; $refund->account_id = $account['id']; $refund->channel = $fields['channel']; $refund->gateway = $fields['gateway']; $refund->recharge_id = $fields['recharge_id']; $refund->mer_refund_no = $refund->id . substr(sprintf('%012s', $fields['user_id']), -12); if (null !== ($localEnv = \GlobalConfig::getLocalEnv())) { $refund->mer_refund_no = substr($refund->mer_refund_no, 0, -strlen($localEnv)) . $localEnv; } $refund->amount = $fields['refund_amount']; $refund->create_time = time(); $refund->callback_url = $fields['callback_url']; $refund->subject = $fields['subject']; $refund->body = isset($fields['body']) ? $fields['body'] : ''; $refund->busi_refund_no = isset($fields['busi_refund_no']) ? $fields['busi_refund_no'] : ''; $refund->seller_partner = isset($fields['seller_partner']) ? $fields['seller_partner'] : ''; if (true !== $refund->save()) { throw new PayException(ErrCode::ERR_ORDER_CREATE_FAIL); } return $refund; }