0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

StripeでJPY以外の決済通貨を指定する際の注意点

Last updated at Posted at 2021-10-28

##前置き
普段JPYしか使っていないと「…ん?」となる部分があったため書き残します。

##やりたかったこと
$50(USD)で決済させたい。

##起きた問題

###こうしたら

<form action="" method="POST">
  <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="key"
    data-name="hoge"
    data-amount=50
    data-currency="USD">
  </script>
</form>

###こうなった
image.png
$0.50 になっとる。。。。。

data-currencyでUSDを指定したところ、金額がamountで指定した数値の1/100になってしまいました。

##原因
amountで指定した数値は、currencyで指定した通貨の最小単位(USDの場合はセント)の金額として適用されるようです。
これまでJPYしか使ってこなかったため、この仕様に気が付きませんでした。

API リクエストはすべて、金額が通貨の最小単位で指定されると想定しています。たとえば、10 USD を請求するには、amount の値を 1000 (1000 セント) で指定します。
小数点以下のない通貨の場合は、100 を掛けずに整数として金額を指定します。たとえば、500 円を請求するには、amount の値を 500 で指定します。
小数点以下のない通貨:
BIF, CLP, DJF, GNF, JPY, KMF, KRW, MGA, PYG, RWF, UGX, VND, VUV, XAF, XOF, XPF

##対処法
amountを通貨の最小単位に揃えましょう。

<form action="" method="POST">
  <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="key"
    data-name="hoge"
    data-amount=5000
    data-currency="USD">
  </script>
</form>
$stripe->charges->create([
    'amount' => 5000,
    'currency' => 'USD',
    'source' => $token,
    'description' => 'description',
]);

###結果
image.png
決済金額が $50.00 になりました🎉🎉

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?