如何使用 Stripe 延迟向客户收费,直到实物发货为止?

问题描述 投票:0回答:6

我正在建立一个销售可运输商品的在线市场。该网站将类似于 Etsy,将商家与买家联系起来。

我希望仅在商家发货时才能通过客户的卡收费,以避免退款并提供类似亚马逊的支付体验。如果商家发货缓慢或出现缺货,这也将帮助我们避免退款和付款纠纷。在某些情况下,货物需要7天以上才能定制并发货

这是一个时间线示例:

  • 2014 年 1 月 1 日 - 客户将价值 75 美元的商品添加到购物车并单击“购买”。输入信用卡信息。
  • 2014 年 1 月 1 日 - 客户的卡经过验证,并在其卡上临时扣留 75 美元。订单被发送至商家以供履行。
  • 1/14/2014 - 商家将货物运送给客户并添加运输跟踪信息
  • 2014 年 1 月 14 日 - 客户卡将被收取全额费用,商家将收到 75 美元减去费用。

我计划使用 Stripe Connect 进行付款处理,但不确定如何延迟捕获付款超过 7 天。有什么想法吗?我不想将资金汇总到我自己的账户下并使用支出,因为这可能会违反资金转移法。任何帮助将不胜感激!

编辑:Quora 似乎有一个类似的问题,但答案似乎并不涉及商家发货但付款失败的情况。

e-commerce stripe-payments
6个回答
7
投票

经过进一步研究,似乎没有办法在 7 天授权窗口之后延迟捕获费用。

但这里有一种延迟收费的方法:

  1. 使用 stripe.js 库对信用卡进行标记化
  2. 创建一个新的条带customer传入令牌作为“card”参数

Stripe 常见问题解答的示例:https://support.stripe.com/questions/can-i-save-a-card-and-charge-it-later

请注意,您在对卡进行令牌化和实际收费之间等待的时间越长,您的收费就越有可能因各种原因(卡过期、资金不足、欺诈等)而被拒绝。这也增加了一层复杂性(和销售损失),因为您需要要求买家重新提交付款信息。

我仍然想确认是否可以收取一定金额(例如“预授权”),但这至少可以让我稍后对卡进行收费。


0
投票

Celery 构建了一项服务来帮助您使用 Stripe 完成此操作。 它们非常易于使用,但请注意,每笔交易收取 2% 的费用。


0
投票

实际上您可以保存用户令牌并稍后使用跟踪信息付款

# get the credit card details submitted by the form or app
token = params[:stripeToken]

# create a Customer
customer = Stripe::Customer.create(
  card: token,
  description: 'description for [email protected]',
  email: '[email protected]'
)

# charge the Customer instead of the card
Stripe::Charge.create(
    amount: 1000, # in cents
    currency: 'usd',
    customer: customer.id
)

# save the customer ID in your database so you can use it later
save_stripe_customer_id(user, customer.id)

# later
customer_id = get_stripe_customer_id(user)

Stripe::Charge.create(
    amount: 1500, # $15.00 this time
    currency: 'usd',
    customer: customer_id
)

0
投票

有没有人想出一个解决方案来解决这个问题。我也有类似的目标,Etsy 或 Kickstarter 就是很好的例子。已进行购买/承诺,但在 Etsy 发货/达到 Kickstarter 活动目标之前不会对卡收费。


-2
投票

Stripe 释放延迟方法,无需充电即可保持。 https://stripe.com/docs/ payments/capture-later


-4
投票

<?php

require_once('stripe-php/init.php');
\Stripe\Stripe::setApiKey('your stripe key'); 
$token  = $_POST['stripeToken'];

$stripeinfo = \Stripe\Token::retrieve($token);
 
     $email = $stripeinfo->email;
   
   
   $customer = \Stripe\Customer::create(array(
    "source" => $token,
    "email" => $email)
);

?>

© www.soinside.com 2019 - 2024. All rights reserved.