開発資源

API 開発

API 参照、バックエンドおよびモバイルの例、および支払い返金および通知は、一つの場所にあります。 PHPNode.js で、 PythonC#、 Java, iOS Swift そして、 Android Kotlin サポート ON_SITE そして、 HPP.

残り API ■ プレゼンテーションチェック

1つの注文でON_SITEまたはHPPを選べます。

あなたのサーバーで注文を作成し、ローカル注文にその結びつきを保存し、その後、顧客が支払いを見る方法を選択します。 order_id.

見る HPP シンクロン回収と ON_SITE/HPP アシンクロン通知処理で、 PHPNode.js で、 PythonC#と Java コード

ON_SITE

自社の決済画面内で支払い

正確な金額、住所、ネットワーク、および QR 自分のドメインでの対話で、あなたのバックエンド質問 MochiPay 安全な支払い視点を返します。

内蔵 HTML + を参照 PHP →
HPP

MochiPay決済画面へ移動

サーバーがお客様をリダイレクト payment_url支払い後、返品または通知を確認して、認証されたクエリーオーダーを通じて確認します。

見る The PHP リダイレクト

下のエクセプトは checkout.php から来ており、アシスタントは PHP デモ 1.1.4 (PHP 7.0–8.4最初に order.php でオーダーを作成し、その結果は両方の例へのリンクを提供します。 生産ストアは、セッション/データベースから認定されたローカルオーダーを解決し、無力な取引を通じて完了する必要があります。

サーバー検証後のリダイレクト

HPP · PHP

保存されたオーダーの接続と目的地を確認し、ページ出力の前に位置ヘッダーを送信します。

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.

完全なファイルは、保存された試みをアップロードし、そのトークン、認証されたリクエスト、および予想を確認します。 payment_url この分野の前に。

対話を自分のページに組み込む

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.

バックエンドが注文を確認する

保存された参照/トークンを許可し、保存した参照によって問い合わせ MochiPay order_id元の金額/通貨、資産/ネットワーク、住所および正確な支払い金額を比較します。

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.

認証

すべての API 申請には、売り手が含まれなければならない。 API キーとベース64コード化 HMAC-SHA256 サイン

ヘッダー必須説明
X-Mochi-Keyはいあなたの商人 API 鍵
X-Mochi-Signatureはいベース64コード化 HMAC-SHA256 サイン
Content-Typeポストリクエストapplication/json
あなたの持って API サーバーの秘密 決してブラウザで表示しないでください。 JavaScriptモバイルアプリケーションまたは公開ソースコード

署名

オーダーを作成するには、正確な原料をサインします。 JSON Query Order では、リーダーなしで原料のリクエストラインをサインします。 ?.

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

支援通貨

支払い方法は、暗号通貨と支払うために使用されるブロックチェーンネットワークを選択します。

順序順序

28 サポートされたフィアット通貨

これらの正確なISOコードの1つを使用して、 currency フィールド

USDEURGBPCAD AUDNZDJPYCNY HKDSGDCHFSEK NOKDKKPLNCZK HUFAEDSARINR IDRTHBMYRPHP KRWBRLMXNZAR
CRYPTO ORDER CURRENCIES

仮想通貨価格

注文は、これらの暗号通貨に直接価格化されることもあります。

USDTUSDCBTCETHSOL
支払い方法

暗号通貨とネットワーク組み合わせのサポート

これらの正確な値の1つを送信する payment_method フィールド

USDT_TRC20USDT で TRON
USDC_ERC20USDC エーテリアム
BTC_BITCOIN原住民 BTC ビットコイン
ETH_ERC20原住民 ETH エーテリアム
SOL_SOLANA原住民 SOL ソラナ
変換ルール: 注文通貨と支払い資産が同じ場合、 MochiPay ある割合で使用する 1 変換なし. そうでないと、保管された為替レートと商人のマークアップは、注文が作成されたときに適用されます。 現在の参照為替レートを見る →
注文価値支払い方法結果
49.90 USDUSDT_TRC20保存されたものを使用する USD → USDT 価格と商売マークアップ
100 EURBTC_BITCOIN保存されたユーロを使用する BTC 価格と商売マークアップ
25 USDCUSDC_ERC20変換はありません. 為替レート 1.

注文を作成

ホストされた支払いURLと支払いインストールを含む支払い注文を作成し、サイトインターフェイスに必要な支払い指示を提供します。

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

要求パラメーター

注文通貨と支払い方法は異なる概念です。 amount そして、 currency 売り手のオリジナルの注文価値を定義する。 payment_method クライアントが支払うために使用する暗号通貨とブロックチェーンネットワークを定義します。 49.90 USD とのこと USDT_TRC20 つまり、A USD名付けされた注文は、計算された金額で支払われます。 USDT で で は TRON ネットワーク

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.

パラメータ必須タイプ / 長さ説明
merchant_order_idはいストリップ · 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.
amountはい十数(28,8)Positive original order amount. Fiat normally uses 2 decimal places; supported cryptocurrencies may use up to 8.
currencyはいストリップ · 1–20オリジナルのコードの通貨コード. フィアットかもしれません、例えば、 USD あるいは EUR仮想通貨、例えば、 USDT あるいは USDC.
payment_methodはい資産 ≤20 ネットワーク ≤30クレジット通貨とブロックチェーンネットワークの支払い ASSET_NETWORK 形式、例えば、 USDT_TRC20 あるいは USDC_ERC20.
unique_amount_directionノーUP あるいは DOWN小さなユニークな量の調整に使用される方向。 UP.
product_typeノーPHYSICAL あるいは DIGITAL_SERVICEチェックアウトで表示される注文タイプ。 DIGITAL_SERVICE送料フィールドは、両方のタイプのための選択肢となります。
descriptionノーストリップ · 0–500人間読めやすい命令の説明
product_infoノーJSON/string · nvarchar(max)製品、カート、またはカスタマイズメタデータ。 HTTP 要請機関は超えるべきではない。 65,536 バイト
customer_emailノーストリップ · 0–255お客様のメールアドレス:配達された場合、有効なメールアドレスでなければなりません。
customer_phoneノーストリップ · 0–50お客様の電話番号
first_nameノーストリップ · 0–100顧客の名前
last_nameノーストリップ · 0–100顧客最後の名前
companyノーストリップ · 0–200顧客会社または組織名
countryノーストリップ · 0–100顧客の国や地域
stateノーストリップ · 0–100顧客の州、州、または地域。
cityノーストリップ · 0–100クライアント市
address1ノーストリップ · 0–500主な顧客アドレスライン
address2ノーストリップ · 0–500追加顧客アドレスライン
postal_codeノーストリップ · 0–30郵便局または ZIP コード
request_idノーストリップ · 1–64オプションのリトリウムキー、あなたの商人にスコットします。 JSON 同じキーを再利用し、タイムアウト後、付費を再利用します。 解散申請.
notify_urlノーストリップ · 0–1000絶対 http:// あるいは https:// asynchronous server notification URL. Only public destinations are allowed; localhost, private/reserved IPs and redirects are blocked.
redirect_urlノーストリップ · 0–1000成功した支払いの後に使用された絶対顧客返還URL。
customer_ipノーIPV4/IPV6 · 0–45売り手が提供する顧客IP。 MochiPay また、記録は API IPを別々に要求する。

要請例

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# オーダー作成
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 ■ オーダー作成
<?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.');
}
?>

