Mercado Pago
Mercado Pago Wallet の導入ガイド#
このページは、DEUNA と Mercado Pago Wallet を成功裏に統合するための完全なガイドを提供します。
Mercado Pago は、ラテンアメリカでの安全な取引を処理するように設計された Mercado Libre の決済プラットフォームです。ウォレットを通じて、ユーザーは資金やカードを保存し、迅速かつ効率的に支払いを行うことができます。
仕組み#
Mercado Pago Checkout
- 複数の支払い方法をサポート
- クレジットカードおよびデビットカード
- 現金支払い (OXXO, Pago Fácil など)
- 銀行振込 (SPEI, PSE など)
- 分割払い (Mercado Crédito) – 認証されたユーザーのみ
- Mercado Pagoの残高 – 認証されたユーザーのみ利用可能
要件#
以下の内容は、Mercado Pago Wallet との成功的な統合に必要なすべての要件をリストしています。
- 環境で使用:
- サンドボックス:
https://api.sandbox.deuna.io - 本番環境:
https://api.deuna.io
- サンドボックス:
統合手順#
技術要件が定義されたら、統合を開始できます。
1. 決済プロセッサの設定
-
Mercado Pago Wallet をお使いの 接続に追加.
-
「Astropay」を検索 Mercado Pago Wallet お使いのビジネスアカウントの資格情報を入力
-
ウォレットで利用可能な支払い方法の種類を選択します。
サポートされている支払い方法(国別)
Payment Method
🇦🇷 アルゼンチン
🇧🇷 ブラジル
🇨🇱 チリ
🇨🇴 Colombia
🇲🇽 Мексика
🇵🇪 ペルー
🇺🇾 ウruguay
Cuenta
Mercado Pago
Mercado Pago
Mercado Pago
Mercado Pago
Mercado Pago
Mercado Pago
Mercado Pago
デジタルクレジット
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
–
銀行振込
–
Pix
–
PSE
CLABE
Yape
–
クレジットカード
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
デビットカード
Visa, Mastercard, Maestro, Cabal
Caixa Virtual Debit*, Elo*
Visa, Mastercard, RedCompra
Visa, Mastercard
Visa, Mastercard
Visa, Mastercard
Visa
プリペイドカード
Visa, Mastercard
Visa, Mastercard
Visa, Mastercard
Visa, Mastercard
Visa, Mastercard, Mercado Pago
Visa, Mastercard
Visa, Mastercard
現金支払い(チケット)
Rapipago*, Pago Fácil*
Boleto
–
Efecty
OxxoPay (Cash)
–
Abitab, Red Pagos
バウチャーカード
–
Alelo, Pluxee
–
–
–
–
–
暗号通貨
–
Ethereum, Bitcoin
–
–
–
–
–
-
設定された有効期限を持つ、好みの支払い方法とオフライン支払い方法を設定します。
-
バイナリモード
バイナリモード は、Mercado Pagoで支払いステータスの管理を簡素化するための設定です。有効にすると、支払いには最終ステータスが2つしかありません。 approved または rejected、中間ステータス(例: pending または in_process.
デフォルトでは、DEUNAとMercado Pagoの統合は、 バイナリモードは無効です。)の可能性を排除します。したがって、中間支払いステータス(例:
pendingまたはin_process)を受け取ることができ、これは、商人のフローで適切に処理する必要があります。
2. 注文の作成
購入するには、まずDEUNAで注文を作成する必要があります。
以下の手順に従ってください。 注文の作成.
La API devolverá un order_token を返します。
Campos requeridos:
| フィールド | 説明 | Value |
|---|---|---|
order.store_code | ユニークなストアコード | all |
order.payment_method | DEUNAの支払い方法の種類。 | mercadopago_wallet |
order.items_total_amount | 税金や割引を除いた商品の合計金額。 | 2000 |
Consideraciones:
- Acerca de
order.items:total_amount.original_amountdebe serunit_price.amount * quantity.total_amount.amountdebe ser((unit_price.amount + tax_amount.amount) * quantity) - total_amount.total_discount.total_amount.total_discountes el valor total de los descuentos para la cantidad de artículos.
order.items_total_amountこれは、商品の単価の合計です。この金額に加えて、order.total_tax_amountおよびマイナスorder.discount_amountが一致する必要がありますorder.total_amount.order.sub_totalこれは、商品の単価から割引を差し引いた金額です。この金額に加えて、order.total_tax_amountが一致する必要がありますorder.total_amount.
商人のサイトからの返送
注文を作成する際に、order.callback_urlsを設定して、Mercado Pagoが支払い結果に応じて、購入者をあなたのウェブサイトにリダイレクトできるようにします。以下の形式で、3つのコールバックURL(on_success、on_pending、on_failed)を提供してください。
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))
}商人のアプリからの返送
iOS/Androidフローで、Mercado Pagoのネイティブアプリを開く場合、同じcallback_urlsを、アプリの深層リンクスキームを使用して設定し、支払い結果がわかったときに購入者をあなたのアプリケーションに戻すことができます。
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. 統合タイプを選択
注文を作成した後、以下のいずれかのサポートされているSDKプラットフォームを通じて、DEUNAのPayment Widgetを使用して決済処理を行うことができます。
利用可能なSDK統合: