Moneroo Standard est notre flux de paiement qui redirige votre client vers une page de paiement hébergée par Moneroo.
Voici comment cela fonctionne :
Depuis votre serveur, appelez le endpoint "initialiser le paiement" de notre API avec les détails du paiement.
Nous vous renvoyons un lien vers une page de paiement. Redirigez votre client vers ce lien pour effectuer le paiement.
Lorsque la transaction est terminée, nous redirigeons le client vers vous (vers return_url que vous avez fournie) avec les détails du paiement.
Étape 1 : Collecte des données de paiement
Tout d'abord, vous devez rassembler les données de paiement qui seront envoyées à votre API sous la forme d'un objet JSON.
Voici les champs à collecter :
Si ces informations ne sont pas fournies, le client peut être invité à les saisir au cours de la procédure de paiement, en fonction de la méthode de paiement sélectionnée.
Il doit s'agir d'un tableau de paires clé-valeur. Seules les chaînes de caractères sont autorisées.
S'il n'est pas fourni, tous les modes de paiement disponibles seront autorisés. Le tableau ne doit contenir que les modes de paiement pris en charge.
Vous pouvez utiliser soit restrict_country_code, soit restricted_phone, mais pas les deux. Ils sont mutuellement exclusifs.
Obligatoire si restricted_phone est fourni.
Étape 2 : Obtention d'un lien de paiement
Ensuite, initiez le paiement en appelant notre API avec les détails de paiement collectés (n'oubliez pas d'autoriser avec votre clé secrète).
Exemple de demande :
POST/v1/payments/initializeHost:https://api.moneroo.ioAuthorization:BearerYOUR_SECRET_KEYContent-Type:application/jsonAccept:application/json{"amount":100,"currency":"USD","description":"Payment for order #123","customer":{"email":"john@example.com","first_name":"John","last_name":"Doe" },"return_url":"https://example.com/payments/thank-you""metadata":{"order_id":"123","customer_id":"123" },"methods": ["qr_ngn", "bank_transfer_ngn"]}
Étape 3 : Redirection de l'utilisateur vers le lien de paiement
Il vous suffit de rediriger votre client vers le lien renvoyé dans data.link. Nous afficherons notre interface de paiement pour que le client puisse effectuer le paiement.
Étape 4 : Après le paiement
Une fois le paiement effectué (avec ou sans succès), cinq choses se produisent :
Nous redirigeons vers votre URL de retour avec le statut, monerooPaymentId, et monerooPaymentStatus dans les paramètres de la requête une fois que le paiement est terminé.
Nous vous enverrons un Webhook si vous l'avez activé. Pour plus d'informations sur les Webhooks et pour voir des exemples, consultez notre guide sur les Webhooks.
Nous enverrons un accusé de réception à votre client si le paiement a été effectué avec succès (sauf si vous l'avez désactivé).
Nous vous enverrons un email (sauf si vous l'avez désactivé).
Côté serveur, vous devez gérer la redirection et toujours vérifier l'état final de la transaction. Un exemple de vérification d'une transaction dans une application PHP avec notre backend SDK sera fourni plus loin.
Si vous avez activé les Webhooks, nous vous enverrons une notification pour chaque tentative de paiement échouée. C'est utile si vous souhaitez contacter ultérieurement les clients qui ont eu des difficultés à payer. Consultez notre guide des Webhooks pour un exemple.
Exemple
N'oubliez pas de remplacer YOUR_SECRET_KEY par votre véritable clé secrète.
Tous les exemples suivants doivent être réalisés dans le backend, ne jamais exposer votre clé secrète au public.
import requestsimport jsonurl ='https://api.moneroo.io/v1/payments/initialize'headers ={'Content-Type':'application/json','Authorization':'Bearer YOUR_SECRET_KEY''Accept':'application/json'}data ={"amount":100,"currency":"USD","description":"Payment for order #123","customer":{"email":"john@example.com","first_name":"John","last_name":"Doe"},"return_url":"https://example.com/payments/thank-you","metadata":{"order_id":"123","customer_id":"123",},"methods": ["qr_ngn","bank_transfer_ngn"]}response = requests.post(url, headers=headers, data=json.dumps(data))if response.status_code !=201:raiseException(f"Request failed with status {response.status_code}")checkout_url = response.json()['checkout_url']print(f"Redirect to: {checkout_url}")
packagemainimport ("bytes""encoding/json""net/http""fmt")funcmain() { data :=map[string]interface{}{"amount": 100,"currency": "USD","description": "Payment for order #123","customer": map[string]string{"email": "john@example.com","first_name": "John","last_name": "Doe", },"return_url": "https://example.com/payments/thank-you","metadata": map[string]string{"order_id": "123","customer_id": "123", },"methods": []string{"qr_ngn", "bank_transfer_ngn"}, } bytesRepresentation, _ := json.Marshal(data) req, _ := http.NewRequest("POST", "https://api.moneroo.io/v1/payments/initialize", bytes.NewBuffer(bytesRepresentation))
req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", "Bearer YOUR_SECRET_KEY") req.Header.Set("Accept", "application/json") client :=&http.Client{} response, _ := client.Do(req)defer response.Body.Close()var result map[string]interface{} json.NewDecoder(response.Body).Decode(&result)if response.StatusCode !=201 {panic(fmt.Sprintf("Request failed with status %d", response.StatusCode)) } fmt.Printf("Redirect to: %s", result["checkout_url"])}
constaxios=require('axios');constdata= {"amount":100,"currency":"USD","description":"Payment for order #123","customer": {"email":"john@example.com","first_name":"John","last_name":"Doe" },"return_url":"https://example.com/payments/thank-you","metadata": {"order_id":"123","customer_id":"123", },"methods": ["qr_ngn","bank_transfer_ngn"]};constoptions= { headers: {'Content-Type':'application/json','Authorization':'Bearer YOUR_SECRET_KEY''Accept': 'application/json' }};axios.post('https://api.moneroo.io/v1/payments/initialize', data, options).then((response) => {if (response.status !==201) {thrownewError(`Request failed with status ${response.status}`); }console.log(`Redirect to: ${response.data.checkout_url}`); }).catch((error) => {console.error(error); });