成功応答

フィールドタイプ / 長さ説明
successボリューム創造が成功するときの真実。
order_idストリップ · 32MochiPay システム識別器:地元の注文で保存します。
merchant_order_idシート ≤100オリジナルの商人の参考。
product_typeシート ≤20物理的または DIGITAL_SERVICE.
statusシート ≤20現在の支払い状況
amount十数(28,8)Original order amount; preserve decimal precision.
currencyシート ≤20オリジナルの価格通貨
base_pay_amount十数(28,8)ユニークな調整の前に変換された金額。
unique_amount_delta十数(28,8)合計調整のサイン
unique_amount_directionシート ≤10アップまたはダウン
pay_amount十数(28,8)正確なチェーン数を表示し、送信します。
payment_methodストリップ選択した資産/ネットワークなど USDT_TRC20.
payment_addressシート ≤255この支払いとネットワークのためのアドレスを受け取る。
payment_urlストリップ URLHPP URL. On-site は同じ注文指示を使用します。
expires_at日付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"
}

クエリオーダー

正当化された売り手が所有する注文を正確に1つの注文識別器を使用して返却します。

GET https://mochi.bz/api/v1/orders/query
Query パラメーター必須タイプ / 長さ説明
order_id二人のうちのひとりストリップ · 32MochiPay 命令識別
merchant_order_id二人のうちのひとりストリップ · 1–100商人の注文の識別:再利用された場合、最新の合致注文が返品されます。
利用 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.

