Полосная дифференциация между вычетом платы и назначением подписки в webhook по обвинению.

Я борюсь за это в течение двух дней, я хочу провести различие между назначением подписки и вычетом платы вручную из Stripe. Зарядка websuok вызывается оба раза. В вызове 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 ответ

Решение

После получения charge.succeeded событие, вы можете извлечь объект заряда и проверить заряд 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
    }
}

Обратите внимание, что технически плата может быть связана с накладной, но не с подпиской, если вы создали накладную вручную. Если вам необходимо отличить в этом случае, вам нужно использовать идентификатор счета-фактуры, чтобы получить счет-фактуру, и проверить счет-фактуру subscription атрибут, чтобы увидеть, если это null или нет.

Другие вопросы по тегам