Risorse di sviluppo

API Sviluppo

API riferimento, backend e esempi mobili, e i ritorni di pagamento e le notifiche in un unico luogo. PHPdi Node.js Pythondi C#, Java, iOS Swift e Android Kotlin Il sostegno ON_SITE e HPP.

Resto API • Presentazione di controllo

Un solo ordine di pagamento. Scegli ON_SITE o HPP.

Crea l'ordine sul tuo server, salva il suo legame al tuo ordine locale, quindi scegli come il cliente vede il pagamento. order_id.

Vedi HPP Il ritorno sincronico e ON_SITE/HPP Il trattamento di notifiche asincronecon PHPdi Node.js PythonC# e Java Il codice.

ON_SITE

Finestra di pagamento nel tuo checkout

Mostra l'importo esatto, l'indirizzo, la rete e QR in un dialogo sul tuo dominio. le tue domande di backend MochiPay e restituisce una visione di pagamento sicura.

Visualizza HTML + PHP →
HPP

Reindirizza al checkout MochiPay

Il tuo server dirige il cliente a payment_urlDopo il pagamento, verifica il ritorno o la notifica tramite richiesta autentica.

Vedi il PHP Ristrutturazione →

I rilasciati qui sotto provengono da checkout.php e gli assistenti legati in PHP Demo 1.1.4 (PHP 7.0–8.4In primo luogo, creare un ordine con order.php; il suo risultato fornisce collegamenti a entrambi gli esempi. i negozi di produzione dovrebbero risolvere l'ordine locale autorizzato dalla loro sessione/database e completarlo attraverso una transazione idempotente.

Ristrutturazione dopo la verifica server

HPP · PHP

Validare il legame e la destinazione dell'ordine memorizzati, quindi inviare l'indirizzo Localizzazione prima di qualsiasi uscita della pagina.

checkout.php · HPP branch
// checkout.php: after loading the saved attempt and
// verifying its token, order binding and payment URL.
// $payment is the authenticated Query Order response.
if ($mode === 'HPP') {
    header('Location: ' . $payment['payment_url'], true, 303);
    exit; // Send the header before any HTML output.
}
// Verify the notification/return server-side before fulfillment.

Il file completo carica l'intento salvato e valida il suo token, la query autenticata e l'attesa payment_url prima di questa filiale.

Inserisci il dialogo nella tua pagina

ON_SITE · PHP + HTML

Include the local dialog assets in your checkout HTML. The browser talks to your local poll endpoint; it never signs requests or receives API credentials.

checkout.php · local dialog assets
// checkout.php: use the SAME saved reference/token.
$pollUrl = 'order.php?' . http_build_query([
    'view' => $reference, 'token' => $token, 'poll' => 1
], '', '&', PHP_QUERY_RFC3986);
$completeUrl = 'callback.php?' . http_build_query([
    'mode' => 'return', 'merchant_order_id' => $reference
], '', '&', PHP_QUERY_RFC3986);
$config = json_encode([
    'poll' => $pollUrl, 'complete' => $completeUrl
], JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);
?>
<!-- Inside your own checkout page: -->
<link rel="stylesheet" href="portable/onsite.css">
<button id="reopen" type="button">Open payment dialog</button>
<script>window.MochiPayConfig = <?php echo $config; ?>;</script>
<script src="portable/qrcode.min.js"></script>
<script src="portable/onsite.js"></script>

onsite.js opens the dialog over your existing page. Closing it leaves checkout visible; the Open payment dialog button reopens the same payment.

Il tuo backend verifica l'ordine

Autorizzare il riferimento/tocen salvato, la query da parte del memorizzato MochiPay order_id, e confrontare l'importo/moneta originale, l'attività/network, l'indirizzo e l'impostazione esatta.Ritorna solo una vista di pagamento sicura con strisce decimali.

order.php · local polling endpoint
// order.php?view=...&token=...&poll=1 (server-side)
// The demo has already authorized the saved attempt/token.
$response = mochipay_query_order(
    'order_id', $record['snapshot']['order_id']
);
if (!$response['ok'] || !mochipay_bound($record, $response['data'])) {
    http_response_code(403);
    exit;
}
// Also check the expected received amount before accepting PAID.
header('Content-Type: application/json; charset=utf-8');
header('Cache-Control: no-store');
echo json_encode([
    'success' => true,
    'data' => MochiPayPortable::view($response['data'])
]); // Safe view: decimal strings; no credentials/customer fields.

The full demo additionally verifies the received amount for PAID. callback.php verifies notifications and browser returns. A screenshot, redirect or browser flag is never proof of payment.

autenticazione

Tutti i API La richiesta deve includere il commerciante API La chiave e la base64Il codice HMAC-SHA256 di firma.

TitoloobbligatorioDescrizione
X-Mochi-KeySìIl tuo commerciante API La chiave.
X-Mochi-SignatureSìbase64Il codice HMAC-SHA256 di firma.
Content-TypeRichiesta postaleapplication/json
Mantieni il tuo API Il segreto sul server. Non esprimere mai nel browser JavaScriptapplicazioni mobili o codice di fonte pubblica.

Firma

Per creare l'ordine, segnala la matura esatta JSON per l'ordine di query, iscriviti alla riga di query cruda senza la guida ?.

SIGNATURE FORMULA
Base64(HMAC-SHA256(UTF8(signing_text), UTF8(api_secret)))

Valute supportate

Il metodo di pagamento seleziona la criptovaluta e la rete blockchain utilizzata per pagare.

Ordine di correnze

28 Valute fiat supportate

Utilizzare uno di questi codici ISO esatti nel currency Il campo.

USDEURGBPCAD AUDNZDJPYCNY HKDSGDCHFSEK NOKDKKPLNCZK HUFAEDSARINR IDRTHBMYRPHP KRWBRLMXNZAR
CRYPTO ORDER CURRENCIES

Cryptocurrency prezzo

Gli ordini possono anche essere prezzi direttamente in queste criptovalute.

USDTUSDCBTCETHSOL
Metodi di pagamento

Cryptocurrency e combinazioni di rete supportate

Invia uno di questi valori esatti nel payment_method Il campo.

USDT_TRC20USDT di TRON
USDC_ERC20USDC di Ethereum
BTC_BITCOINNati BTC di Bitcoin
ETH_ERC20Nati ETH di Ethereum
SOL_SOLANANati SOL di Solana
Regola di conversione: Se la valuta di ordine e l'attività di pagamento sono gli stessi, MochiPay utilizza una percentuale di 1 In caso contrario, il tasso di cambio memorizzato e il marchio del commerciante vengono applicati quando l'ordine è creato. Visualizza le attuali tasse di cambio di riferimento
Valore dell'ordineMetodo di pagamentoRisultati
49.90 USDUSDT_TRC20Utilizzare il deposito USD → USDT Tasso e marcatura commerciale.
100 EURBTC_BITCOINUtilizzare l’euro memorizzato BTC Tasso e marcatura commerciale.
25 USDCUSDC_ERC20Nessuna conversione. il tasso di cambio è 1.

Crea ordine

Creare un ordine di pagamento con un URL di pagamento ospitato e le istruzioni di pagamento necessarie per un'interfaccia sul sito.

POST https://mochi.bz/api/v1/orders/create

Parametri di richiesta

La moneta di ordine e il metodo di pagamento sono concetti diversi. amount e currency Definisce il valore originale dell'ordine del commerciante. payment_method definisce la criptovaluta e la rete blockchain utilizzata dal cliente per pagare. 49.90 USD con USDT_TRC20 Significa che a USD- l'ordine nominato viene pagato con l'importo calcolato di USDT su il TRON di rete.

WEB82.3: authenticated create/query JSON advertises recovery_contract=merchant-reference-v1. Query an uncertain legacy reference first. Only 404 ORDER_NOT_FOUND with this contract allows replay of its unchanged reference/payload. Query errors and older servers do not authorize blind creation. Conflicting financial fields return MERCHANT_ORDER_ID_CONFLICT; historical duplicates return MERCHANT_ORDER_ID_AMBIGUOUS. Deploy the website API before the recovery plugins.

ParametriobbligatorioTipo / lunghezzaDescrizione
merchant_order_idSìStriscia · 1–100One unique, case-sensitive reference per purchase. On WEB82.3, repeating the same reference and financial fields reuses its unique invoice. A genuinely new purchase uses a different reference, even for the same buyer and amount. Optional request_id additionally binds the full creation payload.
amountSìIl decimale (28,8)Positive original order amount. Fiat normally uses 2 decimal places; supported cryptocurrencies may use up to 8.
currencySìStriscia · 1–20Codice di valuta originale di ordine. può essere fiat, come USD o EURCryptocurrencies, come ad esempio USDT o USDC.
payment_methodSìAttività ≤20 + rete ≤30Pagamento di criptovalute e blockchain network in ASSET_NETWORK Il formato, come USDT_TRC20 o USDC_ERC20.
unique_amount_directionNoUP o DOWNDirezione utilizzata per l'adeguamento di piccole quantità uniche. UP.
product_typeNoPHYSICAL o DIGITAL_SERVICETipo di ordine visualizzato al check-out. Defatti a DIGITAL_SERVICEI campi di spedizione rimangono opzionali per entrambi i tipi.
descriptionNoStriscia · 0–500Descrizione dell’ordine umano leggibile.
product_infoNoJSON/string · nvarchar(max)Prodotto, cartone o metadati personalizzati. HTTP L'organismo di richiesta non deve superare 65,536 di byte.
customer_emailNoStriscia · 0–255Indirizzo e-mail del cliente.Quando fornito, deve essere un vero e-mail.
customer_phoneNoStriscia · 0–50Numero di telefono del cliente.
first_nameNoStriscia · 0–100Il primo nome del cliente.
last_nameNoStriscia · 0–100Il nome del cliente.
companyNoStriscia · 0–200Nome del cliente o di un’organizzazione.
countryNoStriscia · 0–100Paese o regione del cliente.
stateNoStriscia · 0–100Stato, provincia o regione del cliente.
cityNoStriscia · 0–100Città del cliente.
address1NoStriscia · 0–500Linea di indirizzo principale del cliente.
address2NoStriscia · 0–500Linea di indirizzo aggiuntivo del cliente.
postal_codeNoStriscia · 0–30Il cliente postale o ZIP Il codice.
request_idNoStriscia · 1–64Opzionale chiave di ritorno, scoperto al tuo commerciante. iscriviti con il JSON Riavviare la stessa chiave e il carico di pagamento dopo un timout. Richiesta di deduplicazione.
notify_urlNoStriscia · 0–1000assoluto http:// o https:// asynchronous server notification URL. Only public destinations are allowed; localhost, private/reserved IPs and redirects are blocked.
redirect_urlNoStriscia · 0–1000URL di ritorno assoluto utilizzato dopo un pagamento di successo.
customer_ipNoIPv4/ IPv6 · 0–45IP del cliente fornito dal commerciante. MochiPay Inoltre, si registrano i API Richiedi IP separatamente.

Richiesta di esempio

JSON
{
  "merchant_order_id": "ORDER-20260919-001",
  "amount": 49.90,
  "currency": "USD",
  "payment_method": "USDT_TRC20",
  "unique_amount_direction": "UP",
  "product_type": "DIGITAL_SERVICE",
  "description": "MochiPay order",
  "customer_email": "customer@example.com",
  "redirect_url": "https://merchant.example.com/payment/return"
}
C# – Creare ordine
string baseUrl = "https://mochi.bz";
string body = @"{
  ""merchant_order_id"": ""ORDER-20260920-001"",
  ""amount"": 49.90,
  ""currency"": ""USD"",
  ""payment_method"": ""USDT_TRC20"",
  ""unique_amount_direction"": ""UP"",
  ""product_type"": ""DIGITAL_SERVICE"",
  ""description"": ""Example order"",
  ""notify_url"": ""https://merchant.example.com/mochipay/notify"",
  ""redirect_url"": ""https://merchant.example.com/payment/return""
}";

