【问题标题】:Stripe - PaymentIntent is null when I updated subscription with plan zeroStripe - 当我使用零计划更新订阅时,PaymentIntent 为空
【发布时间】:2022-01-18 05:27:09
【问题描述】:

我正在使用条纹元素,当我创建付款意图时,如果有特定价格的计划,它对我有用

但当计划为零 $0 时,它无法识别 payment_intent 或 client_secret

# Here I created an object of type subscription incompletely (@subscription)
# In such a way that the user can enter their credit card and with the help of 
# @subscriptions confirm if everything is fine in checkout.html.erb

def checkout
    @subscription = Stripe::Subscription.create(
      customer: current_user.stripe_customer_id, # stripe customer_id for suscription 
      items: [{
        price: params[:price] # attached price of suscription plans
      }],
      payment_behavior: 'default_incomplete', # PaymentIntent with status=incomplete
      expand: ['latest_invoice.payment_intent'] # return the payment_intent data
    )
end


# checkout.html.erb
<form id="payment-form">
  <div class="form-row">
    <label for="card-element">
      <!-- Debit/credit card -->
    </label>

    <div id="card-element">
      <!-- a Stripe Element will be inserted here -->
    </div>

    <!-- Used to display Elements errors -->
    <div id="card-errors" role="alert"></div>
  </div>

  <button id="submit">Submit Payment</button>
</form>

<script>
   // Initialize stripe elements
   var stripe = Stripe("<%= ENV['STRIPE_PUBLISHABLE_KEY'] %>");
   var elements = stripe.elements();
   var cardElement = elements.create('card');
   cardElement.mount('#card-element');

   var formElement = document.getElementById('payment-form');

   formElement.addEventListener('submit', function(event) {
     event.preventDefault();

  # here I create the payment intention but when the plan has a subscription of $ 0 
  # it 
  # does not recognize me neither the field client_secret nor the payment_intent

  stripe.confirmCardPayment("<%= 
     @subscription.latest_invoice.payment_intent.client_secret %>", {
    payment_method: { card: cardElement }
     }).then(function(result) {
    if (result.error) {
      console.log(result.error.message);
      window.location.reload();
    } else {
      window.location.href = "/" ;
    }
  });
});   

我不知道它是否很好地解释了我,我想要创建一个每月 0 美元的订阅,就像我对其他价格的计划所做的那样

欢迎任何帮助,非常感谢您阅读我的文章

【问题讨论】:

    标签: ruby-on-rails ruby stripe-payments


    【解决方案1】:

    来自Stripe PaymentIntent docs

    最低金额为 0.50 美元或等值的收费货币。

    您可以通过免费试用创建subscriptions,但由于上述付款意图限制,我认为如果计费金额为 0 美元,它将不起作用。

    【讨论】:

    • 太糟糕了,我得另谋出路。非常感谢您的时间和回答:D
    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 2018-09-26
    • 2019-02-28
    • 2021-08-04
    • 2017-08-20
    • 2019-11-20
    • 2016-09-06
    • 1970-01-01
    相关资源
    最近更新 更多