e-MCF SDK

Exemples d'utilisation du SDK


Exemple de code source du client

package client;
import java.util.ArrayList;
import java.util.List;

import bj.impots.dgi.*;
import bj.impots.dgi.auth.ApiKeyAuth;
import bj.impots.dgi.emcf.*;


public class SfeInvoiceExample {

    public static void main(String[] args) {

        ApiClient defaultClient = Configuration.getDefaultApiClient();

        // Configure API key authorization: Bearer
        ApiKeyAuth Bearer = (ApiKeyAuth) defaultClient.getAuthentication("Bearer");
        Bearer.setApiKey("XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX");//YOUR API TOKEN HERE
        //By default, SDK is configured with SyGMEF-test
        //Enable following line in order to configure SDK for SyGMEF-production
        //defaultClient.setBasePath("https://sygmef.impots.bj/emcf");

        SfeInvoiceApi apiInvoiceInstance = new SfeInvoiceApi();
        SfeInfoApi apiInfoInstance = new SfeInfoApi();
        
        try {
            //INFO
            InfoResponseDto infoResponseDto= apiInfoInstance.apiInfoStatusGet();
            System.out.println(infoResponseDto);
        	
            var invoiceTypesDto = apiInfoInstance.apiInfoInvoiceTypesGet();
            System.out.println(invoiceTypesDto);

            var taxGroupsDto = apiInfoInstance.apiInfoTaxGroupsGet();
            System.out.println(taxGroupsDto);

            var paymentTypesDto = apiInfoInstance.apiInfoPaymentTypesGet();
            System.out.println(paymentTypesDto);
        	
            //INVOICE
            StatusResponseDto statusResponseDto = apiInvoiceInstance.apiInvoiceGet();
            System.out.println(statusResponseDto);
        
        
            InvoiceRequestDataDto invoiceRequestDataDto=new InvoiceRequestDataDto();
            //fill-in the request
            invoiceRequestDataDto.setIfu("XXXXXXXXXXXXX");//YOUR IFU HERE
        	
            OperatorDto operatorDto=new OperatorDto();
            operatorDto.setName("Test");
    	    invoiceRequestDataDto.setOperator(operatorDto);
    	    
   	        	    
    	    invoiceRequestDataDto.setType(InvoiceTypeEnum.FV);
    	    
    	    List items=new ArrayList();
    	    
    	    var item1=new ItemDto();
    	    item1.setName("Jus d'orange");
    	    item1.setPrice(1200l);
    	    item1.setQuantity(3d);
    	    item1.setTaxGroup(TaxGroupTypeEnum.B);
    	    items.add(item1);
    	    
    	    var item2=new ItemDto();
    	    item2.setName("Article exonere");
    	    item2.setPrice(800l);
    	    item2.setQuantity(2.5d);
    	    item2.setTaxGroup(TaxGroupTypeEnum.A);
    	    items.add(item2);
    	        	    
    	    invoiceRequestDataDto.setItems(items);
    	    System.out.println(invoiceRequestDataDto);
            InvoiceResponseDto invoiceResponseDto = apiInvoiceInstance.apiInvoicePost(invoiceRequestDataDto);
            System.out.println(invoiceResponseDto);
            
            if (invoiceResponseDto.getUid()!=null) {
                //details
            	InvoiceDetailsDto invoiceDetailsDto = apiInvoiceInstance.apiInvoiceUidGet(invoiceResponseDto.getUid());
            	System.out.println(invoiceDetailsDto);
            	
            	//finalize
                SecurityElementsDto securityElementsDto=apiInvoiceInstance.apiInvoiceUidConfirmPut(invoiceResponseDto.getUid());
                System.out.println(securityElementsDto);
            }
        } catch (ApiException e) {
            System.err.println("Exception when calling SfeInvoiceApi");
            e.printStackTrace();
        }
    }
}


index.html

