我正在使用REST API(不使用库)直接访问条带API,但令人惊讶的是,我找不到关于相应的主体格式发布数据的文档。
Stripe是否期望JSON或表单编码对?
答案 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
。