标签: stripe-payments

条带计费:未选择计划且在注册时未输入信用卡的试用

我读过这篇文章Stripe - 如何处理订阅免费计划,并且在注册时不需要信用卡,并且发现它非常有帮助,但我仍然有一个问题.

我的应用程序有两个付费计划:'基本'和'专家'.注册用户选择计划,也不输入卡详细信息.基本上,用户在前14天使用通用试用计划,在此试用期结束后,用户必须选择付费计划并输入卡详细信息.

处理此试验的最佳方法是什么?我在想这些方法:

a)由于我不知道用户在试用期满后将选择哪种付费方案,我无法使用Stripe试用期功能.

来自Stripe Docs:创建计划时,您可以设置的其中一个选项是试用期将持续多长时间.如果您确实选择提供试用期,则在试用期结束之前,您注册的客户将不会首次收费.

我想创建一个名为'trial'的条纹计划,金额设置为0.00美元,试用期为14天,间隔为2周.通过这种方式,我将能够收听Stripe webhook customer.subscription.updated以确定试用版是否已过期并相应地更新数据库.我不确定这是否是一个好方法,因为它将为此试用计划生成发票(它被设置为订阅).我喜欢Stripe webhooks.有没有更好的方法呢?

b)另一种选择是只在Stripe中有付费计划并在试用期到期时创建Stripe订阅并且用户必须选择计划并输入卡详细信息.这样我就不会使用Stripe检查试用版是否过期.我将检查用户登录以确定试用版是否仍处于活动状态.

谢谢你的帮助!

payment-gateway webhooks payment-processing stripe-payments

14
推荐指数
1
解决办法
5358
查看次数

服务器未被控制器捕获的异常抛出

在我的Grails服务中,我有如下代码:

def createCharge(chargeParams) {
  try {
    def charge = Charge.create(chargeParams)
  } catch (CardException e) {
    throw e
  }
}
Run Code Online (Sandbox Code Playgroud)

从我的控制器我执行以下操作:

try  {
   service.createCharge(chargeParams)
} catch(CardException e) {

}
Run Code Online (Sandbox Code Playgroud)

但是,我的控制器没有捕获重新抛出的CardException.如果我通过以下方法在RuntimeException中包装CardException:

throw new RuntimeException(e)
Run Code Online (Sandbox Code Playgroud)

和/或从catch中删除签名只是捕获(e)而不键入它,它可以工作,但是我从异常中丢失了一些信息,比如消息.

作为注释,CardException是一个Exception,而不是RuntimeException.我不确定这是否重要.

grails exception stripe-payments

13
推荐指数
2
解决办法
4109
查看次数

如果API调用失败,如何进行事务回滚,反之亦然?

我想要的两件事:

a)我希望只有在API调用成功时才能在db中保存记录

b)我只想在db记录成功保存的情况下执行API调用

目标是使本地(在DB中)存储的数据与Stripe上的数据保持一致.

@payment = Payment.new(...)

begin
  Payment.transaction do
    @payment.save!

    stripe_customer = Stripe::Customer.retrieve(manager.customer_id)

    charge = Stripe::Charge.create(
      amount:   @plan.amount_in_cents,
      currency: 'usd',
      customer: stripe_customer.id
    )
  end
# https://stripe.com/docs/api#errors
rescue Stripe::CardError, Stripe::InvalidRequestError, Stripe::APIError => error
  @payment.errors.add :base, 'There was a problem processing your credit card. Please try again.'
  render :new
rescue => error
  render :new
else
  redirect_to dashboard_root_path, notice: 'Thank you. Your payment is being processed.'
end
Run Code Online (Sandbox Code Playgroud)

以上内容将起作用,因为如果记录(第5行)没有保存,则其余代码不会执行.

但是如果我需要在@paymentAPI调用之后保存的对象,那该怎么办呢,因为我需要@payment使用API​​结果中的值来分配对象.举个例子:

@payment = Payment.new(...)

begin
  Payment.transaction do
    stripe_customer = Stripe::Customer.retrieve(manager.customer_id) …
Run Code Online (Sandbox Code Playgroud)

ruby transactions ruby-on-rails stripe-payments ruby-on-rails-4

13
推荐指数
1
解决办法
2569
查看次数

rails 4 - stripe_event函数

我使用的是磁条支付服务,与stripestripe_event宝石.到目前为止一切都很好 - 他们工作得很好

我想使用stripe_eventwebhooks监听器来执行一系列操作.例如,当Stripe发送webhook通知应用新订阅时,我想将该订阅添加到subscriptions表中,向新用户发送电子邮件,建议管理员等.

在github上的(非常缺乏的)stripe_event 文档中,他们说要使用该call方法订阅一个对象,并将示例显示为

class CustomerCreated
  def call(event)
    # Event handling
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,它们不显示此代码所在的位置(将放置哪个文件)或如何调用它config/initializers/stripe.rb.

有人能提供一个如何使用这些的明确例子吗?

ruby ruby-on-rails webhooks stripe-payments ruby-on-rails-4

13
推荐指数
1
解决办法
842
查看次数

条纹:HTML Checkout iOS Cordova不会打开

我已经构建了一个使用条纹checkout html表单元素的应用程序.它似乎在Android(cordova)和浏览器上运行良好.

