我正在与条纹支付网关和一切工作到目前为止,例外的选择,我的用户可以下载他们的发票在我的网站。可以在stripe Jmeter 板中下载发票,但这不是我需要的。我的用户付款后,应该可以在我的系统下载他们的发票。
目前我正在使用stripe webhooks。用户付款,数据保存在我的数据库中。我的代码是这样的:
\Stripe\Stripe::setApiKey("$stripe_secret_key_test");
// Retrieve the request's body and parse it as JSON:
$input = @file_get_contents('php://input');
$event_json = json_decode($input);
// Update database with new billing entry
if ($event_json->type == 'invoice.payment_succeeded') {
$invoice_id = $event_json->data->object->id;
$customer = $event_json->data->object->customer;
$date = $event_json->data->object->date;
$price = $event_json->data->object->amount_paid;
$user = $event_json->data->object->lines->data[0]->metadata->userid;
$stripe_sub_id = $event_json->data->object->lines->data[0]->id;
$plan_id = $event_json->data->object->lines->data[0]->plan->id;
$stamp_created = $event_json->data->object->lines->data[0]->plan->created;
$comments = $event_json->data->object->lines->data[0]->plan->nickname;
$period_start = $event_json->data->object->lines->data[0]->period->start;
$period_end = $event_json->data->object->lines->data[0]->period->end;
$content=array("invoice"=>$invoice_id,
"user"=>$user,
"stripe_cust_id"=>$customer,
"stripe_sub_id"=>$stripe_sub_id,
"idea_id"=>0,
"billing_date"=>$date,
"plan"=>$plan_id,
"price"=>$price,
"stamp_created"=>$stamp_created,
"period_start"=>$period_start,
"period_end"=>$period_end,
"status"=>'paid',
"printed"=>0);
insertGWInfo('billing',$content);
$content=array("user"=>$user,
"trans_time"=>date("Y-m-d H:i:s"),
"ip"=>$_SERVER['REMOTE_ADDR'],
"trans_type"=>1,
"cash_amount"=>$price,
"comments"=>"Subscription for ".$comments."",
"idea_id"=>0);
insertGWInfo('user_accounting',$content);
}
现在我´我创建了一个表,从数据库中获取这些条目并将其显示给客户。我想有一个按钮,现在与“下载发票”,我的客户可以下载订阅发票,每月出现。
你知道我怎么做吗?我有发票id,但从哪里可以获得下载发票的url?我没有´在条纹文件里找不到任何东西。任何帮助都将不胜感激。
编辑:以下是invoice.payment\u succeeded的json结果:
"{
"created": 1326853478,
"livemode": false,
"id": "evt_00000000000000",
"type": "invoice.payment_succeeded",
"object": "event",
"request": null,
"pending_webhooks": 1,
"api_version": "2018-02-28",
"data": {
"object": {
"id": "in_00000000000000",
"object": "invoice",
"amount_due": 1000,
"amount_paid": 1000,
"amount_remaining": 0,
"application_fee": null,
"attempt_count": 1,
"attempted": true,
"billing": "charge_automatically",
"charge": "_00000000000000",
"closed": true,
"currency": "eur",
"customer": "cus_00000000000000",
"date": 1526455801,
"description": null,
"discount": null,
"due_date": null,
"ending_balance": 0,
"forgiven": false,
"lines": {
"data": [
{
"id": "sub_Cs4DUPJKcAJ7cg",
"object": "line_item",
"amount": 1000,
"currency": "eur",
"description": "1 standard-inv × Standard Investor (at €10.00 / month)",
"discountable": true,
"livemode": false,
"metadata": {
},
"period": {
"end": 1531726201,
"start": 1529134201
},
"plan": {
"id": "3",
"object": "plan",
"aggregate_usage": null,
"amount": 1000,
"billing_scheme": "per_unit",
"created": 1526375755,
"currency": "eur",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {
},
"nickname": "Standard Plan for Investors",
"product": "prod_CrihTVfgRHgImD",
"tiers": null,
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"proration": false,
"quantity": 1,
"subscription": null,
"subscription_item": "si_Cs4DrvYN2FlCbS",
"type": "subscription"
}
],
"has_more": false,
"object": "list",
"url": "/v1/invoices/in_1CSK5FDsOByhb3e8m8Z1BooY/lines"
},
"livemode": false,
"metadata": {
},
"next_payment_attempt": null,
"number": "774C629-0001",
"paid": true,
"period_end": 1526455801,
"period_start": 1526455801,
"receipt_number": null,
"starting_balance": 0,
"statement_descriptor": null,
"subscription": "sub_00000000000000",
"subtotal": 1000,
"tax": null,
"tax_percent": null,
"total": 1000,
"webhooks_delivered_at": 1526455810
}
}
}"
3条答案
按热度按时间pb3skfrl1#
它是可能的:)就像一个魅力与pythonapi。
nimxete22#
stripe现在确实支持这一点。pdf链接可通过api列出发票并访问
invoice_pdf
发票的属性。以下是如何通过pdf链接获取发票数组:
以下是api文档:https://stripe.com/docs/api/invoices/object#invoice_object-谢谢@avelis的建议。
watbbzwu3#
stripe目前不支持通过api以pdf格式下载发票,它仅在 Jmeter 板中可用。
目前,最好的解决方案是构建自己的发票收据/pdf。您可以通过api检索invoice对象,它告诉您发票的用途:期间、金额、付款时间、发票中的内容等,然后您可以为您的客户生成自己的收据。