Z Zise Developers 简体中文

Merchant profile, authorized products, and effective limits

GET /v1/merchant scope: merchant:read
Merchant account

The first integration self-check call: verifies the token, scope, and IP allowlist together.

custody_model determines whether you can encounter a transaction failure despite sufficient member balance. Under merchant_hosted, all costs first freeze your prepaid reserve; insufficient prepayment returns only service_unavailable to the member. The reason is visible only in GET /v1/merchant/pending.

Not returned: credit allowance, costs we pay upstream, our gross profit, or merchant hierarchy paths. You see what the business transaction charged you, not what the upstream charged us.

Parameters

This endpoint takes no parameters: no path parameters, query parameters or request body. For the authentication header (x-auth-token) and on-behalf-of header (x-on-behalf-of), see Authentication and Signing.

Response

200OK
{
  "id": "acme",
  "name": "Acme Pay",
  "status": "active",
  "settlement_currency": "USD",
  "custody_model": "merchant_hosted",
  "environment": "live"
}
403insufficient_scope: missing merchant:read. ip_not_allowed: outbound IP is not in this Key's allowlist. merchant_disabled: merchant is not active (four states share one code: suspended blocks only writes; frozen and closed block both reads and writes; public responses do not distinguish them).
Request
curl -X GET 'https://api.zinfra.vip/v1/merchant' \
  -H 'x-auth-token: Bearer $TOKEN'
const res = await fetch("https://api.zinfra.vip/v1/merchant", {
  method: "GET",
  headers: {
    "x-auth-token": "Bearer $TOKEN",
  },
});
// Keep monetary amounts as strings, never numbers.
const data = await res.json();
import requests

res = requests.get(
    "https://api.zinfra.vip/v1/merchant",
    headers={
        "x-auth-token": "Bearer $TOKEN",
    },
)
# Use Decimal(str(...)) for amounts, not float.
data = res.json()
req, _ := http.NewRequest("GET", "https://api.zinfra.vip/v1/merchant",
    nil)
req.Header.Set("x-auth-token", "Bearer $TOKEN")
res, err := http.DefaultClient.Do(req)
// Decode amount fields as string, not float64.
HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://api.zinfra.vip/v1/merchant"))
    .header("x-auth-token", "Bearer $TOKEN")
    .method("GET", HttpRequest.BodyPublishers.noBody())
    .build();
// Use String / BigDecimal for amounts, not double.
$ch = curl_init('https://api.zinfra.vip/v1/merchant');
curl_setopt_array($ch, [
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'x-auth-token: Bearer $TOKEN',
  ],
]);
$res = curl_exec($ch);
// Use bcmath / strings for amounts, not floatval.
200
{
  "id": "acme",
  "name": "Acme Pay",
  "status": "active",
  "settlement_currency": "USD",
  "custody_model": "merchant_hosted",
  "environment": "live"
}