Pago du Mercado
Commencer avec Mercado Pago Wallet#
Cette page fournit un guide complet pour intégrer avec succès Mercado Pago Wallet avec DEUNA.
Mercado Pago est la plateforme de paiement de Mercado Libre, conçue pour traiter en toute sécurité les transactions en Amérique latine. Grâce à son portefeuille, les utilisateurs peuvent stocker des fonds et des cartes pour effectuer des paiements rapidement et efficacement.
Comment ça marche#
Mercado Pago Checkout
- Soutient plusieurs méthodes de paiement
- Cartes de crédit et de débit
- Paiements en espèces (OXXO, Pago Fácil, etc.)
- Transferts bancaires (SPEI, PSE, etc.)
- Acheter maintenant Payer plus tard (Mercado Crédito) – disponible pour les utilisateurs authentifiés
- Mercado Solde du compte Pago – disponible pour les utilisateurs authentifiés
Exigences#
Le contenu suivant énumère toutes les exigences pour une intégration réussie avec Mercado Pago Wallet.
- Environnements:
- Bac à sable :
https://api.sandbox.deuna.io - Fabrication :
https://api.deuna.io
- Bac à sable :
Étapes d'intégration#
Maintenant que les exigences techniques sont définies, vous pouvez commencer l'intégration.
1. Configurez le processeur de paiement
-
Ajouter Mercado Pago Wallet à votre Connexions dans l'administrateur DEUNA.
-
Rechercher Porte-monnaie Mercado Pago et entrez les informations d'identification de votre compte professionnel.
-
Sélectionnez les types de méthodes de paiement à mettre à disposition dans le portefeuille.
Modes de paiement soutenus par pays
Mode de paiement
Argentine
Brésil
Chili
Colombie
- Mexique
Pérou
Uruguay
Compte Monnaie
Pago du Mercado
Pago du Mercado
Pago du Mercado
Pago du Mercado
Pago du Mercado
Pago du Mercado
Pago du Mercado
Crédit numérique
Mercado Crédito
Mercado Crédito
Mercado Crédito
Mercado Crédito
Mercado Crédito
Mercado Crédito
Mercado Crédito
ATM
–
–
–
–
Bancomer, Citibanamex, Santander
PagoEfectivo
–
Virement bancaire
–
Pix
–
PSE
CLABE
Pique
–
Cartes de crédit
Visa, Mastercard, Amex, Diners, Naranja, Cabal, Tarjeta Shopping, Cencosud, Argencard, CMR
Visa, Mastercard, Amex, Hipercard, Elo
Visa, Mastercard, Amex, Magna, Presto
Visa, Mastercard, Amex, Diners, Codensa
Visa, Mastercard, Amex
Visa, Mastercard, Diners, Amex
Visa, Mastercard, Oca, Amex, Creditel, Líder
Cartes de débit
Visa, Mastercard, Maestro, Cabale
Débit virtuel de Caixa*, Elo*
Visa, Mastercard, RedCompra
Visa, Mastercard
Visa, Mastercard
Visa, Mastercard
Visa
Cartes prépayées
Visa, Mastercard
Visa, Mastercard
Visa, Mastercard
Visa, Mastercard
Visa, Mastercard, Mercado Pago
Visa, Mastercard
Visa, Mastercard
Paiements en espèces (Circelles)
Rapipago*, Pago Fácil*
Boleto
–
Efectieuse
OxxoPay (en espèces)
–
Abitab, Pagos rouge
Cartes-bons
–
Alélo, Pluxee
–
–
–
–
–
Cryptomonnaie
–
Ethereum, Bitcoin
–
–
–
–
–
-
Définissez le délai d'expiration pour les préférences et les méthodes de paiement hors ligne.
-
Mode binaire
Mode binaire est un paramètre Mercado Pago qui simplifie la gestion du statut de paiement. Lorsque le paiement est activé, il ne peut y avoir que deux statuts définitifs : approved ou rejected, éliminant la possibilité de statuts intermédiaires comme pending ou in_process.
Par défaut, l'intégration de DEUNA avec Mercado Pago fonctionne avec Mode binaire désactivé. Cela signifie qu'il est possible de recevoir des paiements intermédiaires, tels que
pendingouin_process, qui doit être manipulée de façon appropriée dans le flux du marchand.
2. Créez une commande
Pour faire un achat, vous devez d'abord créer une commande dans DEUNA.
Suivez les étapes pour Créer une commande.
L'API retournera un order_token qui est utilisé tout au long du flux.
Champs requis :
| Champ | Descriptif | Valeur |
|---|---|---|
order.store_code | Code de magasin unique | all |
order.payment_method | Type de mode de paiement de DEUNA. | mercadopago_wallet |
order.items_total_amount | Montant total des articles sans taxes ni rabais. | 2000 |
Considérations:
- À propos
order.items:total_amount.original_amountdoit êtreunit_price.amount * quantity.total_amount.amountdoit être((unit_price.amount + tax_amount.amount) * quantity) - total_amount.total_discount.total_amount.total_discountest la valeur totale des rabais pour la quantité d'articles.
order.items_total_amountest la somme des prix unitaires des articles. Ce montant, majoréorder.total_tax_amountet moinsorder.discount_amount, doit correspondreorder.total_amount.order.sub_totalest la somme du prix unitaire des articles moins les rabais. Ce montant, majoréorder.total_tax_amount, doit correspondreorder.total_amount.
Retour du site marchand
Lors de la création de l'ordre, peuplez l'ordre. callback urls afin que Mercado Pago puisse rediriger l'acheteur vers votre site après chaque résultat de paiement. Fournissez les trois URLs de callback (sur succès, en en en en fin, en failed) comme indiqué ci-dessous.
curl --request POST \
--url https://api.sandbox.deuna.io/merchants/orders \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"order": {
...
"callback_urls": {
"on_success": "https://yourdomain.com/success",
"on_pending": "https://yourdomain.com/pending",
"on_failed": "https://yourdomain.com/failed"
},
...
}
}'const response = await fetch("https://api.sandbox.deuna.io/merchants/orders", {
method: "POST",
headers: {
"accept": "application/json",
"content-type": "application/json"
},
body: "{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"https://yourdomain.com/success\",\n \"on_pending\": \"https://yourdomain.com/pending\",\n \"on_failed\": \"https://yourdomain.com/failed\"\n },\n ...\n }\n }"
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();import requests
response = requests.request(
"POST",
"https://api.sandbox.deuna.io/merchants/orders",
headers={
"accept": "application/json",
"content-type": "application/json"
},
data="{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"https://yourdomain.com/success\",\n \"on_pending\": \"https://yourdomain.com/pending\",\n \"on_failed\": \"https://yourdomain.com/failed\"\n },\n ...\n }\n }",
)
response.raise_for_status()
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.deuna.io/merchants/orders",
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"accept: application/json",
"content-type: application/json"
],
CURLOPT_POSTFIELDS => "{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"https://yourdomain.com/success\",\n \"on_pending\": \"https://yourdomain.com/pending\",\n \"on_failed\": \"https://yourdomain.com/failed\"\n },\n ...\n }\n }"
]);
$response = curl_exec($curl);
curl_close($curl);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sandbox.deuna.io/merchants/orders"))
.header("accept", "application/json")
.header("content-type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"https://yourdomain.com/success\",\n \"on_pending\": \"https://yourdomain.com/pending\",\n \"on_failed\": \"https://yourdomain.com/failed\"\n },\n ...\n }\n }"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
request, err := http.NewRequest("POST", "https://api.sandbox.deuna.io/merchants/orders", strings.NewReader("{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"https://yourdomain.com/success\",\n \"on_pending\": \"https://yourdomain.com/pending\",\n \"on_failed\": \"https://yourdomain.com/failed\"\n },\n ...\n }\n }"))
if err != nil { panic(err) }
request.Header.Set("accept", "application/json")
request.Header.Set("content-type", "application/json")
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}Retour de l'application Marchand
Pour iOS/Android flows qui ouvrent l'application native Mercado Pago, configurez le même callback urls en utilisant les schémas de liens profonds de votre application afin que l'acheteur puisse retourner à votre application une fois que le résultat de paiement est connu.
curl --request POST \
--url https://api.sandbox.deuna.io/merchants/orders \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"order": {
...
"callback_urls": {
"on_success": "yourapp://success",
"on_pending": "yourapp://pending",
"on_failed": "yourapp://failed"
},
...
}
}'const response = await fetch("https://api.sandbox.deuna.io/merchants/orders", {
method: "POST",
headers: {
"accept": "application/json",
"content-type": "application/json"
},
body: "{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"yourapp://success\",\n \"on_pending\": \"yourapp://pending\",\n \"on_failed\": \"yourapp://failed\"\n },\n ...\n }\n }"
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();import requests
response = requests.request(
"POST",
"https://api.sandbox.deuna.io/merchants/orders",
headers={
"accept": "application/json",
"content-type": "application/json"
},
data="{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"yourapp://success\",\n \"on_pending\": \"yourapp://pending\",\n \"on_failed\": \"yourapp://failed\"\n },\n ...\n }\n }",
)
response.raise_for_status()
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.deuna.io/merchants/orders",
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"accept: application/json",
"content-type: application/json"
],
CURLOPT_POSTFIELDS => "{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"yourapp://success\",\n \"on_pending\": \"yourapp://pending\",\n \"on_failed\": \"yourapp://failed\"\n },\n ...\n }\n }"
]);
$response = curl_exec($curl);
curl_close($curl);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sandbox.deuna.io/merchants/orders"))
.header("accept", "application/json")
.header("content-type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"yourapp://success\",\n \"on_pending\": \"yourapp://pending\",\n \"on_failed\": \"yourapp://failed\"\n },\n ...\n }\n }"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
request, err := http.NewRequest("POST", "https://api.sandbox.deuna.io/merchants/orders", strings.NewReader("{\n \"order\": {\n ...\n \"callback_urls\": {\n \"on_success\": \"yourapp://success\",\n \"on_pending\": \"yourapp://pending\",\n \"on_failed\": \"yourapp://failed\"\n },\n ...\n }\n }"))
if err != nil { panic(err) }
request.Header.Set("accept", "application/json")
request.Header.Set("content-type", "application/json")
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}3. Choisissez le type d'intégration
Après avoir créé une commande, vous pouvez traiter les paiements à l'aide de notre widget de paiement via l'une de nos plateformes SDK prises en charge :
Intégrations SDK disponibles :