一部の変数に基づいてカールを使用してStripeで顧客を作成しようとしていますが、変数にトークンを割り当てるとStripeに存在しないというエラーが発生します。しかし、テキストを直接入力すると機能します。この変数をどのように使用しますか$TOKEN
?私が認識しない値の変更はありますか?
Michael$ curl https://api.stripe.com/v1/customers -u $access_token: -d source=tok_1CjvRiDZ5DqZ0yaUVWXXXXXX
{
"error": {
"code": "token_already_used",
"doc_url": "https://stripe.com/docs/error-codes/token-already-used",
"message": "You cannot use a Stripe token more than once: tok_1CjvRiDZ5DqZ0yaUVWXXXXXX.",
"type": "invalid_request_error"
}
}
Michael$ curl https://api.stripe.com/v1/customers -u $access_token: -d source=$TOKEN
{
"error": {
"code": "resource_missing",
"doc_url": "https://stripe.com/docs/error-codes/resource-missing",
"message": "No such token: \"tok_1CjvRiDZ5DqZ0yaUVWXXXXXX\"",
"param": "source",
"type": "invalid_request_error"
}
}
$TOKEN
このように割り当てる
OUTPUT="$(curl https://api.stripe.com/v1/tokens -u $access_token: -d customer=$external_customer_id)"
TOKEN="$(echo $OUTPUT | jq .id)"
ベストアンサー1
jq
引用された出力を提供し、これはJSONで動作します。
$ echo '{ "foo": "foobar" }' | jq .foo
"foobar"
引用符は最終的に内容の一部になり、TOKEN
変数が展開されても削除されません。 (当時はただの普通のキャラクターでした。)
ただし、特にこの目的のためのオプションがあります。
--raw-output
/-r
:このオプションを使用すると、フィルタ結果が文字列の場合は、引用符付きのJSON文字列形式ではなく標準出力に直接書き込まれます。これは、jqフィルタがJSONベースではなくシステムと通信できるようにするのに役立ちます。
だからTOKEN="$(echo "$OUTPUT" | jq -r .id)"
代わりにそれを使用してください。