【问题标题】:Does Stripe JS have a call to create a file using Javascript?Stripe JS 是否可以调用使用 Javascript 创建文件?
【发布时间】:2021-10-14 11:59:30
【问题描述】:

查看Stripe API doc 我可以看到可以在 .Net、Node、Java、PHP 等中创建文件,但我想使用 Javascript/Typescript 在客户端创建文件 ID。

问题 - 这可能吗,还是我必须发布到我的服务器才能调用.Net code 来获取文件ID? 我在 Stripe API 或 Stripe JS 的文档中都没有看到它。

我确实看到了Node.js code,我可能会使用它,但我不确定它是什么 “fs”下面的意思。另外,我不确定这是否与 Angular(typescript) 交叉兼容,这是我用来为我的 Connect 帐户创建身份文件(许可证照片、护照照片)的工具。

const Stripe = require('stripe');
const stripe = Stripe('sk_test_something');
var fp = fs.readFileSync('/path/to/a/file.jpg');
var file = await stripe.files.create({
  purpose: 'identity_document',
  file: {
    data: fp,
    name: 'file.jpg',
    type: 'application/octet-stream',
  },
});

【问题讨论】:

    标签: javascript .net typescript stripe-payments


    【解决方案1】:

    文件上传 API 通常使用密钥,您需要从服务器调用它。 “fs”是 Node.js 文件系统 API,您将无法从 Angular 调用它。

    现在使用您的可发布密钥从客户端,您可以实际调用文件上传 API,如文档所述: https://stripe.com/docs/file-upload#using-your-publishable-key 但是您需要直接获取 URL,而不是使用 stripe.js。这是一个例子:

    var pk = "pk_test_xxx"; // Your Publishable key
    
    function init() {
    
      const uploadBtn = document.getElementById('btn-upload');
      uploadBtn.addEventListener('click', function() {
        uploadFile()
      });
    
    }
    
    function uploadFile() {
      console.log('uploadFile!');
      const fileInput = document.querySelector('#input-file-upload');
      const formData = new FormData();
    
      formData.append('file', fileInput.files[0]);
      formData.append('purpose', 'dispute_evidence');
    
      const options = {
        method: 'POST',
        body: formData,
        headers: {
          'Authorization': `Bearer ${pk}`
        }
      };
    
      fetch('https://files.stripe.com/v1/files', options);
    }
    
    document.addEventListener('DOMContentLoaded', init, false);
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    
    <body>
      <main>
        <hr>
        <section>
          <h3>
            File Upload Demo
          </h3>
          <input type="file" id="input-file-upload" name="file" />
          <button id="btn-upload">Upload file</button>
        </section>
      </main>
    </body>
    
    </html>

    【讨论】:

    • 感谢 Orakaro 的帮助。一旦我使用您提供的代码上传文件,有没有办法从 Stripe 获取生成的文件上传 ID?您提供的代码是否返回任何内容?我的目标是获取文件上传 ID,以便在创建帐户令牌时将其添加到客户连接帐户数据的其他部分。
    猜你喜欢
    • 1970-01-01
    • 2019-07-25
    • 2016-09-14
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多