Query 例

C# オーダー
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 ■注文したい
<?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.');
}
?>

成功応答フィールド

質問が戻ってくる。 wallet_type そして、 network separately; Create Order returns their combined payment_method. ローカル注文に保存された方法と比較します. 必要な支払いフィールドのみをクライアントブラウザに返します。

フィールドタイプ / 長さ説明
order_idストリップ · 32MochiPay 命令識別
merchant_order_idシート ≤100商人の注文を確認する。
sourceシート ≤20オーダーソース、例えば、 API.
descriptionシート ≤500オーダーの説明
product_typeシート ≤20PHYSICAL あるいは DIGITAL_SERVICE.
product_infoJSON/ ストリング / ゼロ商品または箱情報は、注文が作成されたときに提供されます。
statusシート ≤20総合支払い状況
merchant_statusシート ≤50売り手の命令状況
amount十数(28,8)オリジナルの注文金額
currencyシート ≤20オリジナルの通貨、例えば、 USD, EUR, USDT あるいは USDC.
base_pay_amount十数(28,8)ユニークな合計調整の前に変換された支払い金額。
unique_amount_delta十数(28,8)小さな署名金額は、ベース金額から追加または引き下げされます。
unique_amount_directionシート ≤10UP あるいは DOWN.
pay_amount十数(28,8)正確な仮想通貨の金額は、顧客が支払わなければならない。
received_amount十数(28,8)これまで受け取った仮想通貨の金額です。
exchange_rate十数(38,18)交換率のスナップショットは、注文が作成されたときに使用されました。
rate_markup_percent十数(9,4)注文に使用された商業料金マークショット。
wallet_typeシート ≤20支払い資産: USDT, USDC, BTC, ETH あるいは SOL.
networkシート ≤30ブロックチェーンネットワークなど、 TRC20 あるいは ERC20.
payment_addressシート ≤255この注文のために選ばれたアドレスを受け取る販売者。
tx_hashストリック/ゼロ · ≤255クライアントの支払い取引のハッシュが発見されました。
confirmations総合現在のブロックチェーン確認数。
customer_email … postal_codeストリップ/ゼロ注文作成時に供給される選択肢の顧客および配送フィールド。
payment_urlストリップ URLHPP checkout URL; on-site integrations query the same order for status and payment instructions.
expires_at日付オーダー終了時間
paid_at日付/ゼロ支払い終了時間
created_at日付創造時間の命令
updated_at日付最後の注文更新時間

コード例

PHPNode.js で、 PythonC# / .NET フレームワーク Java, iOS Swift そして、 Android Kotlin1 節約支払いサポート ON_SITE そして、 HPP.

PHP SDK で Packagist

インストール PHP SDK とのこと Composer.

あなたから支払い注文を作成し、要求します。 PHP バックエンド 続けて API あなたのサーバーのクレジット

v1.0.0 · PHP 7.4+ · MIT

composer require mochipay/php-sdk:^1.0

無料ダウンロード サブスクリプション ライブ支払い

サブスクリプションプランを見る

アプリケーションのソースパッケージを選択

1 現在 ZIP 言語またはモバイルプラットフォームによって英語の設定指示が含まれています ネイティブストアのプラグインは別々に残り、既存の統合は継続的に動作します。

サーバーデモ ON_SITE + HPP

PHP

7.0–8.4

オリジナル PHP ルート: order.php、checkout.php、callback.php

ZIPをダウンロード
サーバーデモ ON_SITE + HPP

C# / .NET フレームワーク

4.6.1 / VS2019

一般的なモバイル/バックエンドルート

ZIPをダウンロード
モバイルソース ON_SITE + HPP

iOS Swift

iOS15+ / Xcode14+

共通のバックエンドを使用する; ソースプロジェクトのみ

ZIPをダウンロード
モバイルソース ON_SITE + HPP

Android Kotlin

API26+ / SDK35 / JDK17

共通のバックエンドを使用する; ソースプロジェクトのみ

ZIPをダウンロード

