添加新卡时出现PHP Stripe API错误

时间:2017-02-01 23:28:51

标签: php api stripe-payments

我试图向现有客户添加新卡并收到错误,我不明白为什么会发生这种情况。这是代码示例:

$strp_customer  = \Stripe\Customer::retrieve($customer['stripe_id']);

echo $strp_customer->id;
echo "<br>";
echo $_POST['stripeToken'];
echo "<br>";
echo $strp_customer->default_source;
echo "<br>";
//save card to the customer in stripe
$strp_customer->source->create(array("source" => $_POST['stripeToken']));

echo $strp_customer->default_source;

源创建的行给我“致命错误:在null上调用成员函数create()”

但所有echo都会返回正确的信息。所以客户被检索,stripeToken就在那里。什么可能导致错误?

2 个答案:

答案 0 :(得分:1)

这是一个错字。代码应该是

$strp_customer->sources->create(array("source" => $_POST['stripeToken']));

它是sources而不是source。您还需要确保使用最新版本的PHP库来支持此调用。

这将向客户添加新卡,但不会将其设置为默认来源。您也没有再次检索客户,因此您打印的值与以前相同。

答案 1 :(得分:0)

卡片细节的另一种解决方案。

try {
        $customer = \Stripe\Customer::retrieve('cus_xxxxxxxxxxx');
        $card = $customer->sources->create(
            array(
                "source" => [
                    "object" => "card",
                    "name" => 'card holder name',
                    "number" => 'card number',
                    "cvc" => 'cvc',
                    "exp_month" => 'exp month',// E.g: 01,02...12
                    "exp_year" => 'exp year' // exp year
                ]
            )
        );
        echo ('Your card has been added successfully!');
    } catch (Exception $exception) {
        echo ('Unable to add new card, please enter valid card details.');
    }