Stripe POST操作的正文格式

时间:2013-12-27 22:59:44

标签: stripe-payments

我正在使用REST API(不使用库)直接访问条带API,但令人惊讶的是,我找不到关于相应的主体格式发布数据的文档。

Stripe是否期望JSON或表单编码对?

4 个答案:

答案 0 :(得分:4)

您需要发布键值对等原始数据。 (没有Json)

e.g。 键1 =值&安培;键2 =值

确保在标题中包含以下内容 Content-Type = application / x-www-form-urlencoded

答案 1 :(得分:2)

这是nodejs的curl代码示例 我正在研究类似的问题

如您所知,我们无法为“ post”方法发送JSON 它必须经过URL编码

这是条纹提供的示例 https://stripe.com/docs/api/checkout/sessions/create

curl https://api.stripe.com/v1/checkout/sessions \
>   -u stripe_key_here: \
>   -d success_url="https://example.com/success" \
>   -d cancel_url="https://example.com/cancel" \
>   -d "payment_method_types[]=card" \
>   -d "line_items[][name]=T-shirt" \
>   -d "line_items[][description]=Comfortable cotton t-shirt" \
>   -d "line_items[][amount]=1500" \
>   -d "line_items[][currency]=usd" \
>   -d "line_items[][quantity]=2"

-u表示我们在标题中提供的授权
-d表示网址的正文

节点js中的示例代码


const fetch = require("node-fetch");
let keybase64 = Buffer.from(stripe_key_here).toString("base64");

async function getCheckoutID() {
  let endpoint = "https://api.stripe.com/v1/checkout/sessions";

  const query = objToURL({
    success_url: "https://example.com/success",
    cancel_url: "https://example.com/cancel",
    "payment_method_types[]": "card",
    "line_items[][name]": "T-shirt",
    "line_items[][description]": "Comfortable cotton t-shirt",
    "line_items[][amount]": 1500,
    "line_items[][quantity]": 1,
    "line_items[][currency]": "usd"
  });
  // enpoint => "https://www.domin.com/api"
  // query => "key=value&key1=value1"
  let URL = endpoint + "?" + query;

  data = await getJSON(URL, {
    method: "post",
    headers: {
      "Authorization": `Basic ${keybase64}:`,
      "Content-Type": "application/x-www-form-urlencoded"
    }
  });

  console.log("final data  : " , data);
}


// hepler functions

// instead of using fetch
// getJSON will make it readable code
async function getJSON(url, options) {
  let http = await fetch(url, options);
  if (!http.ok) {
    console.log(http);
    return "ERROR STATUS IS NOT OK";
  }
  return await http.json();
}

// convert JS object to url query
// {key:"value" , key1: "value1"} to "key=value&key1=value1"
function objToURL(obj) {
  return Object.keys(obj)
    .map(function(k) {
      return k + "=" + obj[k];
    })
    .join("&");
}

答案 2 :(得分:1)

以下是使用测试卡的cURL充电示例:

curl https://api.stripe.com/v1/charges -u your_test_key: -d card[number]=4000056655665556 -d card[exp_month]=11 -d card[exp_year]=2020 -d amount=100 -d currency=eur -d description="Stripe cUrl charge test"

使用条带测试密钥交换 your_test_key 。 请记住保留:在您的密钥后不要求密码。

答案 3 :(得分:0)

表格编码对

docs for cURL提供了很好的例子。它们只是通过命令行上的cURL通过-d开关提供编码的键/值对。只需确保使用测试密钥,这样就不会搞砸任何实时数据。然后你可以玩你想要的一切。

返回的数据为JSON