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

curl -u参数含义及Stripe接口中PHP curl_setopt_array实现方法

curl -u参数含义

curl的-u(全称--user)参数用于指定HTTP基本认证的身份凭证,格式为用户名:密码。
Stripe的API认证规则里,只需要将你的密钥作为用户名,密码字段留空即可,所以示例里才会写成sk_test_xxxx:,末尾的冒号就是代表密码为空。

PHP curl_setopt_array的实现方法

你不需要手动计算Base64编码拼接Authorization头,PHP cURL提供了专门的配置项CURLOPT_USERPWD,直接传入凭证字符串即可,cURL会自动生成对应的Basic认证头,比手动写更稳妥,避免密钥更新后还要重新计算编码的问题。

修改后的代码示例:

// 把密钥单独存变量,后续维护更方便
$stripe_secret = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc';

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.stripe.com/v1/payment_methods',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    // 新增这行,就是对应-u参数的功能
    CURLOPT_USERPWD => $stripe_secret . ':',
    CURLOPT_POSTFIELDS => 'type=card&card%5Bnumber%5D=4242424242424242&card%5Bexp_month%5D=10&card%5Bexp_year%5D=2022&card%5Bcvc%5D=314',
    CURLOPT_HTTPHEADER => array(
        // 原来手动写的Authorization头可以删掉了,cURL会自动生成
        'Content-Type: application/x-www-form-urlencoded'
    ),
));

$response = curl_exec($curl);
curl_close($curl);

你原有代码里手动编写的Authorization头本身是正确的,和-u参数的效果完全一致,只是用CURLOPT_USERPWD的方式可维护性更高,不容易出现编码错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:24:10