string signature;
using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret)))
{
    signature = Convert.ToBase64String(
        hmac.ComputeHash(Encoding.UTF8.GetBytes(body)));
}

using (var client = new HttpClient())
using (var request = new HttpRequestMessage(
    HttpMethod.Post, baseUrl + "/api/v1/orders/create"))
{
    request.Headers.Add("X-Mochi-Key", apiKey);
    request.Headers.Add("X-Mochi-Signature", signature);
    request.Content = new StringContent(body, Encoding.UTF8, "application/json");
    HttpResponseMessage response = await client.SendAsync(request);
    string json = await response.Content.ReadAsStringAsync();
}
PHP 7.0–8.4 • Creare ordine
<?php
$baseUrl = 'https://mochi.bz';
$apiKey = 'YOUR_API_KEY';
$apiSecret = 'YOUR_API_SECRET';

$payload = [
    'merchant_order_id' => 'ORDER-20260920-001',
    'amount' => '49.90',
    'currency' => 'USD',
    'payment_method' => 'USDT_TRC20',
    'unique_amount_direction' => 'UP',
    'product_type' => 'DIGITAL_SERVICE',
    'description' => 'Example order',
    'notify_url' => 'https://merchant.example.com/mochipay/notify',
    'redirect_url' => 'https://merchant.example.com/payment/return'
];

