You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

getRefundPaymentMethods返回类型异常及需返回双值的技术问题

问题解决方案

1. 修复返回值类型错误

报错的核心原因是case PxConfig::GATEWAY分支的返回语句逻辑错误:

return $refundMethods[] = $originalPaymentMethod;

这行代码先执行数组追加操作,然后返回被追加的字符串值(而非数组),违反了函数声明的array返回类型约束。

修改为:

case PxConfig::GATEWAY:
    $refundMethods[] = $originalPaymentMethod;
    return $refundMethods;

2. 实现同时返回两个值的需求

PHP函数无法直接返回多个独立值,可通过返回关联数组包裹两个结果:

修改后的完整函数

private function getRefundPaymentMethods(array $invoices, bool $hasUpgrade): array
{
    $refundMethods = [self::CREDITS];
    $originalPaymentMethod = ''; // 初始化变量,避免未定义

    if ($hasUpgrade) {
        return [
            'refund_methods' => $refundMethods,
            'original_payment_method' => $originalPaymentMethod
        ];
    }

    $transaction = $this->wsTransRepository->getPaymentTransactionByInvoice($invoices[0]['invoiceId']);
    $originalPaymentMethod = $transaction->gateway;
    $dateTransaction = strtotime($transaction->date);
    $now = time();
    $timeDiff = $now - $dateTransaction;
    $diffDays = round($timeDiff / (60 * 60 * 24));


    switch ($originalPaymentMethod) {
        case strstr($originalPaymentMethod, self::BRP_CREDIT) && $diffDays <= 330:
            $refundMethods[] = self::BRP_CREDIT_1X;
            break;
        case self::DIL && $diffDays <= 90:
        case self::PLP:
        case PlpConfig::GATEWAY:
            if ($diffDays <= 180) {
                $refundMethods[] = $originalPaymentMethod;
            }
            break;
        case PxConfig::GATEWAY:
            $refundMethods[] = $originalPaymentMethod;
            break;
    }

    // 统一返回包含两个结果的关联数组
    return [
        'refund_methods' => $refundMethods,
        'original_payment_method' => $originalPaymentMethod
    ];
}

调用示例

$result = $this->getRefundPaymentMethods($invoices, $hasUpgrade);
$refundMethods = $result['refund_methods']; // 获取退款方式数组
$originalPaymentMethod = $result['original_payment_method']; // 获取原支付方式

注意事项

  • str_split是用于拆分字符串为单个字符数组的函数,完全不适用当前场景,请勿使用。
  • 确保所有分支返回结构一致的关联数组,避免调用时出现键不存在的错误。

内容的提问来源于stack exchange,提问作者user15403926

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:35:24