$(document).ready(function(){

  $('#LOG').append( '<h3>START</h3>' );
  
  var putFinalize = function(uid){
    $('#LOG').append( 'Finalize '+uid );

    $.ajax({
      type: 'PUT',
      url: 'https://developper.impots.bj/sygmef-emcf/api/invoice/'+uid+'/confirm',
      xhrFields: {
        withCredentials: false
      },
      headers: {
        'Authorization':'Bearer XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX'//your API TOKEN here
      },

      success: function(data) {
         $('#LOGINVOICE').append( '<p style="color: green;">SecurityElementsDto: '+JSON.stringify(data, null, 4)+'</p>' );
         $('#LOGINVOICE').append( '<p>END</p>' );
      },

      error: function(jqxhr, settings, ex) {
        alert('failed, ' + ex); 
        console.log(jqxhr);
      }
    });  
  
  };
  
  var getInvoiceDetailsDto = function(uid){
    $('#LOG').append( 'Finalize '+uid );

    $.ajax({
      type: 'GET',
      url: 'https://developper.impots.bj/sygmef-emcf/api/invoice/'+uid,
      xhrFields: {
        withCredentials: false
      },
      headers: {
        'Authorization':'Bearer XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX'//your API TOKEN here
      },

      success: function(data) {
         $('#LOGINVOICE').append( '<p style="color: green;">InvoiceDetailsDto: '+JSON.stringify(data, null, 4)+'</p>' );
         putFinalize(uid);
      },

      error: function(jqxhr, settings, ex) {
        alert('failed, ' + ex); 
        console.log(jqxhr);
      }
    });  
  
  };
  
  var postInvoiceRequestDto = function(){
    invoiceRequestDto = {
       "ifu":"XXXXXXXXXXXXX",//YOUR IFU HERE
       "type":"FV",
       "items":[
          {
             "name":"Jus d'orange",
             "price":1800,
             "quantity":2,
             "taxGroup":"B"
          },
          {
             "name":"Article exonere",
             "price":600,
             "quantity":2.5,
             "taxGroup":"A"
          }
       ],
       "operator":{
          "name":"Test"
       }
    };
    console.log(invoiceRequestDto);

    $('#LOG').append( '<p>InvoiceRequestDto: '+JSON.stringify(invoiceRequestDto, null, 4)+'</p>' );
    $.ajax({
      type: 'POST',
      url: 'https://developper.impots.bj/sygmef-emcf/api/invoice',
      contentType: 'application/json',
      data: JSON.stringify(invoiceRequestDto),
      xhrFields: {
        withCredentials: false
      },
      headers: {
        'Authorization':'Bearer XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX'//your API TOKEN here
      },

      success: function(data) {
         $('#LOGINVOICE').append( '<p style="color: green;">InvoiceResponseDto: '+JSON.stringify(data, null, 4)+'</p>' );
         if (data.uid!=null){
          getInvoiceDetailsDto(data.uid);
         }
      },

      error: function(jqxhr, settings, ex) {
        alert('failed, ' + ex); 
        console.log(jqxhr);
      }
    });
  };
  
  var getStatusResponseDto = function(){
    $.ajax({
      type: 'GET',
      url: 'https://developper.impots.bj/sygmef-emcf/api/invoice',
      contentType: 'application/json',
      xhrFields: {
        withCredentials: false
      },
      headers: {
        'Authorization':'Bearer XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX'//your API TOKEN here
      },
      
      success: function(data) {
         $('#LOGINVOICE').append( '<p style="color: green;">StatusResponseDto: '+JSON.stringify(data, null, 4)+'</p>' );
         postInvoiceRequestDto();
      },

      error: function(jqxhr, settings, ex) {
        alert('failed, ' + ex); 
        console.log(jqxhr);
      }
    });
  };
  
  var getPaymentTypesDto = function(){
    $.ajax({
      type: 'GET',
      url: 'https://developper.impots.bj/sygmef-emcf/api/info/invoiceTypes',
      contentType: 'application/json',
      xhrFields: {
        withCredentials: false
      },
      headers: {
        'Authorization':'Bearer XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX'//your API TOKEN here
      },
      
      success: function(data) {
         $('#LOGINFO').append( '<p style="color: blue;">PaymentTypesDto: '+JSON.stringify(data, null, 4)+'</p>' );
      },

      error: function(jqxhr, settings, ex) {
        alert('failed, ' + ex); 
        console.log(jqxhr);
      }
    });
  };
  
  var getTaxGroupsDto = function(){
    $.ajax({
      type: 'GET',
      url: 'https://developper.impots.bj/sygmef-emcf/api/info/taxGroups',
      contentType: 'application/json',
      xhrFields: {
        withCredentials: false
      },
      headers: {
        'Authorization':'Bearer XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX'//your API TOKEN here
      },
      
      success: function(data) {
         $('#LOGINFO').append( '<p style="color: blue;">TaxGroupsDto: '+JSON.stringify(data, null, 4)+'</p>' );
         getPaymentTypesDto();
      },

      error: function(jqxhr, settings, ex) {
        alert('failed, ' + ex); 
        console.log(jqxhr);
      }
    });
  };
  
   var getInvoiceTypesDto = function(){
    $.ajax({
      type: 'GET',
      url: 'https://developper.impots.bj/sygmef-emcf/api/info/invoiceTypes',
      contentType: 'application/json',
      xhrFields: {
        withCredentials: false
      },
      headers: {
        'Authorization':'Bearer XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX'//your API TOKEN here
      },
      
      success: function(data) {
         $('#LOGINFO').append( '<p style="color: blue;">InvoiceTypesDto: '+JSON.stringify(data, null, 4)+'</p>' );
         getTaxGroupsDto();
      },

      error: function(jqxhr, settings, ex) {
        alert('failed, ' + ex); 
        console.log(jqxhr);
      }
    });
  };
  
  var getInfoReponseDto = function(){
    $.ajax({
      type: 'GET',
      url: 'https://developper.impots.bj/sygmef-emcf/api/info/status',
      contentType: 'application/json',
      xhrFields: {
        withCredentials: false
      },
      headers: {
        'Authorization':'Bearer XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX'//your API TOKEN here
      },
      
      success: function(data) {
         $('#LOGINFO').append( '<p style="color: blue;">InfoReponseDto: '+JSON.stringify(data, null, 4)+'</p>' );
         getInvoiceTypesDto();
      },

      error: function(jqxhr, settings, ex) {
        alert('failed, ' + ex); 
        console.log(jqxhr);
      }
    });
  };
  
  var start = function(){
    //INFO
    $('#LOGINFO').append( '<p style="color: orangered;">INFO API</p>' );
    getInfoReponseDto();
    //INVOICE
    $('#LOGINVOICE').append( '<p style="color: orangered;">INVOICE API</p>' );
    getStatusResponseDto();
  };
  
  //start
  start();
  
  

});