$body = json_encode($payload, JSON_UNESCAPED_SLASHES);
$signature = base64_encode(
    hash_hmac('sha256', $body, $apiSecret, true)
);

$ch = curl_init($baseUrl . '/api/v1/orders/create');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'X-Mochi-Key: ' . $apiKey,
        'X-Mochi-Signature: ' . $signature
    ],
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_TIMEOUT => 30
]);

$json = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);

if ($json === false) {
    throw new RuntimeException($error);
}

// Preserve decimal JSON numbers as text before decoding.
$json = preg_replace(
    '/("(?:amount|base_pay_amount|pay_amount|received_amount|exchange_rate|rate_markup_percent|unique_amount_delta)"\s*:\s*)(-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?)(?=\s*[,}])/',
    '$1"$2"', $json
);
$result = json_decode($json, true);
if ($httpCode < 200 || $httpCode >= 300 || empty($result['success'])) {
    throw new RuntimeException('MochiPay request failed. Review before retrying creation.');
}
?>

Risposta di successo

campoTipo / lunghezzaDescrizione
successdi booleanE’ vero quando la creazione è riuscita.
order_idStriscia · 32MochiPay sistema identificier. memorizzare con la tua ordine locale.
merchant_order_idString · ≤100Il tuo riferimento originale del commerciante.
product_typeString · ≤20fisico o DIGITAL_SERVICE.
statusString · ≤20Lo stato di pagamento attuale.
amountIl decimale (28,8)Original order amount; preserve decimal precision.
currencyString · ≤20Valuta di prezzo originale.
base_pay_amountIl decimale (28,8)Conversione prima dell'aggiunta unica.
unique_amount_deltaIl decimale (28,8)Segnato adeguamento corrispondente.
unique_amount_directionString · ≤10In alto o in basso.
pay_amountIl decimale (28,8)Quantità esatta della catena da visualizzare e inviare. non girare.
payment_methodStringereAsset/network selezionato, ecc. USDT_TRC20.
payment_addressString · ≤255Ricevere l'indirizzo per questo pagamento e la rete.
payment_urlString e URLHPP URL. On-site utilizza le stesse istruzioni di ordine.
expires_atData di tempoEsecuzione in formato yyyy-MM-dd HH:mm:ss.
HTTP 200 · JSON
{
  "success": true,
  "order_id": "41ad45477bd444f3bd89f0bab7f571bb",
  "merchant_order_id": "ORDER-20261003-001",
  "product_type": "DIGITAL_SERVICE",
  "status": "WAITING_PAYMENT",
  "amount": 49.90,
  "currency": "USD",
  "base_pay_amount": 49.90,
  "unique_amount_delta": 0.001,
  "unique_amount_direction": "UP",
  "pay_amount": 49.901,
  "payment_method": "USDT_TRC20",
  "payment_address": "TExampleReceivingAddressForIllustrationOnly",
  "payment_url": "https://mochi.bz/pay/41ad45477bd444f3bd89f0bab7f571bb",
  "expires_at": "2026-10-03 15:30:00"
}

Ordine di Query

Ritorna un ordine di proprietà del commerciante autenticato utilizzando esattamente un identificatore di ordine.

GET https://mochi.bz/api/v1/orders/query
Parametri di QueryobbligatorioTipo / lunghezzaDescrizione
order_idUno dei dueStriscia · 32MochiPay Ordine di identificazione.
merchant_order_idUno dei dueStriscia · 1–100L'ordine del commerciante è identificato.Se è stato riutilizzato, viene restituito il nuovo ordine di corrispondenza.
Utilizzo order_id once stored. After an uncertain Create response, query the same unique merchant reference before deciding what happened; on WEB82.3, its merchant-reference-v1 contract permits safe recovery with the same purchase reference and financial fields. Only authenticated404 ORDER_NOT_FOUND with this contract authorizes legacy replay; older servers and query errors do not. Send only one identifier. Sign the exact raw query string, for example merchant_order_id=ORDER-20260919-001.

Esempi di Query

C# · Chiedi ordine
string baseUrl = "https://mochi.bz";
string query = "merchant_order_id=ORDER-20260919-001";

using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret)))
{
    string signature = Convert.ToBase64String(
        hmac.ComputeHash(Encoding.UTF8.GetBytes(query)));

    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("X-Mochi-Key", apiKey);
        client.DefaultRequestHeaders.Add("X-Mochi-Signature", signature);
        string json = await client.GetStringAsync(
            baseUrl + "/api/v1/orders/query?" + query);
    }
}
PHP 7.0–8.4 • Chiedi ordine
<?php
$baseUrl = 'https://mochi.bz';
$apiKey = 'YOUR_API_KEY';
$apiSecret = 'YOUR_API_SECRET';
$query = http_build_query(
    ['merchant_order_id' => 'ORDER-20260919-001'],
    '',
    '&',
    PHP_QUERY_RFC3986
);
$signature = base64_encode(
    hash_hmac('sha256', $query, $apiSecret, true)
);

