【问题标题】:How to create a new source and set as default source on Stripe API如何在 Stripe API 上创建新源并设置为默认源
【发布时间】:2018-06-25 07:28:42
【问题描述】:

我正在寻找一种方法来为客户创建新来源,然后将该来源设置为客户的默认来源。我目前面临的问题是,创建源的响应并没有给我一种简单的方法来识别新创建的源的 id,以便我可以将该源设置为默认值。

以下是我的代码,没有任何 API 密钥和客户 ID:

           \Stripe\Stripe::setApiKey($stripe_api_key);

            $customer = \Stripe\Customer::retrieve($_SESSION['parent']['stripe_customer_id']);

            $customer->sources->create(array('source' => array("object" => "card", 'exp_month' => $expire_month, 'exp_year' => $expire_year, 'number' => $card_number, 'address_line1' => $billing_address1, 'address_line2' => $billing_address2, 'address_city' => $billing_city, 'address_zip' => $billing_postal_code, 'address_country' => $billing_country, 'currency' => 'GBP', 'cvc' => $security_code, 'name' => $_SESSION['parent']['firstname'] . ' ' . $_SESSION['parent']['lastname'])))->__toArray(true);

            //set as default
            if (isset($_POST['check_default_source'])) {
                $customer->default_source=$customer['id'];
                $customer->save();    
            }

【问题讨论】:

  • 在倒数第二个语句中,客户 ID 应替换为源 ID,就像我说的 Stripe 发回所有源,我不知道如何获取刚刚发送的源的 ID已创建。
  • 我在想我可以在元数据属性中添加一些东西,而不是在响应中引用它。有没有更简单的方法?
  • 现在正在为同样的事情而苦苦挣扎,并使用旧的 API/PHP 库......不想为了解决这个问题而更新我所有的东西

标签: php api stripe-payments


【解决方案1】:

我也有这个问题,略有不同。

我从 token_id 添加了一个新来源。

getLastResponse 方法在我的 API 或库版本中不可用。

但是使用令牌对象 (Stripe::Token::retreive(token_id)),您实际上可以检索 card_id,并使用它来更新 default_source。

我花了很长时间才弄明白,所以我把它贴在这里。也许它可以帮助将来的某人...

【讨论】:

    【解决方案2】:

    我能够找到我的问题的解决方案。 Stripe API 确实会发回刚刚创建的源的 ID 并获取 ID,我使用以下代码:

    $source_id = json_decode($customer->sources->getLastResponse()->body)->id;
    

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 1970-01-01
      • 2013-09-03
      • 2019-11-26
      • 2020-03-27
      • 1970-01-01
      • 2021-02-14
      • 1970-01-01
      • 2022-12-13
      相关资源
      最近更新 更多