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

GoCardless Pro PHP客户端Payouts端点日期筛选失效求助

问题分析与解决方案

核心问题点

  1. 无效日期导致参数异常:你代码中使用了2023-06-31,6月仅有30天,这个无效日期会让DateTime类自动修正为7月1日,直接打乱了筛选范围。
  2. 参数格式不符合GoCardless PHP客户端要求:尝试的两种参数写法都没遵循客户端的参数转换规则,导致API无法正确识别日期筛选条件。

修正后的代码

// 修正无效日期,6月最后一天为30日
$startDate = (new DateTime('2023-03-31 22:00:00'))->format('Y-m-d\TH:i:s.u\Z');
$endDate = (new DateTime('2023-06-30 22:00:00'))->format('Y-m-d\TH:i:s.u\Z');

$params = [
    'created_at' => [
        'between' => [$startDate, $endDate]
    ],
    'limit' => 500,
    'status' => 'paid'
];

$payouts = $client->payouts()->list($params)->records;

关键修正说明

  • 修复无效日期:将2023-06-31改为2023-06-30,确保DateTime生成正确的目标日期。
  • 使用嵌套数组参数:GoCardless Pro PHP客户端会自动将嵌套数组转换为API要求的URL参数格式(即created_at=between&created_at_gte=xxx&created_at_lte=xxx),和你在管理后台看到的有效参数格式一致。
  • 保持日期格式正确性:继续使用Y-m-d\TH:i:s.u\Z格式生成符合ISO 8601标准的带时区标识的日期字符串,确保API能正确解析。

备选参数写法(若嵌套数组不生效)

如果上述嵌套数组写法有问题,也可以直接使用和后台一致的扁平参数名(注意不要加多余下划线):

$params = [
    'created_at' => 'between',
    'created_at[gte]' => '2023-03-31T22:00:00.000Z',
    'created_at[lte]' => '2023-06-30T22:00:00.000Z',
    'limit' => 500,
    'status' => 'paid'
];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:27:32