$ch = curl_init($baseUrl . '/api/v1/orders/query?' . $query);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-Mochi-Key: ' . $apiKey,
        'X-Mochi-Signature: ' . $signature
    ],
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_TIMEOUT => 30
]);

$json = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);

if ($json === false) {
    throw new RuntimeException($error);
}

// Preserve decimal JSON numbers as text before decoding.
$json = preg_replace(
    '/("(?:amount|base_pay_amount|pay_amount|received_amount|exchange_rate|rate_markup_percent|unique_amount_delta)"\s*:\s*)(-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?)(?=\s*[,}])/',
    '$1"$2"', $json
);
$result = json_decode($json, true);
if ($httpCode < 200 || $httpCode >= 300 || empty($result['success'])) {
    throw new RuntimeException('MochiPay request failed. Review before retrying creation.');
}
?>

Campi di risposta di successo

La domanda è tornata wallet_type e network separately; Create Order returns their combined payment_methodConfronta con il metodo salvato sul tuo ordine locale.Ritorna solo i campi di pagamento necessari al browser del cliente.

campoTipo / lunghezzaDescrizione
order_idStriscia · 32MochiPay Ordine di identificazione.
merchant_order_idString · ≤100Identificare l’ordine del commerciante.
sourceString · ≤20La fonte di ordine, come API.
descriptionString · ≤500Descrizione del ordine.
product_typeString · ≤20PHYSICAL o DIGITAL_SERVICE.
product_infoJSONString / NullInformazioni sul prodotto o sulla cartella fornite quando è stata creata l'ordine.
statusString · ≤20Statuto di pagamento generale.
merchant_statusString · ≤50Commerciante faccia ordine.
amountIl decimale (28,8)L’originale quantità di ordine.
currencyString · ≤20La moneta di ordine originale, come USD, EUR, USDT o USDC.
base_pay_amountIl decimale (28,8)Conversione del pagamento prima dell'adeguamento unico di matching.
unique_amount_deltaIl decimale (28,8)Piccola somma firmata aggiunta o ritirata dalla somma di base.
unique_amount_directionString · ≤10UP o DOWN.
pay_amountIl decimale (28,8)Quantità esatta di criptovaluta che il cliente deve pagare.
received_amountIl decimale (28,8)La quantità di criptovaluta è stata ricevuta finora.
exchange_rateIl decimale (38,18)Lo snapshot di cambio è usato quando è stato creato l'ordine.
rate_markup_percentIl decimale (9,4)Commercial rate markup snapshot utilizzato per l'ordine.
wallet_typeString · ≤20Attività di pagamento: USDT, USDC, BTC, ETH o SOL.
networkString · ≤30Blockchain, come ad esempio TRC20 o ERC20.
payment_addressString · ≤255Il venditore riceve l'indirizzo selezionato per questo ordine.
tx_hashString / zero · ≤255L'Hash di transazione di pagamento del cliente è stato individuato.
confirmationsTuttoL’attuale numero di conferma blockchain.
customer_email … postal_codeString / NullCliente opzionale e campi di spedizione forniti alla creazione di ordine.
payment_urlString e URLHPP checkout URL; on-site integrations query the same order for status and payment instructions.
expires_atData di tempoOrdinare il tempo di scadenza.
paid_atData di scadenza / nullTempo di completamento del pagamento.
created_atData di tempoOrdinare il tempo di creazione.
updated_atData di tempoUltimo tempo di aggiornamento.

Esempi di codice

PHPdi Node.js PythonC# e .NET Framework. Java, iOS Swift e Android KotlinUn sostegno di pagamento salvato ON_SITE e HPP.

PHP SDK di Packagist

Installare il PHP SDK con Composer.

Creare e chiedere ordini di pagamento dalla tua PHP Sito di lavoro: Keep API Credenziali sul tuo server.

v1.0.0 · PHP 7.4+ · MIT

composer require mochipay/php-sdk:^1.0

Scarica gratuitamente. iscrizione per i pagamenti dal vivo.

Visualizza i piani di abbonamento

Scegliere il pacchetto sorgente per la tua applicazione

Un attuale ZIP per linguaggio o piattaforma mobile. sono incluse le istruzioni di configurazione in inglese. i plug-ins del negozio nativo rimangono separati e le integrazioni esistenti continuano a funzionare.

Servizio demo ON_SITE + HPP

PHP

7.0–8.4

Originale PHP Routes: order.php, checkout.php e callback.php

Scarica ZIP
Servizio demo ON_SITE + HPP

Node.js

22+

Routes mobili/backend comuni

Scarica ZIP
Servizio demo ON_SITE + HPP

Python

3.10+

Routes mobili/backend comuni

Scarica ZIP
Servizio demo ON_SITE + HPP

C# e .NET Framework

4.6.1 / VS2019

Routes mobili/backend comuni

Scarica ZIP
Servizio demo ON_SITE + HPP

Java

Jdc17+

Routes mobili/backend comuni

Scarica ZIP
La fonte mobile ON_SITE + HPP

iOS Swift

iOS15+ / Xcode14+

Utilizzare un backend comune; solo il progetto di fonte

Scarica ZIP
La fonte mobile ON_SITE + HPP

Android Kotlin

API26+ / SDK35 / JDK17

Utilizzare un backend comune; solo il progetto di fonte

Scarica ZIP