完全なバックエンドフローを実行する

  1. プライベート設定 MochiPay クレジット、アクティブウォレット、公衆 HTTPS callback 起源と独立したステージアクセス トークン. サーバーはデモ価格を所有しています; ブラウザはそれを置き換えることはできません。
  2. 同じ保存を使用して作成または回復する request_id 変えられず、正確に、8 リクエストビートと暗号化されたリクエスラインはHMAC-SHAです。256 サイン
  3. 救われた者を開く ON_SITE ポップまたは HPP 両方とも1つの支払い注文を使用します。 ON_SITE 含む QRコピーコントロールと10言語セレクター
  4. プロセス notify_url サーバー上で保存されたID を再検索 同期返信およびリクエストルートは、同じ強制/正確マウント確認を再利用します。
  5. 実証済み状態を一度記録します. 生産前にスケールファイルストアとマークをアプリケーションの認定所有権と原子データベースの注文更新で置き換えます。

PHP オリジナルの order.php / checkout.php / callback.php 流れを保持します. 以下の4つの新しいバックエンドは、ブラウザおよびモバイルクライアントのための一般的なルートを示しています。

ルート責任
ポスト / 支払いサーバー価格のアイテムを作成または復元する request_id そして、 payment_methodタグ: タグ タグ : タグ / タグ
GET /checkout?r=…&t=…&mode=ON_SITE売り手・地元の支払いポップアップ
GET /checkout?…&mode=HPP303 接続と目的地認証の後にリダイレクト。
GET /status?r=…&t=…サインアップストリームのリクエスト; 最低デシマルストリーム支払い DTO。
POST /callback?r=…&t=…無同期検証と一回のみ支払いマーク。
GET /complete?r=…&t=…同期回収/結果ページの確認

モバイルチェックアウトなし API 秘密

Swift そして、 Kotlin ソースプロジェクトは、4つの一般的なバックエンドのいずれかを使用します。 HTTPS アプリの起源 ON_SITE 現地チェックアウトを WKWebView で表示するか、 Android ウェブビュー; HPP 外部ブラウザでトレーダーのリダイレクトルートを開きます. アプリはアクティブ時にバックエンドを再度チェックします. アプリを閉じるとサーバーの通知が止まらない。

保存されたリクエストIDはリトリウム/リスタートを生存します。インターフェイスと言語の変更は同じオーダーを再利用します。 MochiPay 認証; アプリケーションの認証ユーザーセッションで置き換える。

これらは統合ソースデモであり、先住民の支払いSDKやアプリストアの承認ではありません。 Apple 請求規則 そして、 Google Play 支払い方針 あなたの製品とターゲット地域のために

生きる前に確認する

各パッケージの README と TESTING.md を使用します ローカルに署名されたフィクションは、退職、強制的な不当合意、未払い状態、および複数の通知をカバーします。Android スタジオデバイスの受け入れと小さな実際の支払いは、まだあなたのステージ認証が必要です。 MochiPay データベーステーブルまたはプラグインの再インストールが必要です。

同期返信と非同期通知の実施

戻り処理と通知

実施 HPP 同期回収、 HPP アシンクロンの通知と、 ON_SITE 同期更新プログラムは、サーバー側の1つの検証器を搭載しています。

3 入力ポイント 1 確認された注文更新

流れAPI フィールド / 入場目的
HPP シンクロン返品redirect_url ■ブラウザが届くサーバーのリクエストにサインした後、結果を表示します. クライアントは決して戻ってこないかもしれません。
HPP アシンクロン通知notify_url ■サーバーポストブラウザに頼らずに現地の注文を確認して更新します。
ON_SITE アシンクロン通知同じもの notify_url ■サーバーポスト現地の注文を更新する場合でも、支払いポップアップまたはアプリが閉鎖されている場合でも。
ON_SITE ステータスディスプレイブラウザ / アプリ 調査 商人 / 状態同じバックエンド検証の最低結果を表示します。

HPP●Synchronous ブラウザの復元

支払いをする際は、節約 redirect_url 地元の秩序の能力で、その例はあなたの HTTPS トレーダー /complete?r=...&t=.... ホストチェックアウト後、ブラウザはここに戻ります. 保存されたローカルオーダーをアップロードし、その所有権/能力を確認し、保存されたオーダーを使用してクエリーオーダーをサインします。 MochiPay order_id.

