我正在努力争取这两天,我想区分订阅分配和手动从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
)
);
如果有人有任何想法请建议方式。谢谢!!
答案 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
。