Eseguire un flusso di backend completo

  1. Configurazione privata MochiPay carte d’identità, carte d’activo, pubblico HTTPS Il server possiede il prezzo demo; il browser non può sostituirlo.
  2. Creare o recuperare utilizzando lo stesso salvataggio request_id e il carico non modificato. esattamente UTF-8 i bit di richiesta e le strisce di domanda codificate sono HMAC-SHA256 firmato .
  3. Aprire il salvatore ON_SITE popup o HPP Redirect: entrambi utilizzano un ordine di pagamento. ON_SITE comprende QRControlli di copia e selettore di dieci lingue.
  4. Il processo notify_url sul server e richiedere nuovamente l'ID salvato. le rotte di ritorno e di sondaggio sincronizzate utilizzano nuovamente la stessa verifica vincolante / esatta.
  5. Ricordate lo stato pagato verificato una volta. sostituite il file store e segnalate con la proprietà autenticata della vostra applicazione e l'aggiornamento dell'ordine di database atomico prima della produzione.

PHP Rimanere il flusso originale order.php / checkout.php / callback.php. I quattro nuovi backend esponono le rotte comuni qui sotto per i browser e i clienti mobili.

Il percorsoResponsabilità
Post / PagamentiCreare o ripristinare un articolo a prezzo server; request_id e payment_method• Tracciare il token.
GET /checkout?r=…&t=…&mode=ON_SITESconto-ordine venditore-locale pagamento popup.
GET /checkout?…&mode=HPP303 Ristrutturazione dopo la validazione vincolante e di destinazione.
GET /status?r=…&t=…Chiedi di upstream firmati; pagamento decimale minimo DTO.
POST /callback?r=…&t=…Verificazione asincronica e marcatore pagato una volta.
GET /complete?r=…&t=…Verificata pagina di ritorno/resultato sincronizzata.

Mobile checkout senza cellulare API Segreti

Swift e Kotlin Progetti di sorgente utilizzano uno dei quattro backend comuni. Configurare solo il tuo trader HTTPS Origine dell’app. ON_SITE visualizza il tuo check-out locale in WKWebView o Android di WebView; HPP Apri la strada di ristrutturazione del commerciante in un browser esterno. l'app verifica il backend di nuovo quando attiva; chiudendo l'app non ferma mai le notifiche del server.

L'ID di richiesta salvata sopravvive alle ritrazioni/retarts. Interfaccia e cambiamenti linguistici riutilizzano lo stesso ordine. MochiPay credentiali; sostituirlo con la sessione utente autenticata della tua applicazione.

Queste sono le demo di fonte di integrazione, non SDK di pagamento native o approvazioni app-store. Regole di fatturazione Apple e Google Play Politica dei pagamenti per il prodotto e la regione di destinazione.

Verificare prima di andare in vita

Utilizzare il README e TESTING.md di ciascun pacchetto. le fissure firmate locali coprono le retrazioni, i fallimenti vincolanti, gli stati non pagati e le notifiche duplicate.Android L'accettazione del dispositivo di studio e un piccolo pagamento reale hanno ancora bisogno della validazione di staging. MochiPay La tabella di database o il plugin è necessaria.

Implementazione dei ritorni sincronisti e delle notifiche asincronistiche

Ritorni e notifiche

Implementazione HPP ritorno sincronico, HPP le notifiche asincroniche e ON_SITE Aggiornamenti asincroni con un solo verificatore sul server.

Tre punti di ingresso: una aggiornamento di ordine verificato.

flussoAPI campo / ingressoscopo
HPP Il ritorno sincronizzatoredirect_url • Il browser èVisualizza un risultato dopo la query del server firmata. il cliente potrebbe non tornare mai.
HPP Comunicazione Asynchronousnotify_url Servizio postVerificare e aggiornare l'ordine locale senza affidarsi al browser.
ON_SITE Comunicazione AsynchronousLo stesso notify_url Servizio postAggiornare l'ordine locale anche se il pop-up o l'app di pagamento è chiuso.
ON_SITE Visualizzazione dello statusBrowser/app sondaggi merchant/statusMostra un risultato minimo della stessa verifica di backend.

HPPIl ritorno del browser sincronizzato

Quando si crea un pagamento, risparmiare redirect_url con la capacità dell'ordine locale. l'esempio lo mette al tuo HTTPS merchant /complete?r=...&t=....Dopo il check-out ospitato il browser ritorna qui. Carica l'ordine locale salvo, valida la sua proprietà/capacità, quindi segnala l'ordino Query utilizzando il salvo MochiPay order_id.

Visualizza PAID solo dopo il passaggio della somma vincolante e accurata ricevuta. altrimenti mostra attesa o revisione. Un URL, messaggio del browser o screenshot non è prova di pagamento. La consegna di appuntamenti può avvenire prima o dopo questa visita del browser.

HPP e ON_SITE- notifica server asincronico

salvare notify_url durante la creazione; gli esempi utilizzano /callback?r=...&t=.... MochiPay POST qui indipendentemente dal browser del cliente. trattare i campi in arrivo come indizi di ricerca non affidati. API e confrontare l’ID salvataggio, la referenza, l’importo/valuta originale, l’attività/network, l’indirizzo e l’importe esatto pagabile.

Richiede il pagamento e received_amount esattamente uguale a pay_amountIl pagamento locale verificato viene registrato una volta; le notifiche verificate ripetute ritorneranno OK senza aggiornamento o consegna due volte. stati non confermati, vincoli invalidi e fallimenti di upstream / storage non devono essere riconosciuti come un pagamento di successo.

Il demo persiste una sola volta paid_verified Il marchio. sostituiti con una transazione nella tua banca dati di ordine; non soddisfa i beni. Un singolo corpo di ritorno non lancia mai un aggiornamento dell'ordine.

ON_SITE: aggiornamenti asincroni e pop-up polling

ON_SITE Fare lo stesso notify_url, quindi la verifica dei pagamenti continua quando il pop-up chiude o l'app va offline.15-intervallo second mentre visibile. le sue domande di backend MochiPay e restituisce un piccolo DTO di pagamento con somme decimali. display PAID utilizza lo stesso verificatore come il callback; no API La risposta segreta o completa del cliente entra nel browser.

Chiusura, riapertura o cambiamento ON_SITE/HPP Ripristino di un pagamento risparmiato.Retain request_id e il carico di creazione esatto dopo un timout; cambiando il riferimento può creare un ordine aggiuntivo indesiderato.