パイドを表示するのは、義務付けおよび正確に受け取った金額が通過した後にのみです。そうでないと、待つまたはレビューを表示します. URL フラッグ、ブラウザ メッセージまたはスクリーンショットは支払いの証拠ではありません. 返信送付は、このブラウザの訪問の前にまたは後に発生する可能性があります。

HPP そして、 ON_SITE●アシンクロンサーバー通知

保存 notify_url 創造の間に; 例を使用する /callback?r=...&t=.... MochiPay クライアントのブラウザから独立してここに投稿します. 信頼されていない検索ヒントとして入るフィールドを処理します. 認証されたフィールドの検索 API 保存されたID、参照、オリジナルの金額/通貨、資産/ネットワーク、住所および正確な支払い金額を比較します。

パイドを要求し、 received_amount 正確に同等 pay_amount原子力的に確認された現地支払いを一度記録し、繰り返し確認された通知は更新または配達なしにOKに戻ります。 未確認の状態、無効な結合、アップストリーム/ストレージの故障は、成功した支払いとして認められません。

デモは一回だけ続く。 paid_verified マーク. あなた自身の注文データベースの取引でそれを置き換える; 商品を満たさない. 単独の呼び戻し機関は決して注文の更新を起動しない。

ON_SITE: アシンクロンアップデートとポップアップ調査

ON_SITE 同じ設定 notify_url支払い確認は、ポップアップが閉鎖するかアプリがオフラインになるときに続きます。152回目は目に見える間の間隔です。 MochiPay そして、10倍のストレージ金額で小さな支払いDTOを返します。PAIDディスプレイは、通話返信と同じ確認器を使用します。 API 秘密または完全なクライアント回答はブラウザに入ります。

閉鎖、再開、または変更 ON_SITE/HPP 1回の支払いを再利用します。 request_id タイムアウト後、正確な作成負担を変更し、参照を変更すると、望ましくない追加の注文が作成されます。

各バックエンドパッケージにおける実行可能なコード

それぞれの例には、プレゼンテーションの両方の分野、通知取引者、返品ページ、安全な状態の最終点、持続可能なステージ試みが含まれています。 API フィールドは notify_url そして、 redirect_urlチェックアウトモードは、オーダーを作成するフィールドではなく、地元の好みです。

Node.js · 確認、返品および通知

ルート変数とストレージアシスタントは、完全なソースで定義され、これらのラインだけではなく、完全な統合を貼ります。

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 ●確認、返品および通知

ルート変数とストレージアシスタントは、完全なソースで定義され、これらのラインだけではなく、完全な統合を貼ります。

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 · 検証、返品および通知

ルート変数とストレージアシスタントは、完全なソースで定義され、これらのラインだけではなく、完全な統合を貼ります。

        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 ●確認、返品および通知

ルート変数とストレージアシスタントは、完全なソースで定義され、これらのラインだけではなく、完全な統合を貼ります。

    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 ●確認、返品および通知

ルート変数とストレージアシスタントは、完全なソースで定義され、これらのラインだけではなく、完全な統合を貼ります。

    // 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']);
}
完全例をダウンロード

エラー回答

エラーが戻ってくる HTTP ステータスコードと安定した機械読みやすいメッセージ

JSON
{ "success": false, "message": "INVALID_SIGNATURE" }
HTTPメッセージ説明
400INVALID_JSON / INVALID_AMOUNT申請データは無効です。
400INVALID_CURRENCY / INVALID_PAYMENT_METHOD通貨または支払い方法はサポートされていません。
400INVALID_UNIQUE_AMOUNT_DIRECTION / INVALID_PRODUCT_TYPE指向または製品タイプの値はサポートされていません。
400FIELD_TOO_LONG / INVALID_REDIRECT_URL / INVALID_NOTIFY_URLオプションフィールドはその制限を超えるか、提供されたURLは無効です。
400ORDER_ID_REQUIRED / ORDER_IDENTIFIER_CONFLICTQuery ID が欠けているか紛争しているか。
401INVALID_API_KEY / INVALID_SIGNATURE認証が失敗した。
403SUBSCRIPTION_REQUIRED / SUBSCRIPTION_EXPIRED商売のサブスクリプションは利用できません。
403MERCHANT_DISABLED商人のアカウントが無効です。
404ORDER_NOT_FOUND商人のオーダーに合ったオーダーは見つかりませんでした。
500SYSTEM_ERROR要請は完了できなかった。

