Stripe: Скачать счет на моем сайте - PullRequest
0 голосов
/ 16 мая 2018

Я работаю с Stripe Payment Gateway, и до сих пор все работает, за исключением возможности, что мои пользователи могут загрузить свой счет на моем веб-сайте.Можно загрузить счет-фактуру внутри приборной панели в полоску, но это не то, что мне нужно.После того, как мои пользователи произвели оплату, у меня должна появиться возможность загрузки счета-фактуры в моей системе.

В настоящее время я работаю с полосатыми веб-крючками.Пользователь совершает платеж, и данные сохраняются в моей базе данных.Вот как выглядит мой код:

\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);
}

Теперь я создал таблицу, в которую я извлекаю эти записи из своей базы данных и показываю их моему клиенту.Мне бы хотелось иметь кнопку с надписью «Скачать счет», чтобы мои клиенты могли загружать счет за подписку, который появляется ежемесячно.

Есть идеи, как мне это сделать?У меня есть invoice_id, но где мне взять URL для загрузки счета?Я не смог ничего найти в документах с полосами.Любая помощь будет очень признательна.

РЕДАКТИРОВАТЬ: Вот результат JSON для invoice.payment_suceeded:

"{
  "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
    }
  }
}"

Ответы [ 2 ]

0 голосов
/ 21 июля 2018

Полоса поддерживает это сейчас. Ссылка в формате PDF доступна путем перечисления счетов через API и доступа к атрибуту invoice_pdf счета.

Вот как вы можете получить массив счетов с их PDF-ссылками:

const invoicesResponse = await stripe.invoices.list({ customer: customerStripeId });
const invoices = invoicesResponse.map(invoice => ({
    invoiceId: invoice['id'],
    pdf: invoice['invoice_pdf'],
  }));
return invoices;
0 голосов
/ 16 мая 2018

Stripe не поддерживает загрузку счета-фактуры в формате PDF через API, и вместо этого он доступен только на панели инструментов.

На данный момент лучшее решение - это создать собственную квитанцию ​​счета / pdf. Вы можете получить объект Счет-фактура через API , который сообщает, для чего предназначен счет: период, сумма, когда он был оплачен, что находится в этом счете-фактуре и т. Д. создайте свою квитанцию ​​для своих клиентов на вашем конце.

...