Codice corrente in ogni pacchetto di backend

Ogni esempio comprende entrambe le rami di presentazione, il trader di notifiche, la pagina di ritorno, il punto di fine di stato sicuro e l'intento di fase duratura. API I campi sono notify_url e redirect_urlIl modo check-out è una preferenza locale, non un campo Create Order.

Node.js · verifica, ritorno e notifica

Le variabili di rotta e gli assistenti di archiviazione sono definiti nella fonte completa; si accede alla completa integrazione piuttosto che a queste linee da soli.

async function verify(r,t){const a=load(r);if(!equal(a.token,t)||!a.snapshot)throw Error('Invalid payment capability');const d=await api('/api/v1/orders/query','order_id='+encodeURIComponent(a.snapshot.order_id));bind(a,d);if(d.status==='PAID'&&!a.paid_verified){a.paid_verified=true;save(r,a)}return d}

// HPP redirect_url -> GET /complete: verify before displaying result.
await verify(r,t);
// notify_url -> POST /callback: same verification and atomic once-only marker.
const d=await verify(r,t);
output(res,d.status==='PAID'?200:409,'text/plain',d.status==='PAID'?'OK':'Payment not confirmed');
// ON_SITE polling -> GET /status: only the safe DTO reaches the browser.
json(res,200,{success:true,data:safe(await verify(r,t))});
Python · Verificazione, ritorno e notifica

Le variabili di rotta e gli assistenti di archiviazione sono definiti nella fonte completa; si accede alla completa integrazione piuttosto che a queste linee da soli.

def verify(r, t):
    a = load(r)
    if not isinstance(t,str) or not hmac.compare_digest(a['token'],t) or not a.get('snapshot'): raise ValueError('Invalid capability')
    d = api('/api/v1/orders/query',urlencode({'order_id':a['snapshot']['order_id']})); bind(a,d)
    if d.get('status') == 'PAID' and not a['paid_verified']: a['paid_verified'] = True; save(r,a)
    return d

# HPP browser return
verify(r,t)
# HPP and ON_SITE server notification (inside the handler lock)
d = verify(r,t)
self.out(200 if d['status']=='PAID' else 409,'text/plain','OK' if d['status']=='PAID' else 'Payment not confirmed')
# ON_SITE display only
self.jout(200,dict(success=True,data=safe(verify(r,t))))
C# / .NET Framework · verifica, ritorno e notifica

Le variabili di rotta e gli assistenti di archiviazione sono definiti nella fonte completa; si accede alla completa integrazione piuttosto che a queste linee da soli.

        static JObject Verify(string r,string t)
        {
            var a=Load(r);if(!Equal(S(a,"token"),t)||a["snapshot"]==null)throw new Exception("Invalid capability");var d=Api("/api/v1/orders/query",null,"order_id="+Uri.EscapeDataString(S(a["snapshot"],"order_id")));Bind(a,d);
            if(S(d,"status")=="PAID"&&!(bool)a["paid_verified"]){a["paid_verified"]=true;Save(r,a);}return d;
        }

// GET /complete: verified HPP return.
Verify(r,t);
// POST /callback: asynchronous notification for both modes.
var d=Verify(r,t);
Out(res,S(d,"status")=="PAID"?200:409,"text/plain",S(d,"status")=="PAID"?"OK":"Payment not confirmed");
// GET /status: display only the minimal DTO.
JOut(res,200,new JObject {{"success",true},{"data",Safe(Verify(r,t))}});
Java · Verificazione, ritorno e notifica

Le variabili di rotta e gli assistenti di archiviazione sono definiti nella fonte completa; si accede alla completa integrazione piuttosto che a queste linee da soli.

    static JsonObject verify(String r,String t)throws Exception{JsonObject a=load(r);if(!equal(s(a,"token"),t)||!a.has("snapshot"))throw new IllegalArgumentException("Invalid capability");JsonObject d=api("/api/v1/orders/query",null,"order_id="+enc(s(a.getAsJsonObject("snapshot"),"order_id")));bind(a,d);if(s(d,"status").equals("PAID")&&!a.get("paid_verified").getAsBoolean()){a.addProperty("paid_verified",true);save(r,a);}return d;}

// GET /complete: verified HPP return.
verify(r,t);
// POST /callback: both presentation modes use this route.
boolean paid=s(verify(r,t),"status").equals("PAID");
out(x,paid?200:409,"text/plain",paid?"OK":"Payment not confirmed");
// GET /status: minimal safe display DTO.
jout(x,200,object("success",true,"data",safe(verify(r,t))));
PHP · Verificazione, ritorno e notifica

Le variabili di rotta e gli assistenti di archiviazione sono definiti nella fonte completa; si accede alla completa integrazione piuttosto che a queste linee da soli.

    // Authenticate the result by querying MochiPay server-to-server.
    $verified = mochipay_query_order('order_id', $orderId);
    if (!$verified['ok'] || !is_array($verified['data'])) {
        callback_text(503, 'VERIFICATION_FAILED');
    }

    $order = $verified['data'];
    if (!isset($order['order_id']) || !hash_equals((string) $order['order_id'], $orderId)) {
        callback_text(409, 'ORDER_MISMATCH');
    }

    $verifiedMerchantId = isset($order['merchant_order_id']) ? (string)$order['merchant_order_id'] : '';
    try { $record = mochipay_load($verifiedMerchantId); }
    catch (Exception $e) { callback_text(503, 'LOCAL_STORAGE_UNAVAILABLE'); }
    if (!mochipay_bound($record, $order) || (isset($callback['merchant_order_id']) && !hash_equals($verifiedMerchantId, (string)$callback['merchant_order_id']))) callback_text(409, 'LOCAL_ORDER_MISMATCH');
    if (!isset($order['received_amount']) || MochiPayPortable::decimal($order['received_amount']) !== MochiPayPortable::decimal($order['pay_amount'])) callback_text(409, 'PAYMENT_AMOUNT_REQUIRES_REVIEW');

    if (!isset($order['status']) || strtoupper((string) $order['status']) !== 'PAID') {
        callback_text(409, 'ORDER_NOT_PAID');
    }

    /*
     * TODO: In your production database, atomically fulfill the bound local order.
     * This demo acknowledges verification only; it does not deliver goods.
     * Make the operation idempotent: repeated callbacks must not deliver goods
     * or credit the customer more than once.
     */
    try { mochipay_record_verified($record, $order); }
    catch (Exception $e) { callback_text(503, 'LOCAL_UPDATE_FAILED'); }
    callback_text(200, 'OK');
}

