Полосная дифференциация между вычетом платы и назначением подписки в 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
или нет.