使用cURL和PHP调用Stripe API按创建日期查询支付/订阅报错
问题根因
你遇到的报错核心原因有两点:
- 调用的API端点不存在:Stripe v1接口没有
/v1/payments这个路径,你需要根据要查询的资源类型选择对应正确的接口路径:- 查支付交易记录:
https://api.stripe.com/v1/charges - 查支付意向对象:
https://api.stripe.com/v1/payment_intents - 查订阅数据:
https://api.stripe.com/v1/subscriptions
- 查支付交易记录:
- 请求头配置多余:你当前使用GET请求传递查询参数,不需要额外设置
Content-type: application/json和Content-length: 0头,多余配置可能导致接口解析异常。
你代码里created[gte]的参数写法本身符合Stripe的筛选规则,没有问题。
修复后的PHP代码示例
以下是查询支付交易记录的示例代码:
// 替换为对应资源的正确端点,这里以查询支付交易为例 $endpoint = "https://api.stripe.com/v1/charges"; $params = array( 'limit' => '100', 'created[gte]' => '1627831313' ); $url = $endpoint . '?' . http_build_query($params); $ch = curl_init(); $headr = array(); // 仅保留鉴权头即可,其余请求头curl会自动适配 $headr[] = 'Authorization: Bearer [替换为你的Stripe密钥]'; curl_setopt($ch, CURLOPT_HTTPHEADER,$headr); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); $result = curl_exec($ch); curl_close($ch);
如果需要查询订阅数据,只需将$endpoint的值替换为订阅接口路径即可,筛选参数规则通用。
内容的提问来源于stack exchange,提问作者Nars Krishnamachari
相关产品推荐
相关产品推荐

