Stripe에서 JPY 이외의 결제 통화를 지정할 때의 주의점

2084 단어 스트라이프

전치



평소 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>

이렇게 되었다




$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',
]);

결과




결제 금액이 $50.00 되었습니다 🎉🎉

좋은 웹페이지 즐겨찾기