Z Zise Developers 简体中文

Available card products (filtered by the merchant's authorized BINs)

GET /v1/cards/products scope: cards:read
Merchant account

Lists enabled card products available to your merchant. BIN authorization restricts access: no authorization rows means unrestricted access; if rows exist, only authorized BINs are returned.

Pass the id returned here unchanged as product_id when placing an order. It is our product identifier and uniquely determines the card's form factor, BIN, design, and issuing arrangement. You do not need, and are not given, the identity of the card issuer behind it.

⚠ One item is not included: this list currently does not return source_asset (the debit asset). Get valid values from GET /v1/assets. An asset outside the product's allowed list returns product_not_available.

Prerequisites

  • The product is enabled in our administration system (enabled = 1).
  • The BIN is authorized for you, or your merchant has no BIN authorization rows.

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. Not paginated; has_more is always false.
{
  "data": [
    {
      "id": "cpd_3",
      "form_factor": "virtual_card",
      "currency": "USD",
      "bin": "5240",
      "scheme": "MasterCard",
      "card_types": [
        "recharge"
      ]
    }
  ],
  "next_cursor": null,
  "has_more": false
}
403insufficient_scope: this key does not have cards:read.
Request
curl -X GET 'https://api.zinfra.vip/v1/cards/products' \
  -H 'x-auth-token: Bearer $TOKEN'
const res = await fetch("https://api.zinfra.vip/v1/cards/products", {
  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/cards/products",
    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/cards/products",
    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/cards/products"))
    .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/cards/products');
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
{
  "data": [
    {
      "id": "cpd_3",
      "form_factor": "virtual_card",
      "currency": "USD",
      "bin": "5240",
      "scheme": "MasterCard",
      "card_types": [
        "recharge"
      ]
    }
  ],
  "next_cursor": null,
  "has_more": false
}