Legacy SaaS ストア統合

HPPShopyy/Shopoem、Shoplus、Wooshoppaas、Fecifyのみに互換性があります. プラグインのダウンロードや SaaS ソースコードの変更は必要ありません。

POST https://mochi.bz/api/v/orders/legacy_create/{MerchantApiKey}/{PaymentMethod}
利用する → API キー、決して API このURLで、 URL は、売り手と支払い方法を特定します. SaaS プラットフォームは既存の送信を継続します。 application/x-www-form-urlencoded オーダーフィールド

サポートプラットフォーム

Shopyy / Shopoem同じ会社と互換性のあるゲートウェイ形式
Shoplus支払いインターフェイスのURLを設定する
Wooshoppaas支払いインターフェイスのURLを設定する
Fecify支払いインターフェイスのURLを設定する

セットアップ

  1. 売り手をコピーする API 鍵は、The MochiPay ダッシュボードの販売
  2. この SaaS 支払いオプションのためのサポートされた支払い方法を選択します。
  3. 代わり {MerchantApiKey} そして、 {PaymentMethod} 最後のURLに。
  4. 完了したURLを SaaS 支払いポータルのインターフェイスに挿入するか、URL 設定を提出します。
  5. SaaS プラットフォームの既存の POST パラメーターを保持し、URL を返し、URL の変更なしを通知します。

URL 例

支払いインターフェイス 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

支払い方法

USDT_TRC20USDT で TRON
USDC_ERC20USDC エーテリアム
BTC_BITCOIN原住民 BTC ビットコイン
ETH_ERC20原住民 ETH エーテリアム
SOL_SOLANA原住民 SOL ソラナ

遺産の必要分野

パラメータ目的
merchant_urlオリジナルの SaaS ストア 値は、診断のための完全なリクエスト記録に保存されます。
system_name既存の SaaS プラットフォーム ID は、完全なリクエスト レコードに保存されています。
account_type / payment_modeプラットフォームの既存の価値観を正常に維持する live そして、 sale.
orders_idオリジナルのSaaSオーダー識別
amount / currencyオリジナルの注文金額と通貨
return_urlお客様が返済した後、URLを返します。
notify_url完了した支払いのためのサーバー通知URL。
securityTokenオプションのパスワードトークンは変わらず返って来ました。
productsオプション製品またはカートデータ
customer_*既存の顧客、住所、IP、ユーザーエージェントフィールド。

作成オーダー対応

既存の SaaS 統合は、ホストチェックアウト URL を 3 パーツのフライン テキスト 応答から抽出します。

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

成功した返品と通知フィールド

フィールド価値
securityTokenオリジナルの合計値。
paymentMethodonlinepay
paymentStatusCompleted
paymentTransactionブロックチェーン取引のハッシュが確認されました。
paymentCommentsMochiPay payment confirmed
orderIDオリジナルのサウス orders_id.

電子商取引プラグインダウンロード

追加 MochiPay プラットフォーム特有の拡張子を持つ独立したストアへ. プラットットフォームとバージョンの分野を選択してください. 各プラットフォームの拡張 19 ダウンロードは独立 ZIP 英語の指示と、 PHP 内側の要求事項:利用 PHP あなたの正確な店のリリースによって許可された環境。

ウェブサイト + HPP

WooCommerce

クラシックチェッカウト、チェッカットブロック、HPOS

プラットフォームWooCommerce 5.8 あるいは、先住民のゲートウォーターで API
PHPPHP 7.4–8.4

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

OpenCart 2.0–2.2

早期支払いルートとバージョン特定のテンプレートルート。

プラットフォームOpenCart 2.0X -2.2X
PHPPHP 5.6–7.4■新しく PHP コアパッチが必要

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

OpenCart 2.3

別々の 2.3 延長/支払い構造

プラットフォームOpenCart 2.3X
PHPPHP 5.6–7.4■新しく PHP コアパッチが必要

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

OpenCart 3

ツイッグ・ビューと先住民 OpenCart 3 支払いゲートウェア

プラットフォームOpenCart 3.0X
PHPPHP 5.6–8.4正確な核心/依存性の要件が適用されます。

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

OpenCart 4

原住民 4.x 名称スペース、ルートおよび拡張パッケージ

