Autentikasi & Kredensial

Generate B2B Token

B2B (Business-to-Business) Token diperlukan untuk autentikasi setiap request ke SNAP API.

POSThttps://staging-gateway.paprika.co.id/api/snap/v1.0/access-token/b2b

B2B (Business-to-Business) Token diperlukan untuk autentikasi setiap request ke SNAP API. Kirim grantType: "client_credentials" pada request body, lalu gunakan kembali accessToken yang dikembalikan selama token masih berlaku (15 menit).

Contoh Implementasi

const axios = require("axios");
const crypto = require("crypto");

async function getB2BToken() {
const clientKey = process.env.SNAP_CLIENT_KEY;
const clientSecret = process.env.SNAP_CLIENT_SECRET;
const timestamp = new Date().toISOString();

// Generate signature
const stringToSign = clientKey + "|" + timestamp;
const signature = crypto
  .createHmac("sha256", clientSecret)
  .update(stringToSign)
  .digest("base64");

try {
  const response = await axios.post(
    "https://staging-gateway.paprika.co.id/api/snap/v1.0/access-token/b2b",
    {
      grantType: "client_credentials",
    },
    {
      headers: {
        "Content-Type": "application/json",
        "X-CLIENT-KEY": clientKey,
        "X-TIMESTAMP": timestamp,
        "X-SIGNATURE": signature,
      },
    },
  );

  return response.data;
} catch (error) {
  console.error(
    "Error getting B2B token:",
    error.response?.data || error.message,
  );
  throw error;
}
}

Parameters

4 parameters accepted on this request.

NameTypeInRequiredDescription
stringheaderRequiredapplication/json
stringheaderRequiredClient key merchant (MERCHANT_API_KEY).
datetimeheaderRequiredYYYY-MM-DDTHH:mm:ssZ
stringheaderRequiredAsymmetric signature dari clientKey|timestamp.

Request

Content-Type application/json

{
  "grantType": "client_credentials"
}

Response Samples

200 OKSuccessful

{
  "responseCode": "2007100",
  "responseMessage": "Successful",
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "tokenType": "Bearer",
  "expiresIn": 900
}

401 UnauthorizedUnauthorized

{
  "responseCode": "4017100",
  "responseMessage": "Unauthorized. [Invalid Signature]"
}