dav*_*xie 12 php stripe-payments
我Stripe用作支付网关.现在有一个大问题困扰我.
我使用下面的代码创建订阅:
<?php
require_once('lib/Stripe.php');
Stripe::setApiKey(API_KEY);
$token = $_POST['stripeToken'];
$customer = Stripe_Customer::create(array(
"card" => $token,
"plan" => $_POST['plan'],
"email" => "fakeuser@gmail.com",
));
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但我不能Charge ID从$customer,我发现有一个在没有办法Stripe API得到它.
如何在创建订阅时获取它?我真的需要Charge ID.
col*_*inm 21
这正是Stripe的webhooks所针对的.创建初始订阅的客户后,您将收到六个webhook通知:
customer.created,使用客户数据(如果您保存API返回的内容,则已有)charge.succeeded(或charge.failed),其中包含您要查找的初始费用数据invoice.created,这是相关的发票invoice.payment_succeeded(或invoice.payment_failed),也告诉你收费的状态customer.card.created,以及新卡的详细信息customer.subscription.created,以及客户订阅的详细信息.像许多API和许多支付解决方案一样,Stripe的API可以与webhooks一起使用.如果你没有利用webhooks,那么你将失去功能,而且如果没有webhooks,你可能会努力工作.
Stripe可以为您提供数据.如果您正在编写代码来轮询Stripe,那么您的工作方式太难了.
小智 7
我自己也遇到了同样的问题.我正在使用python库,但答案更多的是关于Stripe的API而不是客户端所使用的语言.
最终,由于我正在为每个订阅创建一个新客户,我能够针对customer_id查找发票并获取其费用ID.这是python代码的样子:
stripe_api.Invoice.all(customer=subscribe_result['customer'])['data'][0]['charge']
Run Code Online (Sandbox Code Playgroud)
同样,请注意,如果您重新使用客户,只有在创建每个订阅的情况下创建新客户时,此方法才会起作用.
这当然不理想.如果收费标识包含在回报中会好得多.即使知道发票ID也至少可以解决重新使用客户的问题,尽管它仍然需要不必要的API调用才能获取发票.