Exemple de code source du client

using IO.Swagger.bj.impots.dgi.emcf;
using IO.Swagger.Client;
using System;
using System.Collections.Generic;
using System.Diagnostics;

namespace EmcfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Configure API key authorization: Bearer
            Configuration.Default.ApiKey.Add("Authorization", "XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX");//YOUR API TOKEN HERE

            //By default, SDK is configured with SyGMEF-test
            //Enable following line in order to configure SDK for SyGMEF-production
            //Configuration.Default.BasePath = "https://sygmef.impots.bj/emcf";

            var apiInvoiceInstance = new SfeInvoiceApi();
            var apiInfoInstance = new SfeInfoApi();

            try
            {
                //INFO
                var infoResponseDto = apiInfoInstance.ApiInfoStatusGet();
                Debug.WriteLine(infoResponseDto);

                var invoiceTypesDto = apiInfoInstance.ApiInfoInvoiceTypesGet();
                Debug.WriteLine(invoiceTypesDto);

                var taxGroupsDto = apiInfoInstance.ApiInfoTaxGroupsGet();
                Debug.WriteLine(taxGroupsDto);

                var paymentTypesDto = apiInfoInstance.ApiInfoPaymentTypesGet();
                Debug.WriteLine(paymentTypesDto);

                //INVOICE
                var statusResponseDto = apiInvoiceInstance.ApiInvoiceGet();
                Debug.WriteLine(statusResponseDto);

                var invoiceRequestDataDto = new InvoiceRequestDataDto()
                {
                    //fill-in the fields
                    Ifu = "XXXXXXXXXXXXXXXXXX",//YOUR IFU HERE
                    Operator = new OperatorDto()
                    {
                        Name = "Test"
                    },
                    Items = new List(),
                    Type = InvoiceTypeEnum.FV
                };
                invoiceRequestDataDto.Items.Add(new ItemDto()
                {
                    Name = "Jus d'orange",
                    Price = 1200,
                    TaxGroup = TaxGroupTypeEnum.B,
                    Quantity = 3
                });
                invoiceRequestDataDto.Items.Add(new ItemDto()
                {
                    Name = "Article expnere",
                    Price = 800,
                    TaxGroup = TaxGroupTypeEnum.A,
                    Quantity = 2.5
                });

                var invoiceResponseDto = apiInvoiceInstance.ApiInvoicePost(invoiceRequestDataDto);
                Debug.WriteLine(invoiceResponseDto);
                if (invoiceResponseDto.Uid != null)
                {
                    //details
                    var invoiceDetailsDto = apiInvoiceInstance.ApiInvoiceUidGet(invoiceResponseDto.Uid);
                    Debug.WriteLine(invoiceDetailsDto);

                    //finalize
                    var securityElementsDto = apiInvoiceInstance.ApiInvoiceUidConfirmPut(invoiceResponseDto.Uid);
                    Debug.WriteLine(securityElementsDto);
                }

            }
            catch (Exception e)
            {
                Debug.Print("Exception when calling PosInvoiceApi.apiInvoiceGet: " + e.Message);
            }

        }
    }
}



