Stripe:无法通过 API 检索默认付款方式

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

使用 Stripe API,我尝试首先通过订阅,然后通过客户资料来检索客户的默认付款方式。像这样:

try {
            $subscription = \Stripe\Subscription::retrieve($subscriptionId);
            $defaultPaymentMethodId = $subscription->default_payment_method;

            if (empty($defaultPaymentMethodId)) {
                $customer = \Stripe\Customer::retrieve($customerId);
                $defaultPaymentMethodId = $customer->invoice_settings->default_payment_method;
            }

            if (!empty($defaultPaymentMethodId)) {
                $paymentMethod = \Stripe\PaymentMethod::retrieve($defaultPaymentMethodId);
                $last4 = $paymentMethod->card->last4;
                $exp_year = $paymentMethod->card->exp_year;
                $exp_month = sprintf("%02d", $paymentMethod->card->exp_month);
                $brand = ucwords($paymentMethod->card->brand);
                $has_payment_method = true; // Set to true if a payment method is found
            } else {
                $last4 = $exp_year = $exp_month = $brand = null; // Set these to null to avoid potential issues
            }
        } catch (Exception $e) {
            logError('Stripe API error trying to get payment method details: ' . $e->getMessage());
        }

在这两种情况下,我都得到“空”结果,尽管我可以在 Stripe 仪表板中看到客户实际上设置了默认付款方式:(我只接受银行卡,因此它必须是卡)

screenshot from the dashboard

我已经尝试过各种故障排除方法。 API对于其他工作来说工作得很好,我可以检索客户的所有其他信息,只是不是默认的付款方式。

还有什么想法我还可以尝试吗?

php stripe-payments
1个回答
0
投票

如果您在仪表板中的付款方式上看到

default
标签,则该付款方式可以存储在两个位置:

所以一定要检查这两个地方。

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