Il s'agit de la bibliothèque PHP pour l'intégration avec UNiDAYS. Ceci doit être utilisé pour les intégrations codées et sans code. La documentation suivante fournit des descriptions des implémentations et des exemples.
Comment utiliser ce code ?
Suivi direct
Vérification sans code
Contribuer
Voici une description de tous les paramètres disponibles. Les éléments que vous nous fournissez dépendent du contrat convenu.
Paramètre | Description | Type de données | Exemple |
---|---|---|---|
ID partenaire | Votre PartnerId tel que fourni par UNiDAYS. Si vous opérez dans plusieurs régions géographiques, vous POUVEZ avoir un PartnerId différent pour chaque région. | Guide codé en Base64 | XaxptFh0sK8Co6pI== |
ID de transaction | Un identifiant unique pour la transaction dans votre système | Chaîne | Commande123 |
Devise | Le code devise ISO 4217 | Chaîne | EUR |
Avoir Code ou MemberID comme paramètre est également obligatoire :
Paramètre | Description | Type de données | Exemple |
---|---|---|---|
Code | Le code de réduction UNiDAYS utilisé | Chaîne | ABC123 |
ID de membre | À fournir uniquement si vous utilisez une intégration sans code | Guide codé en Base64 | 0LTio6iVNaKj861RM9azJQ== |
Notez que toutes les propriétés suivantes dont la valeur est inconnue doivent être omises des appels. Les valeurs suivantes que vous nous fournirez dépendront de votre contrat convenu.
Paramètre | Description | Type de données | Exemple |
---|---|---|---|
Total de la commande | Montant total payé, formaté à 2 décimales | Décimal | 209.00 |
ArticlesUNiDAYSDescompte | Montant monétaire total de la remise UNiDAYS appliquée sur la valeur brute de l'article ItemsGross , formaté à 2 décimales | Décimal | 13h00 |
ArticlesTaxe | Montant total de la taxe appliquée aux articles, formaté à 2 décimales | Décimal | 34.50 |
ExpéditionBrut | Montant total des frais d'expédition, avant toute remise ou taxe d'expédition appliquée, formaté à 2 décimales | Décimal | 5h00 |
LivraisonRemise | Montant monétaire total de la remise d'expédition (UNiDAYS ou autre) appliqué à la commande, formaté à 2 décimales | Décimal | 3h00 |
ArticlesBrut | Montant monétaire total des articles, taxes comprises, avant l'application de toute remise, formaté à 2 décimales | Décimal | 230,00 |
ArticlesAutreRemise | Montant monétaire total de toutes les remises non UNiDAYS appliquées à ItemsGross , formaté à 2 décimales | Décimal | 10h00 |
UNiDAYSRemisePourcentage | La remise UNiDAYS appliquée, en pourcentage, formaté à 2 décimales | Décimal | 10h00 |
NouveauClient | L'utilisateur est-il un nouveau client (ou plutôt un client existant) pour vous ? | Booléen | vrai ou faux |
Voici un exemple de panier avec les champs relatifs aux paramètres de suivi UNiDAYS,
Article | Brut | Remise UNiDAYS | Autre remise | Impôt | Total net | Total de ligne |
---|---|---|---|---|---|---|
Chaussures | 100,00 | 0,00 | 0,00 | 16.67 | 83.33 | 100,00 |
Chemise | 50.00 | 5h00 | 0,00 | 7h50 | 37.50 | 45h00 |
Jeans | 80.00 | 8h00 | 10h00 | 10h33 | 51,67 | 62.00 |
Totaux | 230,00 | 13h00 | 10h00 | 34.50 | 172,50 | 207,00 |
Expédition | 5h00 | |||||
Remise sur les frais d'expédition | 3h00 | |||||
Total de la commande | 209.00 |
Vous trouverez ci-dessous les trois options pour mettre en œuvre votre intégration. Ces exemples couvrent à la fois les intégrations codées et sans code (voir le PDF d'analyse en direct pour plus de détails) et incluent tous les paramètres facultatifs. Ils sont destinés à servir de lignes directrices pour la mise en œuvre.
Cette méthode renvoie une URL que vous pouvez utiliser pour appeler l'API.
Il est obligatoire que toutes les URL des serveurs soient signées. Cela signifie que vous devez transmettre la clé de signature que UNiDAYS vous fournit comme argument. La clé de signature est un GUID codé en Base64. Ce point de terminaison accepte les requêtes GET
et POST
.
La méthode pour obtenir l'URL avec laquelle effectuer une requête de serveur à serveur est create_server_url($key)
. Pour implémenter cette méthode, vous devez d'abord utiliser DirectTrackingDetailsBuilder
pour créer un objet de suivi direct avec les propriétés que vous souhaitez nous envoyer. Plus de détails sur ce constructeur peuvent être trouvés ici.
Une fois l'objet contenant les détails que vous devez nous envoyer créé, créez un assistant de suivi, en fournissant ces détails comme argument new TrackingHelper($directTrackingDetails)
et appelez ->create_server_url($key)
où $key
est la clé qui vous a été fournie par UNiDAYS.
Une URL vous sera renvoyée, qui pourra ensuite être utilisée pour appeler notre API. En cas de succès, une réponse avec un code d'état de 204 Aucun contenu sera renvoyée. Cela fonctionnera pour les requêtes POST
et GET
.
<?php
use Unidays ;
// UNiDAYS will provide your partnerId and key
$ partnerId = " somePartnerId " ;
$ key = " someSigningKey " ;
$ details = new DirectTrackingDetailsBuilder ( $ partnerId , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
$ helper = new TrackingHelper ( $ directTrackingDetails );
$ url = $ helper -> create_server_url ( $ key );
Ceci est également connu sous le nom d’intégration client-serveur. Cette méthode renvoie une URL qui peut être placée dans un élément de script sur votre page de post-paiement/succès de commande pour appeler l'API.
C'est une option pour créer une URL signée pour votre demande de script. Pour ce faire, vous devrez nous envoyer la clé de signature que UNiDAYS vous fournit comme argument pour la méthode signée.
$url = $helper->create_signed_script_url($key);
au lieu de
$url = $helper->create_script_url();
La méthode pour obtenir l'URL avec laquelle effectuer une requête client-serveur est create_script_url()
, ou create_signed_script_url($key)
si vous avez choisi de renvoyer une URL signée. Pour implémenter cette méthode, vous devez d'abord utiliser DirectTrackingDetailsBuilder
pour créer un objet de suivi direct avec les propriétés que vous souhaitez nous envoyer. Plus de détails sur ce constructeur peuvent être trouvés ici.
Une fois l'objet contenant les détails que vous devez nous envoyer créé, créez un assistant de suivi, en fournissant ces détails comme argument new TrackingHelper($directTrackingDetails)
et appelez ->create_script_url()
pour une URL non signée, ou ->create_signed_script_url($key)
, où $key
est la clé qui vous est fournie par UNiDAYS.
Une URL vous sera renvoyée et pourra être placée dans un élément de script sur votre page de post-paiement/réussite de la commande pour appeler l'API. En cas de succès, une réponse avec un code d'état de 200 OK sera renvoyée. Cela ne fonctionnera que pour les requêtes GET
.
L'exemple ci-dessous est une demande d'URL de script non signée.
<?php
use Unidays ;
// UNiDAYS will provide your partnerId and key
$ partnerId = " somePartnerId " ;
$ details = new DirectTrackingDetailsBuilder ( $ partnerId , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
$ helper = new TrackingHelper ( $ directTrackingDetails );
$ url = $ helper -> create_script_url ();
Les appels au client de suivi sont similaires à la création d'une URL de serveur, mais plutôt que de renvoyer une URL, UNiDAYS envoie la demande et renvoie une réponse.
Il est obligatoire que tous les appels du client de suivi soient dotés d'une clé, car les demandes envoyées par UNiDAYS sont signées.
Pour implémenter cette méthode, vous devez d'abord utiliser DirectTrackingDetailsBuilder
pour créer un objet de suivi direct avec les propriétés que vous souhaitez nous envoyer. Plus de détails sur ce constructeur peuvent être trouvés ici.
Une fois l'objet contenant les détails que vous devez nous envoyer créé, créez une instance du client de suivi, en fournissant ces détails en paramètre, ainsi que la clé de signature qu'UNiDAYS vous a fournie avec new TrackingClient($directTrackingDetails, $key)
et appelez ->sendRequest()
.
Un HttpResponseMessage est renvoyé. En cas de succès, la réponse doit avoir le code d'état 204 No Content.
L'exemple ci-dessous configure certains détails de suivi direct, appelle sendRequest sur le client et renvoie le code de réponse à la console.
<?php
use Unidays ;
// UNiDAYS will provide your partnerId and key
$ partnerId = " somePartnerId " ;
$ key = " someSigningKey " ;
$ details = new DirectTrackingDetailsBuilder ( $ partnerId , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
$ client = new TrackingClient ( $ directTrackingDetails , $ key );
$ response = $ client -> sendRequest ();
echo $ response -> code ;
UNiDAYS fournit une configuration de point de terminaison de test de l'objet TrackingHelper
.
L'objet TrackingHelper, configuré en mode test, ajoutera un paramètre supplémentaire ( &Test=True
) à l'URL qui vous est renvoyée, ou envoyée pour vous.
<?php
use Unidays ;
// UNiDAYS will provide your partnerId and key
$ partnerId = " somePartnerId " ;
$ key = " someSigningKey " ;
$ details = new DirectTrackingDetailsBuilder ( $ partnerId , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
// Pass in an aditional argument of true to instantiate the TrackingHelper object in test mode
$ helper = new TrackingHelper ( $ directTrackingDetails , true );
// The url generated will now contain the appended $Test=True parameter, this url will call our test endpoint
$ url = $ helper -> create_server_url ( $ key );
Le but du constructeur est de rendre simple et intuitif la création de toute demande de suivi vers UNiDAYS.
Les arguments sur le builder sont les paramètres obligatoires :
$directTrackingDetails = new DirectTrackingDetailsBuilder($partnerId, $currency, $transactionId)
Il existe alors diverses méthodes disponibles pour constituer les informations que vous souhaitez nous envoyer et qui peuvent être enchaînées selon l'exemple. Ceux-ci correspondent aux paramètres en haut de ce document.
base64 encoded guid
)string
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)bool
)Enchaînez uniquement les valeurs que vous avez contractuellement accepté de fournir. Il n’est pas obligatoire d’utiliser toutes les méthodes.
Le dernier appel à enchaîner est ->build()
qui crée l'objet.
<?php
use Unidays ;
$ details = new DirectTrackingDetailsBuilder ( ' somePartnerId ' , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
Si vous avez accepté de fournir aux membres UNiDAYS une expérience sans code, en plus du suivi direct, vous devrez également mettre en œuvre « l'API sans code » qui vous aidera à analyser et valider le trafic signé que nous dirigeons vers votre site.
Appelez d’abord le CodelessUrlVerifier avec la clé fournie par UNiDAYS new CodelessUrlVerifier($key)
. Appelez ensuite la méthode verify_url_params($ud_s, $ud_t, $ud_h)
avec les valeurs de ud_s, ud_t et ud_h comme arguments.
Paramètre | Description | Type de données | Longueur maximale | Exemple |
---|---|---|---|---|
ud_s | Carte d'étudiant vérifiée UNiDAYS | Chaîne | 256 caractères | Faire/faqh330SGgCnn4t3X4g== |
ud_t | Horodatage de la demande | Chaîne | 64 bits | 1395741712 |
ud_h | Signature de hachage des deux autres paramètres | Chaîne Base64 | 256 caractères | o9Cg3q2eVElZxYlJsEAQ== |
Si la méthode valide avec succès le hachage de la requête entrante, un DateTime pour la requête sera renvoyé ; sinon, null sera renvoyé.
<?php
use Unidays ;
// Your key as provided by UNiDAYS
$ key = " someSigningKey " ;
// Obtain parameters from the query string. Be sure to URL Decode them
$ ud_s = " Do/faqh330SGgCnn4t3X4g== " ;
$ ud_t = " 1395741712 " ;
$ ud_h = " i38dJdX+XLKuE4F5tv+Knpl5NPtu5zrdsjnqBQliJEJE4NkMmfurVnUaT46WluRYoD1/f5spAqU36YgeTMCNeg== " ;
$ verifier = new CodelessUrlVerifier ( $ key );
$ verifiedAt = $ verifier -> verify_url_params ( $ ud_s , $ ud_t , $ ud_h );
Ce projet est configuré comme un projet open source. En tant que tel, si vous avez des suggestions concernant les fonctionnalités, pour améliorer le code lui-même, ou si vous avez rencontré des problèmes ; vous pouvez les soulever et/ou suggérer des changements dans la mise en œuvre.
Si vous souhaitez contribuer à cette base de code, veuillez suivre les directives de contribution. Celui-ci contient des guides sur la contribution directe et la création de demandes de fonctionnalités ou de rapports de bogues. Veuillez respecter notre code de conduite lorsque vous effectuez l'une des actions ci-dessus.