Stripe API 更新订阅发票草稿 (PHP)

Stripe API Update DRAFT invoice for subscription (PHP)

我正在使用 PHP 并使用 invoice.created 生成了一个 webhook。创建发票后,Stripe 让发票草稿在那里放置大约一个小时,这让我们有时间编辑或调整发票。我利用这段时间检查数据库(通过 webhook),看看这个人在系统中有多少转介来相应地调整优惠券。我似乎无法正确调整发票,因为我尝试过的所有方法都出现错误,这些方法是:

$inv = {发票 ID,我没有从发票 ID 错误中得到任何错误

define('STRIPE_API_KEY', 'sk_test_******************'); 

$stripe = new \Stripe\StripeClient(
    STRIPE_API_KEY
);

$stripe->invoices->update(
    $inv,
    ['discounts.coupon' => '20OFF']
);
 

错误是未知对象discounts.coupon

$stripe->invoices->update(
    $inv,
    ['discount' => '20OFF']
);

Error = Fatal error: Uncaught (Status 400) (Request req_hsX1QTOxzWMiQn) Received unknown parameter: discount. Did you mean discounts? thrown in /home/searchoscn/public_html/vendor/stripe/stripe-php/lib/Exception/ApiErrorException.php on line 38

$stripe->invoices->update(
    $inv,
    ['coupon' => '20OFF']
);

ERROR = Fatal error: Uncaught (Status 400) (Request req_yEwwOLoukR6j6Z) Received unknown parameter: coupon thrown in /home/searchoscn/public_html/vendor/stripe/stripe-php/lib/Exception/ApiErrorException.php on line 38

$stripe->invoices->update(
    $inv,
    ['discounts' => ['coupon' => '20OFF']]
);

Fatal error: Uncaught (Status 400) (Request req_IDRP1Rjv1YoBZR) Invalid array thrown in /home/searchoscn/public_html/vendor/stripe/stripe-php/lib/Exception/ApiErrorException.php on line 38

我很确定我需要使用 'discounts' 但不知道如何构建数组以正确传递优惠券。

正在尝试预测一些问题或评论:

是的,我有一张 ID 为 20OFF 的现有优惠券。这是 20% 的折扣

$inv 在发送 webhook 时确实获取了正确的发票 ID。

这是我一直在阅读的the link of the API documentation,但不是很有用。

而不是:

$stripe->invoices->update(
    $inv,
    ['discounts.coupon' => '20OFF']
);

尝试:

$stripe->invoices->update(
    $inv,
    ['discounts' => ['coupon' => $couponId]]
);

看起来它必须是优惠券的 ID,而不是面向客户的代码,例如20OFF.

您可以从仪表板 (https://dashboard.stripe.com/coupons/) 或通过发出另一个 api 请求来获取优惠券的 ID。

$stripe->invoices->update(
    $inv,
    [
       'discounts' => [
         ['coupon' => '20OFF']
        ]
     ]
); 

例如,它是一个数组,然后包含对象(在 PHP 中,它们都是方括号)并且对象指的是优惠券。