プラットフォームOpenCart 4.0.2X -4.1X
PHPPHP 8.0.2–8.4; 4.1.0.4 要求 8.1+

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

Zen Cart 1.5.3–1.5.7

遺産定義に基づく言語ファイルと先住民の状態設定。

プラットフォームゼン・カート 1.5.3-1.5.7
PHPPHP 5.6–8.0コアバージョンによって、

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

Zen Cart 1.5.8–2.2

現代のアレージベースの言語ファイルと先住民の状態設定。

プラットフォームゼン・カート 1.5.8 / 2.0X / 2.1X / 2.2X
PHPPHP 7.3–8.4コアバージョンによって、

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

Magento 1 / OpenMage

Magento CE 1.9.3.0–1.9.4.5 互換性のあるOpenMage 19/20.

プラットフォームMagento CE 1.9.3.0-1.9.4.5オープンマージュ 19/20 原住民M1 API
PHPPHP 5.6–8.4; PHP 8 互換性のあるオープンマッジコアが必要です。

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

Magento 2

Magento オープンソース 2.3.7–2.4.8 ネイティブ決済

プラットフォームMagento オープンソース 2.3.7-2.4.8 ネイティブチェックアウト
PHPPHP 7.3–8.4コアバージョンによって、

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

PrestaShop 1.6

☆☆☆☆ PrestaShop 1.6.1 支払いハウクと提出フォーム

プラットフォームPrestaShop 1.6.1X
PHPPHP 5.6–7.1

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

PrestaShop 1.7 / 8 / 9

PrestaShop 1.7.6–1.7.8, 8x と 9.0x 支払いオプション

プラットフォームPrestaShop 1.7.6-1.7.8 / 8X / 9.0X
PHPPHP 5.6–8.4コアバージョンによって、

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

Shopware 6.6

個別の先住民が、 Shopware 6.6 そして、 6.7.

プラットフォームShopware >=6.6.10.0 <6.7.0.0
PHPPHP 8.2X / 8.3X / 8.4X

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

Shopware 6.7

個別の先住民が、 Shopware 6.6 そして、 6.7.

プラットフォームShopware >=6.7.0.0 <6.8.0.0
PHPPHP 8.2X / 8.3X / 8.4X

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

Drupal Commerce

国内貿易の支払いゲートウェア 支援者 Drupal 商業部門も。

プラットフォームCommerce 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.4ただし、正確に許可された場合 Drupal リリース

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

EC-CUBE 4.3

JPY 決済と共に EC-CUBE 買い物流

プラットフォームEC-CUBE >=4.3.0 <4.4.0
PHPPHP 8.1X / 8.2X / 8.3X

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

Bagisto 2.3

Laravel パッケージは、先住民の注文と請求書処理を含みます。

プラットフォームBagisto >=2.3.0 <2.4.0
PHPPHP 8.2X / 8.3X / 8.4.x (ストア依存のロックも満たす)

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

Sylius 2.0

Native Payum Checkout とその Sylius 支払い機械

プラットフォームSylius >=2.0.0 <2.1.0 with PayumBundle 2.6+ / Payum 1.7-compatible core
PHPPHP 8.2X / 8.3X / 8.4.x (ストア依存のロックも満たす)

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

osCommerce 4.14

原住民 V4 支払いモジュール:遺産から分離 osCommerce 2x と 3x です。

プラットフォームosCommerce 4.14.x; ネイティブ V4 支払いモジュール API
PHPPHP 7.4X -8.3x は、インストールされたものに従って、 osCommerce リリースと依存のロック

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド
ウェブサイト + HPP

thirty bees 1.6

原住民の支払いモジュールと30のミツバチの注文履歴 1.6.

プラットフォームthirty bees >=1.6.0 <1.7.0
PHPPHP 7.4X / 8.0X / 8.1X / 8.2X / 8.3.x; 30個のミツバチの配布に合った配布を使用する

インストール英語の指示と詳細 PHP テーブルはこれの中にある。 ZIP.

ZIPをダウンロードセットアップガイド

新しいアダプターは初期の統合構造です 完全なインストールと実際の支払いを受け入れる前に、ライブトラフィックを可能にします。

スタートビルと MochiPay

作成 A MochiPay アカウントを選択し、あなたの支払いワークフローに合った統合方法を選択します。

始める