App-à-app
Vue d'ensemble
La solution Moneris Go offre trois méthodes d’intégration distinctes afin de s’adapter à votre configuration particulière. Chaque méthode fournit les mêmes fonctionnalités de base pour le traitement des paiements. Il est important de noter que vous n’êtes pas lié de façon permanente à une méthode d’intégration : vous pouvez en choisir une autre à tout moment. Le choix de la bonne méthode d’intégration dépend de votre infrastructure existante et de la facilité avec laquelle elle peut s’intégrer à Moneris Go. Cette section passe en revue toutes les méthodes d’intégration afin que vous puissiez prendre une décision éclairée quant à la méthode à utiliser.
App-à-app
L’intégration App-à-app permet à votre système PDV basé sur Android de fonctionner directement sur votre appareil Moneris Go. Cette méthode d’intégration offre une expérience de transaction tout-en-un sans nécessiter de matériel PDV supplémentaire. Elle est idéale pour les applications conçues pour le mobile et le cloud qui recherchent une interface utilisateur hautement personnalisable et un contrôle strict de l’expérience utilisateur, tout en réduisant l’empreinte matérielle. Cette méthode d’intégration nécessite le téléversement d’une application Android sur la boutique d’applications pour les appareils Moneris Go.
Configuration de l’appareil en mode App-à-app
Configurer votre appareil pour l’intégration App-à-app nécessite le téléversement de votre application sur la boutique Pax ou Ingenico, selon le modèle de votre appareil. Cela rend votre application disponible en téléchargement sur votre appareil Moneris Go. Pour consulter la liste complète des étapes requises, visitez la page « Comment téléverser votre application pour l’intégration App-à-app »
Intégration de la méthode App-à-app
Des étapes de configuration supplémentaires sont requises pour intégrer la solution App-à-app de Moneris. Vous trouverez ci-dessous les informations supplémentaires nécessaires pour mettre en place votre solution.
Configuration de l’accès au pare-feu
Afin de permettre à l’appareil de communiquer avec des applications tierces, les adresses IP de ces applications doivent être ajoutées à la liste blanche du côté de Moneris. Ces applications tierces peuvent inclure des systèmes de gestion des stocks ou de programmes de fidélité. Pour poursuivre, contactez votre conseiller client et fournissez-lui les adresses IP à inclure dans la liste blanche.
Comprendre le flux de paiement
Votre application interagira avec l’application de paiement Moneris en utilisant la classe Activity (classe d’activité Android). La classe Activity (classe d’activité Android) contient la méthode startActivityForResult (lancement d’une activité avec attente de résultat) qui, lorsqu’elle est invoquée, déclenche l’application de paiement Moneris afin qu’elle prenne le relais et commence à traiter le paiement. Une fois la transaction traitée, les résultats sont renvoyés à l’aide de onActivityResult (l’événement de retour de l’activité). L’application de paiement Moneris, avec laquelle votre application interagit, gère les requêtes et les réponses en format JSON. Le type de fonctionnalité que votre requête exécute dépend de la valeur “action” (champ d’action) que vous envoyez dans l’objet JSON. Pour consulter la liste complète des requêtes disponibles, visitez la spécification API pour Purchase (Achat)
{
"apiVersion": "3.0",
"istConfigCode": "C123456SI",
"dataId": "1745593236886-001",
"dataTimestamp": "2025-04-25 11:00:36",
"data": {
"request": [
{
"idempotencyKey": "2cfe6204-1407-4a87-a644-cad0f80c5851",
"terminalId": "A4000007",
"action": "purchase",
"totalAmount": "100"
}
]
}
}
Exemple de code pour envoyer une requête :
L’objet JSON correspond au paramètre msgRequest (requête de message) dans l’exemple de code ci-dessous. Si vous prévoyez d’utiliser cette fonction dans votre application, assurez-vous de chaîner (stringify) l’objet avant de le transmettre à la fonction, car cette fonction attend une chaîne de caractères (String).
Le nom du package diffère selon l’environnement dans lequel vous vous trouvez.
- com.moneris.payment.cert pour l’environnement de test.
- com.moneris.payment pour l’environnement de production.
public void dispatchCommand(String msgRequest) {
try {
Intent paymentIntent = new Intent();
paymentIntent.putExtra("request", msgRequest);
paymentIntent.setClassName("com.moneris.payment.cert",
"com.moneris.interact.InterActHandler");
startActivityForResult(paymentIntent, 123);
} catch (Exception ex) {
ex. printStackTrace();
}
}
Exemple de code pour recevoir la réponse :
La réponse se trouve dans le paramètre data (Données) dans l’exemple de code ci-dessous. Si vous prévoyez d’utiliser cette fonction dans votre application, assurez-vous d’appeler la fonction getStringExtra(“receipt”) sur votre data (Données) afin d’obtenir la réponse à partir de l’Intent (Intention) dans onActivityResult (l’événement de retour de l’activité).
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
String response;
response = data.getStringExtra("receipt");
} catch (Exception ex) {
ex.printStackTrace();
}
}
Exemple d’objet de réponse
{
"apiVersion": "3.0",
"statusCode": "example_statusCode",
"status": "example_status",
"dataId": "example_dataId",
"dataTimestamp": "1969-12-31 23:59:59",
"data": {
"response": [
{
"orderId": "example_orderId",
"transactionId": "example_transactionId",
"statusCode": "example_statusCode",
"status": "example_status",
"idempotencyKey": "example_idempotencyKey",
"completed": "true",
"responseCode": "example_responseCode",
"iso": "example_iso",
"approvedAmount": "1300",
"tenderType": "example_tenderType",
"cardType": "example_cardType",
"sequenceNum": "example_sequenceNum",
"realTimeUniqueId": "example_realTimeUniqueId",
"authCode": "example_authCode",
"formFactor": "example_formFactor",
"maskedPan": "example_maskedPan",
"action": "purchase",
"receipt": "example_receipt",
"receiptChoice": "PRINT"
}
]
}
}
Exemple d’erreur
S’il y a un problème avec la transaction, une réponse d’erreur sera envoyée détaillant le type d’erreur.
{
"apiVersion": "3.0",
"statusCode": "example_statusCode",
"status": "example_status",
"dataId": "example_dataId",
"dataTimestamp": "1969-12-31 23:59:59",
"data": {
"response": [
{
"idempotencyKey": "example_idempotencyKey",
"orderId": "example_orderId",
"statusCode": "example_statusCode",
"status": "example_status",
"linkId": "example_linkId",
"errorDetails": [
{
"errorCode": "example_errorCode",
"parameter": "example_parameter",
"value": "example_value",
"issue": "example_issue",
}
]
"completed": "true"
}
]
}
}

