下記の構成で
- rails
- stripe
下記をやりたいと考えています。
- ディスティネーション支払いでユーザー1とプラットフォームに支払い
- stripe checkout使用
- 月1の定期支払
コードは下記でcheckout時に定期支払の設定をしようとしています。jsで下記を叩いてjsonを返してもらう形です。
stripe_checkout_session = Stripe::Checkout::Session.create({ payment_method_types: ['card'], line_items: [{ price: data['priceId'], quantity: 1, }], subscription_data: { application_fee_percent: 20, transfer_data: { destination: data['accountId'], }, }, mode: 'subscription', customer: data['customerId'], success_url: request.base_url + '/subscription_done?session_id={CHECKOUT_SESSION_ID}', cancel_url: request.base_url + '/subscription_cancel', },{stripe_account: data['accountId']} ) render :json => stripe_checkout_session
しかし下記のエラーが出てしまいます。
Stripe::InvalidRequestError (No such customer: 'cus_~')
最初customerが共有できていないのかなと思ったのですがstripeにきいたところ、ディスティネーション支払いはプラットフォームなのでcustomerの共有は不要とのことでした。管理画面に上記のcustomerIDはあるのでなぜないと出てしまうのかわからない状態です。
このエラーの対処方法わかる方いるでしょうか?
dataの送り方は下記でviewからjsで送っています。
<script> var stripe = Stripe('pk_test_'); var csrf_token = document.querySelector('meta[name="csrf-token"]').content; var createCheckoutSession = function(priceId,customerId,accountId) { return fetch("/create-checkout-session", { method: "POST", headers: { "Content-Type": "application/json", 'X-CSRF-Token': csrf_token }, body: JSON.stringify({ priceId: priceId, customerId: customerId, accountId: accountId, }) }).then(function(result) { return result.json(); }); }; document .getElementById("checkout") .addEventListener("click", function(evt) { createCheckoutSession("<%= @plan.stripe_price_id %>","<%= current_user.stripe_customer_id %>","<%= @plan_user.stripe_account_id %>").then(function(data) { stripe .redirectToCheckout({ sessionId: data.id }) .then(handleResult); }); }); </script>
dataは下記になります
{ "id": "evt_", "object": "event", "api_version": "", "created": , "data": { "object": { "id": "cs_test_", "object": "checkout.session", "allow_promotion_codes": null, "amount_subtotal": 3000, "amount_total": 3000, "billing_address_collection": null, "cancel_url": "", "client_reference_id": null, "currency": "usd", "customer": "cus_", "customer_details": { "email": "", "tax_exempt": "none", "tax_ids": [ ] }, "customer_email": null, "livemode": false, "locale": null, "metadata": { }, "mode": "payment", "payment_intent": "pi_", "payment_method_options": { }, "payment_method_types": [ "card" ], "payment_status": "paid", "setup_intent": null, "shipping": null, "shipping_address_collection": null, "submit_type": null, "subscription": null, "success_url": "", "total_details": { "amount_discount": 0, "amount_shipping": 0, "amount_tax": 0 } } }, "livemode": false, "pending_webhooks": 3, "request": { "id": null, "idempotency_key": null }, "type": "checkout.session.completed" }
あなたの回答
tips
プレビュー