使用Angular HTTP Post实现Stripe Connect身份验证及文件上传问题
转换Stripe文件上传Curl请求到Angular ng-file-upload实现
没问题,我帮你把这个Stripe的curl请求转成用ng-file-upload实现的Angular代码,刚好之前处理过类似的场景,咱们一步步来对应:
首先拆解原curl里的核心配置,对应到ng-file-upload的参数:
- 请求目标URL:
https://files.stripe.com/v1/files - Basic认证:用平台密钥作为用户名,密码留空
- 自定义请求头:
Stripe-Account指定关联的Stripe账户ID - 表单数据:包含
purpose标识和要上传的文件
下面是直接可用的代码实现:
// 假设你已经通过ng-file-upload的指令(比如ngf-select)拿到了用户选择的文件对象$scope.selectedFile const PLATFORM_SECRET_KEY = '你的平台密钥'; const CONNECTED_STRIPE_ACCOUNT_ID = '关联的Stripe账户ID'; Upload.upload({ url: 'https://files.stripe.com/v1/files', method: 'POST', // 设置Basic Auth头:把平台密钥转成Base64格式,密码部分留空 headers: { 'Authorization': 'Basic ' + btoa(PLATFORM_SECRET_KEY + ':'), 'Stripe-Account': CONNECTED_STRIPE_ACCOUNT_ID }, // 表单数据:purpose字段和用户选择的文件 data: { purpose: 'identity_document', file: $scope.selectedFile } }).then(function (resp) { console.log('文件上传成功', resp.data); // 这里可以处理上传后的逻辑,比如保存Stripe返回的文件ID }, function (resp) { console.error('文件上传失败', resp.status, resp.data); // 处理错误场景,比如格式不支持、权限问题等 }, function (evt) { // 上传进度回调,可选 var progressPercentage = parseInt(100.0 * evt.loaded / evt.total); console.log('上传进度: ' + progressPercentage + '% ' + evt.config.data.file.name); });
关键提醒
- 安全警告:直接在前端代码里暴露Stripe平台密钥风险极高,很容易被恶意用户窃取滥用。强烈建议你搭建一个后端中转接口,前端把文件和参数传给后端,再由后端用密钥调用Stripe API。
- 文件合规性:确保上传的文件符合Stripe要求(支持JPG/PNG/PDF等格式,文件大小也有限制)
- 错误处理:记得覆盖网络异常、Stripe返回的验证错误等场景,给用户友好的提示
内容的提问来源于stack exchange,提问作者Q. Bert
相关产品推荐
相关产品推荐