// GET browser return verifies the saved capability, then queries the saved ID.
$authorized = $record && $returnToken !== '' && hash_equals($record['token'], $returnToken);
if ($authorized) {
    $verified = mochipay_query_order('order_id', $record['snapshot']['order_id']);
    $paid = $verified['ok'] && mochipay_record_verified($record, $verified['data']);
}
Scarica gli esempi completi

Risposte errate

Gli errori ritorno a HTTP Il codice di stato e un messaggio stabilito leggibile dalla macchina.

JSON
{ "success": false, "message": "INVALID_SIGNATURE" }
HTTPMessaggioDescrizione
400INVALID_JSON / INVALID_AMOUNTI dati richiesti sono invalidi.
400INVALID_CURRENCY / INVALID_PAYMENT_METHODLa valuta o il metodo di pagamento non è supportato.
400INVALID_UNIQUE_AMOUNT_DIRECTION / INVALID_PRODUCT_TYPELa direzione o il valore del tipo di prodotto non è supportato.
400FIELD_TOO_LONG / INVALID_REDIRECT_URL / INVALID_NOTIFY_URLUn campo opzionale supera il suo limite o un URL fornito è invalido.
400ORDER_ID_REQUIRED / ORDER_IDENTIFIER_CONFLICTL'identificatore di query è mancante o in conflitto.
401INVALID_API_KEY / INVALID_SIGNATUREL’autenticazione è fallita.
403SUBSCRIPTION_REQUIRED / SUBSCRIPTION_EXPIREDLa sottoscrizione del commerciante non è disponibile.
403MERCHANT_DISABLEDL’account del commerciante è disabilitato.
404ORDER_NOT_FOUNDNessun ordine di proprietà del commerciante corrispondente è stato trovato.
500SYSTEM_ERRORLa richiesta non poteva essere completata.

Integrazione del Legacy SaaS Store

HPP-compatibilità esclusiva per Shopyy / Shopoem, Shoplus, Wooshoppaas e Fecify. Non è necessario scaricare plugin o modificare il codice sorgente SaaS.

POST https://mochi.bz/api/v/orders/legacy_create/{MerchantApiKey}/{PaymentMethod}
Utilizzare il API La chiave, mai la API In questo URL. L'URL identifica il trader e il metodo di pagamento. la piattaforma SaaS continua a inviare il suo esistente application/x-www-form-urlencoded I campi di ordine.

Piattaforme supportate

Shopyy / ShopoemLa stessa azienda e il formato gateway compatibile
ShoplusConfigurare l'URL dell'interfaccia di pagamento
WooshoppaasConfigurare l'URL dell'interfaccia di pagamento
FecifyConfigurare l'URL dell'interfaccia di pagamento

Setup

  1. Copia il commerciante API La chiave della MochiPay Il dashboard del commerciante.
  2. Scegli uno dei metodi di pagamento supportati per questa opzione di pagamento SaaS.
  3. sostituzione {MerchantApiKey} e {PaymentMethod} Il punto finale di URL.
  4. Inserisci l'URL completata nell'interfaccia del gateway di pagamento SaaS o inviare la configurazione URL.
  5. Mantenere i parametri POST esistenti della piattaforma SaaS, restituire l'URL e notificare l'URL invariato.

Esempi di URL

Interfaccia di pagamento URL
https://mochi.bz/api/v/orders/legacy_create/YOUR_MERCHANT_API_KEY/USDT_TRC20

https://mochi.bz/api/v/orders/legacy_create/YOUR_MERCHANT_API_KEY/USDC_ERC20

https://mochi.bz/api/v/orders/legacy_create/YOUR_MERCHANT_API_KEY/SOL_SOLANA

Metodi di pagamento

USDT_TRC20USDT di TRON
USDC_ERC20USDC di Ethereum
BTC_BITCOINNati BTC di Bitcoin
ETH_ERC20Nati ETH di Ethereum
SOL_SOLANANati SOL di Solana

I campi di eredità richiesti

Parametriscopo
merchant_urlValore originale del magazzino SaaS, conservato nel registro completo della richiesta per la diagnosi.
system_nameIdentificatore piattaforma SaaS esistente, conservato nel registro completo della richiesta.
account_type / payment_modeMantenere i valori esistenti della piattaforma, normalmente live e sale.
orders_idL’originale SaaS ordine identificatore.
amount / currencyOrdinario e moneta originale.
return_urlIl cliente ritorna l'URL dopo il pagamento confermato.
notify_urlURL di notifica del server per il pagamento completo.
securityTokenIl token passaggio opzionale è tornato invariato.
productsInformazioni di prodotto o cartone opzionali.
customer_*I campi clienti, indirizzo, IP e agente utente esistenti.

Risposta di ordine creato

L'integrazione SaaS esistente estrae l'URL di check-out ospitato dalla risposta a testo piatto di tre parti.

TEXT
_____https://mochi.bz/pay/ORDER_ID_____

Campi di ritorno e notifica di successo

campoValore
securityTokenIl valore originale è adatto.
paymentMethodonlinepay
paymentStatusCompleted
paymentTransactionIl hash di transazione blockchain confermato.
paymentCommentsMochiPay payment confirmed
orderIDIl SaaS originale orders_id.

E-Commerce Plugin per il download

