cURL Examples
Command-line examples for testing and integrating EasySlip API.
Examples
TIP
All examples require HMAC-SHA256 authentication. See Authentication Guide for the signRequest() helper and full signing details.
HMAC Signing Helper
bash
# Include this at the top of your scripts
sign_request() {
local METHOD="$1" PATH_URL="$2" BODY="$3"
local API_KEY="${EASYSLIP_API_KEY}"
local SECRET_KEY="${EASYSLIP_SECRET_KEY}"
TIMESTAMP=$(date +%s)
NONCE=$(uuidgen | tr '[:upper:]' '[:lower:]')
BODY_HASH=$(printf '%s' "$BODY" | shasum -a 256 | cut -d' ' -f1)
STRING_TO_SIGN="${METHOD}\n${PATH_URL}\n${TIMESTAMP}\n${NONCE}\n${BODY_HASH}"
SIGNATURE=$(printf "${STRING_TO_SIGN}" | openssl dgst -sha256 -hmac "${SECRET_KEY}" | cut -d' ' -f2)
}Get Application Info
bash
sign_request "GET" "/info" ""
curl -X GET https://api.easyslip.com/v2/info \
-H "X-API-Key: ${API_KEY}" \
-H "X-Timestamp: ${TIMESTAMP}" \
-H "X-Nonce: ${NONCE}" \
-H "X-Signature: ${SIGNATURE}"Verify by Payload
bash
BODY='{"payload":"00000000000000000000000000000000000000000000000","checkDuplicate":true}'
sign_request "POST" "/verify/bank" "$BODY"
curl -X POST https://api.easyslip.com/v2/verify/bank \
-H "X-API-Key: ${API_KEY}" \
-H "X-Timestamp: ${TIMESTAMP}" \
-H "X-Nonce: ${NONCE}" \
-H "X-Signature: ${SIGNATURE}" \
-H "Content-Type: application/json" \
-d "$BODY"Verify by Payload with Options
bash
BODY='{"payload":"00000000000000000000000000000000000000000000000","remark":"Order #12345","matchAccount":true,"matchAmount":1500.00,"checkDuplicate":true}'
sign_request "POST" "/verify/bank" "$BODY"
curl -X POST https://api.easyslip.com/v2/verify/bank \
-H "X-API-Key: ${API_KEY}" \
-H "X-Timestamp: ${TIMESTAMP}" \
-H "X-Nonce: ${NONCE}" \
-H "X-Signature: ${SIGNATURE}" \
-H "Content-Type: application/json" \
-d "$BODY"Verify by Image
bash
sign_request "POST" "/verify/bank" ""
curl -X POST https://api.easyslip.com/v2/verify/bank \
-H "X-API-Key: ${API_KEY}" \
-H "X-Timestamp: ${TIMESTAMP}" \
-H "X-Nonce: ${NONCE}" \
-H "X-Signature: ${SIGNATURE}" \
-F "image=@/path/to/slip.jpg" \
-F "checkDuplicate=true"Verify by Base64
bash
BASE64_IMAGE=$(base64 -i /path/to/slip.jpg)
BODY="{\"base64\": \"${BASE64_IMAGE}\", \"checkDuplicate\": true}"
sign_request "POST" "/verify/bank" "$BODY"
curl -X POST https://api.easyslip.com/v2/verify/bank \
-H "X-API-Key: ${API_KEY}" \
-H "X-Timestamp: ${TIMESTAMP}" \
-H "X-Nonce: ${NONCE}" \
-H "X-Signature: ${SIGNATURE}" \
-H "Content-Type: application/json" \
-d "$BODY"Verify by URL
bash
BODY='{"url":"https://example.com/slips/slip-12345.jpg","checkDuplicate":true}'
sign_request "POST" "/verify/bank" "$BODY"
curl -X POST https://api.easyslip.com/v2/verify/bank \
-H "X-API-Key: ${API_KEY}" \
-H "X-Timestamp: ${TIMESTAMP}" \
-H "X-Nonce: ${NONCE}" \
-H "X-Signature: ${SIGNATURE}" \
-H "Content-Type: application/json" \
-d "$BODY"Shell Scripts
Verify Slip Script
bash
#!/bin/bash
# verify-slip.sh
API_KEY="${EASYSLIP_API_KEY}"
SECRET_KEY="${EASYSLIP_SECRET_KEY}"
SLIP_FILE="$1"
EXPECTED_AMOUNT="$2"
if [ -z "$SLIP_FILE" ]; then
echo "Usage: ./verify-slip.sh <slip-image> [expected-amount]"
exit 1
fi
if [ ! -f "$SLIP_FILE" ]; then
echo "Error: File not found: $SLIP_FILE"
exit 1
fi
# HMAC signing
TIMESTAMP=$(date +%s)
NONCE=$(uuidgen | tr '[:upper:]' '[:lower:]')
BODY_HASH=$(printf '' | shasum -a 256 | cut -d' ' -f1)
STRING_TO_SIGN="POST\n/verify/bank\n${TIMESTAMP}\n${NONCE}\n${BODY_HASH}"
SIGNATURE=$(printf "${STRING_TO_SIGN}" | openssl dgst -sha256 -hmac "${SECRET_KEY}" | cut -d' ' -f2)
# Build request
CURL_OPTS=(-X POST "https://api.easyslip.com/v2/verify/bank")
CURL_OPTS+=(-H "X-API-Key: $API_KEY")
CURL_OPTS+=(-H "X-Timestamp: $TIMESTAMP")
CURL_OPTS+=(-H "X-Nonce: $NONCE")
CURL_OPTS+=(-H "X-Signature: $SIGNATURE")
CURL_OPTS+=(-F "image=@$SLIP_FILE")
CURL_OPTS+=(-F "checkDuplicate=true")
if [ -n "$EXPECTED_AMOUNT" ]; then
CURL_OPTS+=(-F "matchAmount=$EXPECTED_AMOUNT")
fi
# Execute request
RESPONSE=$(curl -s "${CURL_OPTS[@]}")
# Parse response
SUCCESS=$(echo "$RESPONSE" | jq -r '.success')
if [ "$SUCCESS" = "true" ]; then
TRANS_REF=$(echo "$RESPONSE" | jq -r '.data.rawSlip.transRef')
AMOUNT=$(echo "$RESPONSE" | jq -r '.data.rawSlip.amount.amount')
IS_DUP=$(echo "$RESPONSE" | jq -r '.data.isDuplicate')
echo "Verified successfully!"
echo " Transaction: $TRANS_REF"
echo " Amount: $AMOUNT THB"
if [ "$IS_DUP" = "true" ]; then
echo " WARNING: Duplicate slip!"
fi
else
ERROR=$(echo "$RESPONSE" | jq -r '.error.message')
echo "Error: $ERROR"
exit 1
fiCheck Quota Script
bash
#!/bin/bash
# check-quota.sh
API_KEY="${EASYSLIP_API_KEY}"
SECRET_KEY="${EASYSLIP_SECRET_KEY}"
# HMAC signing
TIMESTAMP=$(date +%s)
NONCE=$(uuidgen | tr '[:upper:]' '[:lower:]')
BODY_HASH=$(printf '' | shasum -a 256 | cut -d' ' -f1)
STRING_TO_SIGN="GET\n/info\n${TIMESTAMP}\n${NONCE}\n${BODY_HASH}"
SIGNATURE=$(printf "${STRING_TO_SIGN}" | openssl dgst -sha256 -hmac "${SECRET_KEY}" | cut -d' ' -f2)
RESPONSE=$(curl -s -X GET "https://api.easyslip.com/v2/info" \
-H "X-API-Key: $API_KEY" \
-H "X-Timestamp: $TIMESTAMP" \
-H "X-Nonce: $NONCE" \
-H "X-Signature: $SIGNATURE")
SUCCESS=$(echo "$RESPONSE" | jq -r '.success')
if [ "$SUCCESS" = "true" ]; then
APP_NAME=$(echo "$RESPONSE" | jq -r '.data.application.name')
USED=$(echo "$RESPONSE" | jq -r '.data.application.quota.used')
MAX=$(echo "$RESPONSE" | jq -r '.data.application.quota.max')
REMAINING=$(echo "$RESPONSE" | jq -r '.data.application.quota.remaining')
echo "Application: $APP_NAME"
echo "Quota: $USED / $MAX (Remaining: $REMAINING)"
# Alert if above 90%
if [ "$MAX" != "null" ]; then
PERCENT=$((USED * 100 / MAX))
if [ $PERCENT -ge 90 ]; then
echo "WARNING: Quota usage at ${PERCENT}%!"
fi
fi
else
ERROR=$(echo "$RESPONSE" | jq -r '.error.message')
echo "Error: $ERROR"
exit 1
fiTesting with jq
Parse Response
bash
# Use the sign_request helper defined above, then pipe to jq
# Get transaction reference
BODY='{"payload": "YOUR_PAYLOAD"}'
sign_request "POST" "/verify/bank" "$BODY"
curl -s -X POST https://api.easyslip.com/v2/verify/bank \
-H "X-API-Key: ${API_KEY}" \
-H "X-Timestamp: ${TIMESTAMP}" \
-H "X-Nonce: ${NONCE}" \
-H "X-Signature: ${SIGNATURE}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.data.rawSlip.transRef'Environment Setup
Using Environment Variables
bash
# Export API key (branch UUID) and secret key
export EASYSLIP_API_KEY="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
export EASYSLIP_SECRET_KEY="your-secret-key-here"Using .env File
bash
# Load from .env file
export $(cat .env | xargs)
# Or use direnv
# echo 'export EASYSLIP_API_KEY="your-branch-uuid"' >> .envrc
# echo 'export EASYSLIP_SECRET_KEY="your-secret-key"' >> .envrc
# direnv allow