Techioz Blog

const を使用して接続されているアカウントの Stripe_account_id を追加すると CORS エラーが発生する

概要

Stripe 支払いリクエスト ボタンを設定しました。ストライプ アカウント「acct_XXX…」を手動で追加すると、すべてが機能し、接続されているアカウントのダッシュボード上で支払いが成功します。

しかし、これをpayment_request_buttons.jsのconstに入れようとすると、次のようになります。

const stripe_account_id = document.getElementById('stripe_account_id').value;

const stripe = Stripe('pk_test_XXX...'), {
  apiVersion: "2022-11-15",
  stripeAccount: stripe_account_id,
});

隠された入力:

<input id="stripe_account_id" type="hidden" value="<%= "'#{@user.stripe_account_id}'" %>"> 

次の CORS エラーが発生します。

No 'Access-Control-Allow-Origin' header is present

const を使用する場合と比べて、手動でアカウントを入力する場合の違いがわかりません。

コンソールのストライプリンクからこのエラーに遭遇しました。

{
"error": {
"message": "You did not provide an API key. You need to 
provide your API key in the Authorization header, using 
Bearer auth (e.g. 'Authorization: Bearer YOUR_SECRET_KEY'). 
See https://stripe.com/docs/api#authentication for details, 
or we can help at https://support.stripe.com/.",
"type": "invalid_request_error"
 }
}

解決策

このエラーは解決しました。

ストライプ アカウントを手動で渡す場合は、中にアカウント番号を含むアポストロフィ「 」を使用しますが、ストライプへの投稿データを見ると、それらが削除されていることがわかります。

_stripe_account: acct_xxx........... 

したがって、私のRubyコードでは、値にアポストロフィを追加していました。結果は次のとおりです。

value="<%= "'#{@user.stripe_account_id}'" %>">

_stripe_account: 'acct_xxx...........' 

送信されるとエラーが発生します。

アポストロフィを除いた私の更新された Ruby コード:

value="<%= @user.stripe_account_id %>">

このデータは、「ネットワーク」>「wallet-config」>「ペイロード」>「フォームデータ」で見つかりました。

これで CORS エラーが解決され、機能するようになりました。