标签: stripe-payments

处理成功的付款处理但数据库更新失败

我正在尝试在我的一个express.js路由中实现条带检出过程.要做到这一点,我有:

  • 官方Node.js Stripe模块
  • 官方客户端Stripe模块
  • 我用json记录器来记录javascript错误,传入请求和来自外部服务(如stripe,mongodb等)的响应...
  • Order使用mongoose定义的模型 - MongoDB ODM

我的步骤如下:

客户:

  1. 提交包含条带支付令牌的订单详细信息

服务器:

  1. 创建未付订单并保存到数据库(order.statuscreated)
  2. 使用条带客户端向用户的信用卡/借记卡收费
  3. 更新订单并保存到数据库(order.statusacceptedfailed取决于Stripe的响应)

问题:如果在步骤2之后付款成功但是在步骤3中更新订单时发生错误(由于数据库服务器错误,中断或类似情况),有哪些适当的方法可以处理此故障情况并可能从中恢复?

javascript payment node.js express stripe-payments

8
推荐指数
1
解决办法
1056
查看次数

如何更改Stripe的API版本以进行测试等

我们正在管理一个使用Stripe的旧Rails应用程序,但我们的Stripe版本比当前API落后26个月.我们希望升级到当前的Stripe API,但由于许多更改会影响我们的系统,因此我们真的想要在更改我们的实时网站使用的实时API之前测试更改.

所以我有两个问题:

1)使用API​​时,我们非常依赖实时和测试模式之间的区别.有没有办法只升级测试模式API(不升级Live),这样我们可以识别并纠正任何破坏而不会实际破坏用户体验?

2)是否可以一次升级API一个版本,而不是一次升级,以使转换对我们来说更易于管理?

ruby-on-rails stripe-payments

8
推荐指数
1
解决办法
2553
查看次数

可以查询Stripe管理帐户的余额吗?

我已经浏览了文档,并且无法找到查询Stripe管理帐户的余额信息的方法.以下是用例:第三方通过启用Stripe Connect的平台设置托管帐户; 在一些顾客购买商品/服务后,我在他们的帐户上创建了一些收费对象(所以他们的余额现在是积极的); 现在他们想要支付但我想在发出转账之前查询他们的余额,以确保他们不会要求比他们的帐户更多.

当然我错过了一些明显的东西.提前致谢.

stripe-payments stripe-connect

8
推荐指数
3
解决办法
3114
查看次数

如果我的服务器无法接收,Stripe API会重试Webhook请求吗?

如果我设置一个Stripe Webhook来发送请求,http://my.website.io但由于某种原因,我的服务器当时关闭或以某种方式无法处理请求,Stripe会重试请求吗?或者我是否需要负责轮询它们以确保我的数据副本是最新的?

我在Stripe的文档中找不到有关重试Webhook请求的任何内容(我可以理解为什么他们不会这样做),但我只是想确保我没有错过它.

提前致谢!

webhooks node.js stripe-payments

8
推荐指数
1
解决办法
2770
查看次数

条纹:允许订阅而无需付款方式

我们使用stripe作为支付网关.

我正在尝试订阅客户的计划.该计划有30天的试用期.因此,我们推迟客户在其个人资料中添加源(付款方式)详细信息.

然而,当我试图订阅它的计划时,条纹正在给我这个消息:

此客户没有附加的付款来源.

有没有办法让客户在试用期内没有付款来源?

stripe-payments

8
推荐指数
3
解决办法
3223
查看次数

如何付款 意图在 Stripe 中向关联账户收费

我想创建一个 Stripe PaymentIntent,直接向关联账户收费

这是我写的

stripe.paymentIntents.create(
  {
    amount: 2000,
    currency: 'gbp',
    payment_method: 'pm_xxxx',
  }, {
    stripe_account: 'acct_1F2xxxxxxxxxx'
  },
  function(err, paymentIntent) {
    // asynchronously called
    // do something here
  }
);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么??

以下代码(没有连接的帐户)工作正常

stripe.paymentIntents.create(
  {
    amount: 2000,
    currency: 'gbp',
    payment_method: 'pm_xxxx',
  },
  function(err, paymentIntent) {
    // asynchronously called
    // do something here
  }
);
Run Code Online (Sandbox Code Playgroud)

我怀疑这是罪魁祸首,因为控制台错误说明了 PaymentMethod ....

编辑:代码是正确的,我发现问题出在 Stripe 上,因为它们需要某种进一步的身份验证。来自条纹文档

如果您选择直接收费,则需要确保已连接的帐户已启用您打算使用的付款方式。直接收费需要在连接的帐户上创建 PaymentMethods....

如果您从服务器创建 PaymentMethods,您可以使用 Stripe-Account 标头和我们支持的任何库来进行身份验证。

我会努力,看看怎么做

node.js stripe-payments

8
推荐指数
1
解决办法
3651
查看次数

出口交易需要客户姓名和地址 - 条纹错误

我正在使用 Stripe SDK 创建客户并使用 API 向客户收费,但出现“致命错误:未捕获(状态 400)(请求 req_ZyqUtykjUcOqrU)”的错误。根据印度法规,出口交易需要客户姓名和地址。更多此处的信息:https : //stripe.com/docs/india-exports 在第 38 行的 /opt/lampp/htdocs/stripe/lib/Exception/ApiErrorException.php 中抛出“

