当前位置: 首页 > 知识库问答 >
问题:

现有卡的条纹检查

酆乐湛
2023-03-14

当客户提交信用卡时,我希望执行以下序列(使用Stripe API):

  1. 检查用户的元数据中是否有条带客户id
  2. 如果没有,则创建一个新客户,将输入的卡保存给该用户
  3. 如果用户已经有客户id,请检查输入的卡是否已经是其保存的卡之一
  4. 如果是,则对该卡收费
  5. 如果不是,请将新卡添加到客户对象,然后对该卡收费

在我当前的代码中,Stripe在尝试创建费用时返回invalid_request错误。以下是相关代码部分:

//See if our user already has a customer ID, if not create one
$stripeCustID = get_user_meta($current_user->ID, 'stripeCustID', true);
if (!empty($stripeCustID)) {
    $customer = \Stripe\Customer::retrieve($stripeCustID);
} else {
    // Create a Customer:
    $customer = \Stripe\Customer::create(array(
        'email' => $current_user->user_email,
        'source' => $token,
    ));
    $stripeCustID = $customer->id;

    //Add to user's meta
    update_user_meta($current_user->ID, 'stripeCustID', $stripeCustID);
}

//Figure out if the user is using a stored card or a new card by comparing card fingerprints
$tokenData = \Stripe\Token::retrieve($token);
$thisCard = $tokenData['card'];

$custCards = $customer['sources']['data'];
foreach ($custCards as $card) {
    if ($card['fingerprint'] == $thisCard['fingerprint']) {
        $source = $thisCard['id'];
    }
}
//If this card is not an existing one, we'll add it
if ($source == false) {
    $newSource = $customer->sources->create(array('source' => $token));
    $source=$newSource['id'];
}

// Try to authorize the card
$chargeArgs = array(
    'amount' => $cartTotal,
    'currency' => 'usd',
    'description' => 'TPS Space Rental',
    'customer' => $stripeCustID, 
    'source' => $source,
    'capture' => false, //this pre-authorizes the card for 7 days instead of charging it immedietely
    );

try {
    $charge = \Stripe\Charge::create($chargeArgs);

感谢任何帮助。

共有1个答案

能逸清
2023-03-14

问题原来是这一节:

if ($card['fingerprint'] == $thisCard['fingerprint']) {
    $source = $thisCard['id'];
}

如果指纹匹配成功,我需要获取用户元数据中已经存在的卡的ID,而不是输入的匹配卡。所以,这是可行的:

if ($card['fingerprint'] == $thisCard['fingerprint']) {
    $source = $card['id'];
}
 类似资料:
  • 我确信我在这里遗漏了一些显而易见的东西,但我不知道如何针对客户检查现有卡。 我在laravel应用程序中使用stripe connect api代表他人管理付款,基本流程如下: < Li > stripe < code >令牌通过< code>stripe.js创建,并与支付表单一起提交 < li >如果客户存在于本地数据库中,我获取他们的< code>stripe_id,否则使用令牌作为源/卡创

  • 我有一个Squarespace应用程序,可以为客户收取费用,但Squarespare不创建客户对象,它只存储费用。 我的目标:当用户进行购买时,创建一个附加了订阅计划的Customer对象,以便我们可以对卡进行重复收费。 我可以通过条带测试API提取费用列表,并且每个费用都有一个包含卡令牌。因此,根据我的理解,我应该能够创建一个客户并传入源或源ID,它将向该客户添加源。 我的代码如下: 我在条纹沙

  • 我有以下情况: > < li> 用户可以预订房间。 客人有可能在不做账的情况下预订房间。在这种情况下,我在没有客户的情况下创建条纹费用 有可能用户在预订过程中决定创建一个帐户。在本例中,我还创建了一个条带客户。 我所需要的 如果用户决定创建一个帐户: 我想使用信用卡,该信用卡由用户输入并用于创建费用并将信用卡附加到客户,以便用户可以在他的个人资料中看到他的信用卡,并选择/使用它进行将来的预订。 问

  • 我目前正在尝试用服务器端stripe api创建收费。 但是我遇到了一个问题;我用两种方法来进行付款: > 用户可以使用条带元素付款 = 或者,如果用户已经在其帐户上添加了一些卡,他可以在列表中选择其中的一张 我想知道是否有办法生成一个带有卡id和客户id的令牌,以便使用这个令牌来创建收费,而不是使用卡id和客户id来对用户收费。 我已经试过了https://stripe.com/docs/api

  • 我正在用stripe设置定期支付。我正在使用react-stripe-elements来收集卡信息,看起来有两种方法可以保存卡供以后使用:

  • 问题内容: 我希望为元素提供重复的1px宽对角线条纹背景。似乎应该可以做到这一点,但是在Safari中呈现时: 看来浏览器的别名处理不善,导致条带分布不均。关于如何解决此问题或完成我正在寻找的另一种方式的任何想法? 问题答案: 在这里,对难题的解释更为精巧:根据毕达哥拉斯原理(及其三元组),不可能有一个正方形(只是两个直角三角形组成的正方形),其边是整数,对角线的长度为整数。 这是因为1 2 +1