Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rez1coder/bd19136eedc306603a9ba2549d2d7bae to your computer and use it in GitHub Desktop.
Save rez1coder/bd19136eedc306603a9ba2549d2d7bae to your computer and use it in GitHub Desktop.

Revisions

  1. @levelsio levelsio revised this gist Dec 11, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion Better Stripe Invoice Generator by @levelsio
    Original file line number Diff line number Diff line change
    @@ -230,4 +230,4 @@
    <p>
    Questions? Contact Remote OK at <?=$config['fromEmail']?>
    </p>
    </p>
    </div>
  2. @levelsio levelsio revised this gist Dec 11, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion Better Stripe Invoice Generator by @levelsio
    Original file line number Diff line number Diff line change
    @@ -141,7 +141,7 @@
    <?=$invoice['customer_address']['state']?><br/>
    <?=$invoice['customer_address']['city']?><br/>
    <?=$invoice['customer_address']['country']?>
    <p>
    </p>

    <h1>
    US$<?=number_format($invoice['amount_paid']/100,2)?> paid <?=date('F j, Y',$invoice['created'])?>
  3. @levelsio levelsio revised this gist Dec 9, 2020. No changes.
  4. @levelsio levelsio revised this gist Dec 9, 2020. 1 changed file with 6 additions and 0 deletions.
    6 changes: 6 additions & 0 deletions Better Stripe Invoice Generator by @levelsio
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,10 @@
    <?
    # MIT license, do whatever you want with it
    #
    # This is my invoice.php page which I use to make invoices that customers want,
    # with their address on it and which are easily printable. I love Stripe but
    # their invoices and receipts were too wild for my customers on Remote OK
    #

    require_once(__DIR__.'/../vendor/autoload.php');

  5. @levelsio levelsio created this gist Dec 9, 2020.
    227 changes: 227 additions & 0 deletions Better Stripe Invoice Generator by @levelsio
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,227 @@
    <?

    require_once(__DIR__.'/../vendor/autoload.php');

    \Stripe\Stripe::setApiKey(
    $config['stripe']['general']['secret']
    );

    try {
    $invoice=\Stripe\Invoice::retrieve($_GET['invoice_id']);
    $invoice=json_decode(json_encode($invoice),true);
    }
    catch(\Stripe\Error\InvalidRequest $e) {
    $body = $e->getJsonBody();
    $err = $body['error'];
    echo json_encode($err);
    exit;
    }

    if(!$invoice['paid']) {
    echo "Invoice wasn't paid";
    exit;
    }
    if($invoice['dispute']) {
    echo "Invoice was disputed";
    exit;
    }
    if($invoice['refunded']) {
    echo "Invoice was refunded";
    exit;
    }

    ?>
    <!doctype html>
    <title>
    Invoice #<?=$invoice['id']?>
    </title>
    <style>
    body {
    font-family:sans-serif;
    background:#555;
    }
    .page {
    max-width:700px;
    position:relative;
    border:1px solid #efefef;
    margin:14px auto;
    background:#fff;
    padding:56px;
    margin-top:56px;
    height:1000px;
    box-shadow:0px 5px 5px rgba(0,0,0,0.5);
    }
    .right {
    position:absolute;
    right:56px;
    top:56px;
    text-align:right;
    }
    h1,strong {
    font-weight:600;
    }
    p {
    font-weight:400;
    }
    table {
    width:100%;
    border-collapse:collapse;
    }
    table thead th {
    border-bottom:1px solid #000;
    padding:14px;
    text-align:left;
    }
    table td {
    padding:14px;
    }

    @media print {
    .page {
    box-shadow:none;
    border:none;
    max-width:none;
    height:auto;
    padding:14px;
    margin:14px;
    }
    .right {
    top:14px;
    right:14px;
    }
    body {
    background:#fff;
    padding:14px;
    }
    }
    </style>

    <div class="page">
    <div class="right">
    <h1>
    Invoice
    </h1>
    <p>
    <strong>Invoice number</strong>&nbsp;&nbsp;&nbsp;#<?if($invoice['receipt_number']){?><?=$invoice['receipt_number']?><?} else{?><?=$invoice['id']?><?}?><br/>
    <strong>Date of issue</strong>&nbsp;&nbsp;&nbsp;&nbsp;<?=date('Y-m-d',$invoice['created']);?><br/>
    <strong>Date paid</strong>&nbsp;&nbsp;&nbsp;&nbsp;<?=date('Y-m-d',$invoice['created']);?><br/>
    <strong><?=$invoice['custom_fields'][0]['name']?></strong> <?=$invoice['custom_fields'][0]['value']?><br/>
    </p>
    </div>

    <h1>
    <?/*$config['brand']*/?>
    <img title="Remote OK" style="width:250px;margin-left:-20px;margin-top:-17px;filter:invert(100%)" src="https://remoteok.io/assets/remoteok-logo.png?<?=filemtime(__DIR__.'/../assets/remoteok-logo.png');?>" />
    </h1>

    <p>
    Acme Inc.<br/>
    2400 5th Avenue<br/>
    90210, Los Angeles, CA<br/>
    Company Reg. No.: L0L0L0L<br/>
    </p>



    <p>
    <strong>
    Bill to
    </strong><br/>
    <?=$invoice['customer_name']?><br/>
    <?=$invoice['customer_email']?><br/>
    <?=$invoice['customer_address']['line1']?><br/>
    <?=$invoice['customer_address']['line2']?><br/>
    <?=$invoice['customer_address']['postal_code']?><br/>
    <?=$invoice['customer_address']['state']?><br/>
    <?=$invoice['customer_address']['city']?><br/>
    <?=$invoice['customer_address']['country']?>
    <p>

    <h1>
    US$<?=number_format($invoice['amount_paid']/100,2)?> paid <?=date('F j, Y',$invoice['created'])?>
    </h1>

    <?if($$invoice['source']['last4']){?>
    <p>
    Paid with <?=$invoice['source']['brand']?> *<?=$invoice['source']['last4']?>
    </p>
    <?}?>






    <table>
    <thead>
    <tr>
    <th>
    Description
    </th>
    <th>
    Qty
    </th>
    <th>
    Unit price
    </th>
    <th>
    Amount
    </th>
    </tr>
    </thead>
    <tbody>
    <tr style="background:#efefef;border-bottom:1px solid #000">
    <td>
    <?=$invoice['lines']['data'][0]['description']?><br/>
    </td>
    <td>
    1
    </td>
    <td>
    $<?=number_format($invoice['amount_paid']/100,2)?>
    </td>
    <td>
    $<?=number_format($invoice['amount_paid']/100,2)?>
    </td>
    </tr>
    <tr>
    <td>
    </td>
    <td>
    </td>
    <td>
    Subtotal
    </td>
    <td>
    $<?=number_format($invoice['amount_paid']/100,2)?>
    </td>
    </tr>
    <tr>
    <td>
    </td>
    <td>
    </td>
    <td style="background:#efefef;border-top:1px solid #000;border-bottom:1px solid #000">
    <strong>
    Amount paid
    </strong>
    </td>
    <td style="background:#efefef;border-top:1px solid #000;border-bottom:1px solid #000">
    <strong>
    $<?=number_format($invoice['amount_paid']/100,2)?>
    </strong>
    </td>
    </tr>
    </tbody>
    </table>

    <br/>
    <br/>

    <br/>
    <br/>

    <p>
    Questions? Contact Remote OK at <?=$config['fromEmail']?>
    </p>
    </p>