Aggiungi MochiPay per il tuo negozio indipendente con un'estensione specifica per la piattaforma. Scegli la tua piattaforma e la filiale di versione qui sotto. 19 Il download è indipendente ZIP con le istruzioni in inglese e PHP I requisiti sono all'interno. usare il PHP ambiente consentito dal tuo esatto rilascio del negozio.

Il sito + HPP

WooCommerce

Checkout Classic, Checkout Blocks e HPOS.

PiattaformaWooCommerce 5.8 o più tardi con la porta nativa API
PHPPHP 7.4–8.4

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

OpenCart 2.0–2.2

Le rotte di pagamento precoce e i percorsi di modello specifici per la versione.

PiattaformaOpenCart 2.0di X-2.2x
PHPPHP 5.6–7.4· più PHP Necessità di patch core

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

OpenCart 2.3

Il separato 2.3 Struttura di estensione/pagamento.

PiattaformaOpenCart 2.3x
PHPPHP 5.6–7.4· più PHP Necessità di patch core

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

OpenCart 3

Vedi di Twig e il nativo OpenCart 3 gateway di pagamento.

PiattaformaOpenCart 3.0x
PHPPHP 5.6–8.4· applicano i requisiti di base / dipendenza esatti

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

OpenCart 4

Nati 4.x spazi di nome, rotte e imballaggi di estensione.

PiattaformaOpenCart 4.0.2di X-4.1x
PHPPHP 8.0.2–8.4; 4.1.0.4 richiede 8.1+

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

Zen Cart 1.5.3–1.5.7

Legacy definisce i file linguistici e le impostazioni di stato nativo.

PiattaformaIl Zen Cart 1.5.3-1.5.7
PHPPHP 5.6–8.0A seconda della versione core

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

Zen Cart 1.5.8–2.2

I file linguistici moderni basati su array e le impostazioni di stato nativo.

PiattaformaIl Zen Cart 1.5.8 / 2.0X / 2.1X / 2.2x
PHPPHP 7.3–8.4A seconda della versione core

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

Magento 1 / OpenMage

Magento di CE 1.9.3.0–1.9.4.5 Compatibile con OpenMage 19/20.

PiattaformaMagento di CE 1.9.3.0-1.9.4.5• OpenMage 19/20 Native di M1 API
PHPPHP 5.6–8.4; PHP 8 Richiede un core OpenMage compatibile

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

Magento 2

Magento Fonte aperta 2.3.7–2.4.8 con il check-out nativo.

PiattaformaMagento Fonte aperta 2.3.7-2.4.8 Utilizzo del checkout nativo
PHPPHP 7.3–8.4A seconda della versione core

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

PrestaShop 1.6

Il PrestaShop 1.6.1 Pagamento e formulario di presentazione.

PiattaformaPrestaShop 1.6.1x
PHPPHP 5.6–7.1

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

PrestaShop 1.7 / 8 / 9

PrestaShop 1.7.6–1.7.8, 8X e 9.0.x opzioni di pagamento.

PiattaformaPrestaShop 1.7.6-1.7.8 / 8X / 9.0x
PHPPHP 5.6–8.4A seconda della versione core

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

Shopware 6.6

I commercianti indigeni separati per Shopware 6.6 e 6.7.

PiattaformaShopware >=6.6.10.0 <6.7.0.0
PHPPHP 8.2X / 8.3X / 8.4x

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

Shopware 6.7

I commercianti indigeni separati per Shopware 6.6 e 6.7.

PiattaformaShopware >=6.7.0.0 <6.8.0.0
PHPPHP 8.2X / 8.3X / 8.4x

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

Drupal Commerce

Portale di pagamento Native Commerce per i sostenuti Drupal e dei rami di commercio.

PiattaformaCommerce 2.40.x with Drupal 9.3–10.x; or Commerce 3.3.10+ <3.4 with Drupal 10.3–11.x
PHPDrupal 9.3–9.5: PHP 7.4–8.1; Drupal 10: PHP 8.1–8.3; Drupal 11: PHP 8.3–8.4solo quando è consentito dall’esatto Drupal Rilascio

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

EC-CUBE 4.3

Il checkout JPY con il EC-CUBE Il flusso di acquisto.

PiattaformaEC-CUBE >=4.3.0 <4.4.0
PHPPHP 8.1X / 8.2X / 8.3x

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

Bagisto 2.3

Il pacchetto Laravel con ordini nativi e la gestione delle fatturazioni.

PiattaformaBagisto >=2.3.0 <2.4.0
PHPPHP 8.2X / 8.3X / 8.4.x (anche soddisfa il blocco di dipendenza del negozio)

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

Sylius 2.0

Il checkout di Native Payum e il Sylius La macchina di pagamento.

PiattaformaSylius >=2.0.0 <2.1.0 with PayumBundle 2.6+ / Payum 1.7-compatible core
PHPPHP 8.2X / 8.3X / 8.4.x (anche soddisfa il blocco di dipendenza del negozio)

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

osCommerce 4.14

Nati V4 Modulo di pagamento; separato dal patrimonio osCommerce 2X e 3di X.

PiattaformaosCommerce 4.14.x; nativo V4 Modulo di pagamento API
PHPPHP 7.4X -8.3.x, a seconda dell'installazione osCommerce L’indipendenza e il blocco di rilascio

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup
Il sito + HPP

thirty bees 1.6

Modulo di pagamento nativo e storia dell'ordine per trenta api 1.6.

Piattaformathirty bees >=1.6.0 <1.7.0
PHPPHP 7.4X / 8.0X / 8.1X / 8.2X / 8.3.x; utilizzare la distribuzione di trenta api

Le istruzioni di installazione in inglese e i dettagli PHP La tavola è all'interno di questo ZIP.

Scarica ZIPGuida di Setup

Nuovi adattatori sono le costruzioni iniziali di integrazione. completare l'installazione e l'accettazione di pagamento reale nel proprio negozio di staging prima di consentire il traffico dal vivo.

Inizia la costruzione con MochiPay

Creare a MochiPay account e scegliere il metodo di integrazione che corrisponde al tuo flusso di lavoro di pagamento.

Inizia