charge.ucceeded

时间:2016-12-14 11:05:34

标签: php stripe-payments

我正在努力争取这两天,我想区分订阅分配和手动从Stripe扣除费用。 charge.succeeded webhook被称为两次。在webhook调用中,我需要区分特定金额的订阅分配和费用扣除。

订阅分配正在使用以下代码。

$subscription = \Stripe\Subscription::create(array(
                                                "customer" => $customer_id,
                                                "plan" => $stripe_plan_id,
                                                ));

费用扣除使用以下代码。

$charge = \Stripe\Charge::create(array(
                                                'amount' => $price ,
                                                'currency' => 'usd',
                                                'customer' =>  $customer_id
                                                    )
                                    );

如果有人有任何想法请建议方式。谢谢!!

1 个答案:

答案 0 :(得分:1)

收到charge.succeeded事件后,您可以提取charge object并检查费用的invoice属性:

// Retrieve the request's body and parse it as JSON
$input = @file_get_contents("php://input");
$event_json = json_decode($input);

if ($event_json->type == "charge.succeeded") {
    $charge = $event_json->data->object;

    if ($charge->invoice == null) {
        // One-off charge
    } else {
        // Subscription charge
    }
}

请注意,从技术上讲,如果您手动created an invoice,则可以将费用与发票相关联,但不能与订阅相关联。如果您需要在这种情况下进行区分,则需要将发票的ID用于retrieve the invoice,并检查发票的subscription属性,看看它是否为null