使用CURL实现Stripe Express/Custom入驻时如何传递关联账户ID
解决Stripe独立关联账户入驻传递账户ID的方法
你当前用的是Stripe Connect Express的OAuth授权码入驻流程,仅适配主账户入驻,要给独立关联账户办理入驻并绑定对应ID,按以下两步修改即可:
1. 调整入驻授权链接
在原入驻链接的参数后新增stripe_user_id参数,参数值填写你要绑定的用户独立关联账户ID(acct_开头的Stripe账户标识),修改后的链接格式如下:
https://connect.stripe.com/express/oauth/authorize?redirect_uri=https://你的PHP回调文件地址&client_id=你的Stripe客户端ID&state=自定义校验值&stripe_user_id=目标用户的关联账户ID
提示:state参数建议替换成和当前平台用户绑定的唯一值,后续回调时做校验避免CSRF攻击
2. 修正后端CURL逻辑
你当前的代码存在参数书写错误,同时需要新增关联账户指定的请求头,完整修改后的代码如下:
<?php if (isset($_GET['code'])) { // 授权跳转后拿到授权码 $code = $_GET['code']; // 此处可加state参数校验逻辑,和跳转前生成的state值对比,拦截恶意请求 } else { echo "Error"; exit; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://connect.stripe.com/oauth/token"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 修正原代码多余的=符号,替换STRIPE_SECRET_KEY为你的实际密钥 $postFields = "client_secret=STRIPE_SECRET_KEY&code=".$code."&grant_type=authorization_code"; curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); curl_setopt($ch, CURLOPT_POST, 1); $headers = array(); $headers[] = "Content-Type: application/x-www-form-urlencoded"; // 新增关联账户指定头,值为目标用户的acct_开头关联账户ID $headers[] = "Stripe-Account: 目标用户的关联账户ID"; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); // 此处可解析$result,将返回的stripe_user_id和平台用户ID绑定存储,避免关联错误 header('location: https://认证完成后跳转的页面地址'); if (curl_errno($ch)) { // 生产环境建议添加错误日志记录,方便排查问题 error_log(curl_error($ch)); } curl_close ($ch); ?>
补充说明
如果你还没有提前为用户创建关联账户,不需要手动传ID,走完原OAuth流程后,解析返回结果里的stripe_user_id字段,就是Stripe自动为该用户生成的独立关联账户ID,你把这个ID和平台对应用户的账号绑定存储即可,后续所有对该账户的操作都用这个ID调用接口即可。
内容的提问来源于stack exchange,提问作者Justin Crawfish
相关产品推荐
相关产品推荐