Exemple de code source du client

import time
import swagger_client
from swagger_client import ApiClient
from swagger_client.rest import ApiException
from swagger_client.models import *
from pprint import pprint

# Configure API key authorization: Bearer
configuration = swagger_client.Configuration()
configuration.api_key['Authorization'] = 'XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX'

# By default, SDK is configured with SyGMEF-test
# Enable following line in order to configure SDK for SyGMEF-production
# configuration.host = 'https://sygmef.impots.bj/emcf'

# create an instance of the API class
api_invoice_instance = swagger_client.SfeInvoiceApi(ApiClient(configuration=configuration))
api_info_instance = swagger_client.SfeInfoApi(ApiClient(configuration=configuration))

try:
    # INFO
    info_response_dto = api_info_instance.api_info_status_get()
    pprint(info_response_dto)

    invoice_types_dto = api_info_instance.api_info_invoice_types_get()
    pprint(invoice_types_dto)

    tax_groups_dto = api_info_instance.api_info_tax_groups_get()
    pprint(tax_groups_dto)

    payment_types_dto = api_info_instance.api_info_payment_types_get()
    pprint(payment_types_dto)

    # INVOICE
    status_response_dto = api_invoice_instance.api_invoice_get()
    pprint(status_response_dto)
    
    invoice_request_data_dto = InvoiceRequestDataDto()
    # YOUR IFU HERE
    invoice_request_data_dto.ifu = 'XXXXXXXXXXXX'

    operator_dto = OperatorDto()
    operator_dto.name = 'Test'
    invoice_request_data_dto.operator = operator_dto

    tax_groups_dto = TaxGroupsDto()
    tax_groups_dto.group_a = 0
    tax_groups_dto.group_b = 18
    tax_groups_dto.group_c = 0
    tax_groups_dto.group_d = 18
    tax_groups_dto.group_aib_a = 1
    tax_groups_dto.group_aib_b = 5
    invoice_request_data_dto.tax_groups = tax_groups_dto

    invoice_request_data_dto.type = InvoiceTypeEnum.FV

    invoice_request_data_dto.items = []

    item_1 = ItemDto()
    item_1.name = "Jus d'orange"
    item_1.price = 1200
    item_1.quantity = 3
    item_1.tax_group = TaxGroupTypeEnum.B
    invoice_request_data_dto.items.append(item_1)

    item_2 = ItemDto()
    item_2.name = "Article exonere"
    item_2.price = 800
    item_2.quantity = 2.5
    item_2.tax_group = TaxGroupTypeEnum.A
    invoice_request_data_dto.items.append(item_2)

    pprint(invoice_request_data_dto)

    invoice_response_data_dto = api_invoice_instance.api_invoice_post(body=invoice_request_data_dto)
    pprint(invoice_response_data_dto)

    if invoice_response_data_dto.uid is not None:
        # details
        invoice_details_dto = api_invoice_instance.api_invoice_uid_get(invoice_response_data_dto.uid)
        pprint(invoice_details_dto)

        # finalize
        security_elements_dto = api_invoice_instance.api_invoice_uid_confirm_put(invoice_response_data_dto.uid)
        pprint(security_elements_dto)

except ApiException as e:
    print("Exception when calling PosInvoiceApi->apiInvoiceGet: %s\n" % e)

Exemple de code source du client

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

