34
« Laatste bericht door erwin-burorader Gepost op 28 maart, 2022, 12:05:08 »
1)
Om gebruik te kunnen maken van de library dien je een aantal zaken te programmeren die specifiek voor jouw omgeving zijn. Dit doe je door classes uit libAcumulus te "extenden" in je eigen namespace specifiek voor jouw omgeving. De help voor class Container specificeert aan welke eisen die namespace dient te voldoen, maar dat komt simpel neer op het toevoegen van de naam van jouw omgeving: \Siel\Acumulus\{MijnOmgeving} (zoals is gedaan voor WooCommerce, PrestaShop,...). Dit doe je in een folder in je eigen omgeving niet in de vendor/siel/... folder die Composer voor jou aanmaakt, zodat je die kunt blijven updaten.
2)
Om alleen het communicatiegedeelte te gebruiken, dien je binnen die namespace minimaal de volgende classes en methods te definiëren:
- class \Siel\Acumulus\{MijnOmgeving}\Config\ConfigStore
* load()
* save()
- class \Siel\Acumulus\{MijnOmgeving}\Config\ShopCapabilities
* getShopEnvironment()
* alle abstract methods van de parent class
- class \Siel\Acumulus\{MijnOmgeving}\Helpers\Log
* write()
3)
Deze kun je het beste kopiëren van de namespace \Siel\Acumulus\TestWebShop en dan de volgende zaken aanpassen:
- ConfigStore: de plek waar je je config.json opslaat. Maak deze config.json ook aan en vul jouw contractgegevens en het log level in. Hou deze config.json dus voor jezelf, sla deze dus niet op in b.v. een github project, vandaar die rare plek die de in MyTestShop gebruikt wordt. Log level 1 is: ook communicatie loggen.
- ShopCapabilities: de naam en versie van jouw omgeving en de versie van jouw eigen module.
- Log: de naam en plek van je log file. Deze file moet schrijfbaar zijn.
4)
Nu kun je de library gebruiken door *via de Container* een Acumulus ApiClient te verkrijgen. die Container zorgt ervoor dat de benodigde en juiste classes geïnstantieerd worden. NB: de Container bevat geen autoloader, daar gebruik je composer voor, of als je dat niet gebruikt, SielAcumulusAutoloader.php. De container gaat er dus wel vanuit dat er een autoload mechanisme is voor de classes onder de namespace /Siel/Acumulus.
5)
Voorbeeldcode:
<?php
$shopNamespace = '{MijnOmgeving}';
$language = 'nl'; // of 'en'
$container = new Container($shopNamespace, $language);
$acumulus = $container->getAcumulusApiClient();
// Voeg factuur toe:
$invoiceResult = $acumulus->addInvoice($invoiceData);
$invoiceResponse = $invoiceResult->getMainResponse();
if ($invoiceResponse !== null) {
$token = $invoiceResponse['token'];
// store token in combination with shop order id for future use.
}
// of Zet betaald:
$token = '...'; // token for the invoice to set to paid.
$paymentStatus = Api::PaymentStatus_Paid;
$paymentDate = date(Api::DateFormat_Iso); // today
$paymentResponse = $acumulus->setPaymentStatus(
$token,
$paymentStatus,
$paymentDate
);
?>