Skip to main content
knowledgecenter.avangate.com

Extract invoices

Overview

Use the getInvoices method to extract shopper invoices from the Avangate system based on unique order references. The method returns the binary code for invoices in the PDF file format, Base64 encoded (Base64 is used to represent binary data in the ASCII string format).

getInvoices works for COMPLETE orders for which an invoice was already issued. For refunded orders, getInvoices provides two shopper invoices, one for the original order and the second for the refund, reflecting the repayment made.

In the case of cross-selling orders which contain products from different merchants, getInvoice enables you to re-send only the invoices for your own offerings.

Parameters

Parameters

Type/Description

sessionID

Required (string)

 

Session identifier, the output of the Login method. Include sessionID into all your requests. Avangate throws an exception if the values are incorrect.  The sessionID expires in 10 minutes.

RefNo

Required (string)

 

Unique, system generated reference for orders.

Request

    Response

    InvoicesData

    Array of objects

     

     

    Details below.

     

    Sale

    String

     

     

    Base64 encoded PDF file containing an invoice for a Complete order.

     

    Cancellation

    String

     

     

    Base64 encoded PDF file containing a cancellation invoice.

     

    Refunds

    Array of string

     

     

    Base64 encoded PDF files containing invoices for Refunds.

    
    <?php
     
     
    function callRPC($Request, $hostUrl, $Debug = true) {
        $curl = curl_init($hostUrl);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($curl, CURLOPT_SSLVERSION, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Accept: application/json'));
        $RequestString = json_encode($Request);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $RequestString);
     
     
        if ($Debug) {
            $RequestString;
        }
        $ResponseString = curl_exec($curl);
        if ($Debug) {
            $ResponseString;
        }
     
        if (!empty($ResponseString)) {
            $Response = json_decode($ResponseString);
            if (isset($Response->result)) {
                return $Response->result;
            }
            if (!is_null($Response->error)) {
                var_dump($Request->method, $Response->error);
            }
        } else {
            return null;
        }
    }
     
    $host = 'https://api.avangate.com/rpc/3.0/';
     
    $merchantCode = "YOUR_MERCHANT_CODE";// your account's merchant code available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php
    $key = "YOUR_SECRET_KEY";// your account's secret key available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php
     
    $string = strlen($merchantCode) . $merchantCode . strlen(date('Y-m-d H:i:s')) . date('Y-m-d H:i:s');
    $hash = hash_hmac('md5', $string, $key);
     
    $i = 1; // counter for api calls
    // call login
    $jsonRpcRequest = new stdClass();
    $jsonRpcRequest->jsonrpc = '2.0';
    $jsonRpcRequest->method = 'login';
    $jsonRpcRequest->params = array($merchantCode, date('Y-m-d H:i:s'), $hash);
    $jsonRpcRequest->id = $i++;
     
    $sessionID = callRPC($jsonRpcRequest, $host);
     
    var_dump($sessionID);
    $Reference = '43997639';
    
    $jsonRpcRequest = array (
    'method' => 'getInvoices',
    'params' => array($sessionID, $Reference),
    'id' => $i++,
    'jsonrpc' => '2.0');
    
    var_dump (callRPC((Object)$jsonRpcRequest, $host, true));