// Configure API key authorization: Bearer
$config = Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('Authorization', 'XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXX');
print_r($config);
// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
// $config = Swagger\Client\Configuration::getDefaultConfiguration()->setApiKeyPrefix('Authorization', 'Bearer');

$apiInvoiceInstance = new Swagger\Client\Api\SfeInvoiceApi(
    // If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
    // This is optional, `GuzzleHttp\Client` will be used as default.
    new GuzzleHttp\Client(array('verify'=> false)),
    $config
);

$apiInfoInstance = new Swagger\Client\Api\SfeInfoApi(
    // If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
    // This is optional, `GuzzleHttp\Client` will be used as default.
    new GuzzleHttp\Client(array('verify'=> false)),
    $config
);

//INFO
try {
    $infoResponseDto = $apiInfoInstance->apiInfoStatusGet();
    print_r($infoResponseDto);
} catch (Exception $e) {
    echo 'Exception when calling SfeInvoiceApi->apiInvoiceGet: ', $e->getMessage(), PHP_EOL;
}

try {
    $invoiceTypesDto = $apiInfoInstance->apiInfoInvoiceTypesGet();
    print_r($invoiceTypesDto);
} catch (Exception $e) {
    echo 'Exception when calling SfeInvoiceApi->apiInvoiceGet: ', $e->getMessage(), PHP_EOL;
}

try {
    $taxGroupsDto = $apiInfoInstance->apiInfoTaxGroupsGet();
    print_r($taxGroupsDto);
} catch (Exception $e) {
    echo 'Exception when calling SfeInvoiceApi->apiInvoiceGet: ', $e->getMessage(), PHP_EOL;
}

try {
    $paymentTypesDto = $apiInfoInstance->apiInfoPaymentTypesGet();
    print_r($paymentTypesDto);
} catch (Exception $e) {
    echo 'Exception when calling SfeInvoiceApi->apiInvoiceGet: ', $e->getMessage(), PHP_EOL;
}

//INVOICE
try {
    $statusReponseDto = $apiInvoiceInstance->apiInvoiceGet();
    print_r($statusReponseDto);
} catch (Exception $e) {
    echo 'Exception when calling SfeInvoiceApi->apiInvoiceGet: ', $e->getMessage(), PHP_EOL;
}


$body = new \Swagger\Client\Model\InvoiceRequestDataDto(); // \Swagger\Client\Model\InvoiceRequestDataDto | 
$body->setIfu('XXXXXXXXXXXX');//YOUR IFU HERE

$operatorDto = new \Swagger\Client\Model\OperatorDto();
$operatorDto->setName('Test');
$body->setOperator($operatorDto);

$body->setType(Swagger\Client\Model\InvoiceTypeEnum::FV);

$items = array();

$item1 = new \Swagger\Client\Model\ItemDto();
$item1->setName("Jus d'orange");
$item1->setPrice(1200);
$item1->setQuantity(3);
$item1->setTaxGroup(Swagger\Client\Model\TaxGroupTypeEnum::B);
array_push($items, $item1);

$item2 = new \Swagger\Client\Model\ItemDto();
$item2->setName("Article exonere");
$item2->setPrice(800);
$item2->setQuantity(2.5);
$item2->setTaxGroup(Swagger\Client\Model\TaxGroupTypeEnum::A);
array_push($items, $item2);

$body->setItems($items);


try {
    $invoiceResponseDto = $apiInvoiceInstance->apiInvoicePost($body);
    print_r($invoiceResponseDto);
} catch (Exception $e) {
    echo 'Exception when calling SfeInvoiceApi->apiInvoicePost: ', $e->getMessage(), PHP_EOL;
}


$uid = $invoiceResponseDto['uid']; // string | 
if (!is_null($uid)){

  try {
      $invoiceDetailsDto = $apiInvoiceInstance->apiInvoiceUidGet($uid);
      print_r($invoiceDetailsDto);
      
        try {
            $securityElementsDto = $apiInvoiceInstance->apiInvoiceUidConfirmPut($uid);
            print_r($securityElementsDto);
        } catch (Exception $e) {
            echo 'Exception when calling SfeInvoiceApi->apiInvoiceUidConfirmPut: ', $e->getMessage(), PHP_EOL;
        }
      
  } catch (Exception $e) {
      echo 'Exception when calling SfeInvoiceApi->apiInvoiceUidConfirmPut: ', $e->getMessage(), PHP_EOL;
  }
  

}
?>