在ios cordova上,弹出窗口暗淡效果发生了5秒,然后恢复正常(没有弹出窗口打开),在safari上,结帐表单在不同的选项卡上打开而不是弹出窗口.

表单也是自定义的,但即使是基本表单也不起作用.

请帮忙!

javascript jquery ios cordova stripe-payments

13
推荐指数
1
解决办法
786
查看次数

条带最大数据长度

我正在使用Stripe的简单'Checkout',是否有详细说明接受和返回的数据的最大长度的规范,例如以下数据:

customer id
description
risk level
address_line1
etc
Run Code Online (Sandbox Code Playgroud)

stripe-payments

13
推荐指数
1
解决办法
2874
查看次数

如何在Stripe中自定义信用卡表单?

我正在使用Stripe配置支付网关,我有一个基本结构,你可以看到你可以在javascript代码中添加样式,但不能构造HTML form以下代码的内容:

$(document).ready(function() {
var stripe = Stripe('pk_test_lf3erqZAzfBDiiNp1wfFkxgv');
var elements = stripe.elements();

var style = {
  base: {
    color: '#303238',
    fontSize: '16px',
    fontFamily: '"Open Sans", sans-serif',
    fontSmoothing: 'antialiased',
    '::placeholder': {
      color: '#CFD7DF',
    },
  },
  invalid: {
    color: '#e5424d',
    ':focus': {
      color: '#303238',
    },
  },
};
var card = elements.create('card', {style: style});
card.mount('#card-element');

});
Run Code Online (Sandbox Code Playgroud)
<script src="https://code.jquery.com/jquery-2.0.2.min.js"></script>
<script src="https://js.stripe.com/v3/"></script>
<form action="charge.php" method="post" id="payment-form">
  <div class="form-row">
    <label for="card-element">
      Credit or debit card
    </label>
    <div id="card-element">
      <!-- a …
Run Code Online (Sandbox Code Playgroud)

stripe-payments

13
推荐指数
1
解决办法
7703
查看次数

尽管没有任何错误或异常,为什么 Stripe Google Pay 按钮没有在 UI 上为我呈现?

我已使用https://stripe.com/docs/stripe-js/elements/ payment-request-button 上的 stripe 文档中的 Stripe Payment Request Button HTML 代码将 Google Pay 按钮合并到我的 UI 上,但 stripe 组件未在 UI 上呈现。

我使用的是 Windows 10 计算机,并通过 https 服务器为我的应用程序提供服务,我从 Stripe Docs 获取的 HTML 代码在开发人员控制台上没有显示任何错误或异常,iframe 组件可以在“元素”选项卡上看到,但是该按钮未在 UI 上呈现。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Google Pay Payment</title>


</head>
<body>
<h1>This is a sample payment page using Stripe</h1>


    <label for="card-element">
      Credit or debit card
    </label>
    <form action="{{ url_for('pay')}}" method="post" id="payment-form">
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <div id="payment-request-button">
      <!-- A Stripe Element will be inserted here. …
Run Code Online (Sandbox Code Playgroud)

stripe-payments google-pay

13
推荐指数
2
解决办法
2万
查看次数

使用发票描述更新和发票条带订阅数量 laravel 收银员

再会,

我正在做一个涉及 laravel 收银员的项目。我想让用户能够更新他们的订阅数量并立即收费(我已经能够实现,使用下面的代码)

$user = Auth::user()
$user->subscription('main')->incrementAndInvoice(10000);
Run Code Online (Sandbox Code Playgroud)

与预期的一样,返回的发票不包含指示更改的描述,而是发票描述为空白。但是当我检查条纹上的事件数据时,有两个描述[见下图]

第一个描述,即用户当前/未使用的数量 在此处输入图片说明

上图显示了当前订阅数量为 5000 件但增加到 15000 件的订阅计划的用户。有没有办法在生成的发票中包含这些描述。

在我检查了incrementAndInvoice()方法之后,它只接受两个参数(1.count, 2.Plan),如下所示;

在此处输入图片说明

没有像我们对charge()方法那样包含描述的选项。有什么解决方法吗?任何正确方向的想法或指示将不胜感激。

提前感谢您的帮助。

php laravel stripe-payments laravel-cashier

13
推荐指数
1
解决办法
803
查看次数

Stripe 订阅事件 webhook 不清楚

假设我让客户订阅一项服务,我认为有两个事件我需要了解:

  1. 这次冲锋无论成功还是失败,我都可以祝贺他的加入。
  2. 每次下一次收费(每月)成功或失败。

Stripe 的事件太多,很难知道该听哪一个:

invoice.paid- “每当发票付款尝试成功时就会发生”

charge.succeeded- “在创建新费用时发生”(那么有什么区别??)

invoice.payment_succeeded- “每当发票付款尝试成功时就会发生。”

customer.subscription.created- “每当客户注册新计划时就会发生。”

现在我知道单个 API 调用可能会发生一些事件,但是,

What should a developer listen to in order to know that his user successfully subscribed, or failed ? 与有何invoice.paid不同charge.succeeded?与invoice.payment_succeeded那些有何不同?

太乱了,我只需要得到一个是或否。我阅读了 API https://stripe.com/docs/api/events/types

stripe-payments

13
推荐指数
1
解决办法
2228
查看次数