我的代码如下:

\Stripe\Stripe::setApiKey(STRIPE_API_KEY); 


$customer = \Stripe\Customer::create(array( 
        'name' => 'test',
        'description' => 'test description',        
        'email' => $email, 
        'source'  => $token 
));
$orderID = strtoupper(str_replace('.','',uniqid('', true))); 

$charge = \Stripe\Charge::create(array( 
        'customer' => $customer->id, 
        //'source' => 'rtest',
        'amount'   => $itemPrice, 
        'currency' => $currency, 
        'description' => $itemName, 
        'metadata' => array( 
            'order_id' => $orderID 
        ) 
    )); 
Run Code Online (Sandbox Code Playgroud)

php stripe-payments

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

Stripe v3 - SetupIntents 和订阅

我正在尝试使用 SetupIntents 来验证和保存付款方式,然后使用它创建订阅以向客户收取所需金额(立即然后每月)。

这似乎工作正常:

  • 该卡已验证(如果需要,包括 SCA)
  • 付款方式已创建,默认附加到客户并启用以供将来使用,状态为 SUCEEDED。
  • 订阅已创建并使用上述付款方式

问题是,当提供的卡需要安全客户授权 (SCA) 时,Stripe 然后生成相应的发票和付款意图,但后者的状态为“requires_action”,即使正在使用正确的付款方式(为将来使用启用)并且已执行卡验证。

我认为使用 SetupIntents 的全部意义在于事先验证付款方式,然后能够向客户收费。

我的假设是否完全错误,或者这实际上是可能的,我可能只是遗漏了什么?

提前致谢

编辑:这是后端的订阅创建代码:

# Set the default payment method on the customer
      Stripe::Customer.update(
        stripe_customer_id,
        invoice_settings: {
          default_payment_method: @requested_source
        }
      )

subscription = Stripe::Subscription.create({
       "customer" => stripe_customer_id,
       "proration_behavior" => 'create_prorations',
       "items" => [
         [
           "plan" => "#{@stripe_plan_api_id}",
         ],
       ],
       'default_tax_rates' => [
         "#{@stripe_tax_rate_id}",
       ],
       "expand" => ["latest_invoice.payment_intent"]
     });
Run Code Online (Sandbox Code Playgroud)

stripe-payments stripe-subscriptions

8
推荐指数
1
解决办法
1917
查看次数

如何为条带会话结帐设置超时?

客户付款是否有超时,可以更改吗?

让我解释一下我的情况:

我必须在 PHP 预订平台上添加付款。

为确保一个时段不会被多次预约,当用户点击预约按钮时,平台会阻止预约20分钟。如果在此时间之后他还没有完成他的信息填写,他必须重新开始,或者如果他没有完成,则保留被释放。

我应该能够确保付款最长为 5 分钟。这样,我在预订开始后最多 15 分钟后开始付款。

这是我发现不修改整个代码的最简单方法。不幸的是,我在 API 中找不到这个选项。

否则,如果我在付款过程之前永久阻止预订,如果用户没有通过关闭浏览器完成交易,我将无法取消阻止它。

stripe-payments

8
推荐指数
1
解决办法
2696
查看次数

Laravel:无法声明类 App\Models\Customer,因为该名称已被使用

我有点困惑。我在我的用户(实际上是“客户”)模型上有一个简单的方法来返回用户的订阅续订日期:

public function subscriptionRenewalDate() : string
{
    $subscription = $this->subscriptions()->active()->first()->asStripeSubscription();

    return Carbon::createFromTimeStamp($subscription->current_period_end)->format('F jS, Y');
}
Run Code Online (Sandbox Code Playgroud)

我从刀片模板 ( {{ auth()->user()->subscriptionRenewalDate() }})对经过身份验证的用户调用此方法,它在本地工作正常,但是一旦我将其上传到远程登台服务器,它就会失败并显示错误:

无法声明类 App\Models\Customer,因为该名称已被使用

它指向 Customer 模型中的这一行:

class Customer extends Authenticatable
{
Run Code Online (Sandbox Code Playgroud)

奇怪的是,它不仅仅是远程登台服务器,它也是 Travis CI 失败的地方(运行 PHPUnit 测试时——这些相同的测试在本地工作正常)。

显然,这似乎是某种缓存或配置问题,但我无法理解是什么导致了此错误。

它与数据库无关,因为测试使用RefreshDatabase. 如果我删除 ENV 变量 ( CASHIER_MODEL: App\Models\Customer),它会因预期的“找不到模型用户”错误而失败,因此它正确获取了 ENV 变量。我尝试清除我的 Laravel 缓存 ( php artisan optimize:clear) 和composer dump-autoload. 这很令人困惑。

我所知道的是该错误是由asStripeSubscription(). 如果我从方法中删除它,刀片模板加载正常(一切正常)。

需要明确的是,我可以成功(这是本地、远程和 Travis CI):

  • 在 Laravel 中注册
  • 登录 Laravel
  • 重置我的密码
  • 更新我的个人资料
  • 输入付款信息以订阅 Stripe …

php laravel stripe-payments laravel-cashier

8
推荐指数
1
解决办法
1058
查看次数