bog-payment-gateway
npx machina-cli add skill furkha/claude-skill-bog-payment-gateway/bog-payment-gateway --openclawBOG Payment Gateway Integration
This skill provides guidance for integrating with the Bank of Georgia (BOG) Online Payment API.
Quick Reference
| Item | Value |
|---|---|
| Auth URL | https://oauth2.bog.ge/auth/realms/bog/protocol/openid-connect/token |
| API Base | https://api.bog.ge/payments/v1 |
| Auth Method | OAuth 2.0 Client Credentials |
| Data Format | JSON |
IMPORTANT:
- All callback URLs MUST use HTTPS
- All API requests MUST include
Accept-Language: kaorAccept-Language: enheader
Integration Flow
- Authenticate - Get access token using client credentials
- Create Order - Submit order with basket items and callbacks
- Redirect - Send customer to payment page (URL from response)
- Handle Callback - Receive payment result at callback URL
- Verify - Check payment status via API
Authentication
const getAccessToken = async (clientId: string, clientSecret: string) => {
const credentials = Buffer.from(`${clientId}:${clientSecret}`).toString('base64');
const response = await fetch(
'https://oauth2.bog.ge/auth/realms/bog/protocol/openid-connect/token',
{
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': `Basic ${credentials}`
},
body: 'grant_type=client_credentials'
}
);
const { access_token, expires_in } = await response.json();
return { access_token, expires_in };
};
Core Endpoints
Create Order
POST https://api.bog.ge/payments/v1/ecommerce/orders
Authorization: Bearer {access_token}
Content-Type: application/json
Request body:
{
"callback_url": "https://example.com/callback",
"external_order_id": "ORDER-123",
"purchase_units": {
"currency": "GEL",
"total_amount": 100.00,
"basket": [
{
"product_id": "PROD-1",
"quantity": 1,
"unit_price": 100.00
}
]
},
"redirect_urls": {
"success": "https://example.com/success",
"fail": "https://example.com/fail"
}
}
Response includes _links.redirect.href for payment page URL.
Get Payment Details
GET https://api.bog.ge/payments/v1/receipt/{order_id}
Authorization: Bearer {access_token}
Refund Payment
POST https://api.bog.ge/payments/v1/payment/refund/{order_id}
Authorization: Bearer {access_token}
Content-Type: application/json
{"amount": 50.00} // Optional - omit for full refund
Response Codes
| Code | Meaning |
|---|---|
| 100 | Successful payment |
| 200 | Successful preauthorization |
| 101 | Card usage limited |
| 102 | Saved card not found |
| 103 | Invalid card |
| 104 | Transaction limit exceeded |
| 105 | Card expired |
| 106 | Amount limit exceeded |
| 107 | Insufficient funds |
| 108 | Authentication declined |
| 109 | Technical issue |
| 110 | Transaction expired |
| 111 | Authentication timeout |
| 112 | General error |
Detailed References
- Full API Reference: See references/api.md for complete endpoint documentation
- TypeScript Types: See references/types.ts for type definitions
- Error Handling: See references/api.md for error code details
Implementation Checklist
- Store
client_idandclient_secretsecurely (env vars) - Implement token caching with expiry handling
- Use HTTPS for all callback URLs
- Implement idempotency keys for order creation
- Handle all response codes appropriately
- Log transaction IDs for debugging
Source
git clone https://github.com/furkha/claude-skill-bog-payment-gateway/blob/main/skills/bog-payment-gateway/SKILL.mdView on GitHub Overview
This skill guides integrating Bank of Georgia's Online Payment API for accepting online payments. It covers creating orders, processing refunds, checking payment status, and authenticating via OAuth 2.0, with HTTPS callbacks and language headers.
How This Skill Works
Authenticate with client credentials to obtain an access token, then create an order via the ecommerce/orders endpoint with basket items and callback/redirect URLs. Redirect the customer to the payment page using the URL from the response, handle the payment callback, and verify status via the receipt endpoint.
When to Use It
- Building an online checkout flow for a Georgian e-commerce site.
- Processing full or partial refunds through the BOG API.
- Implementing OAuth 2.0 client credentials authentication for BOG.
- Redirecting customers to the BOG-hosted payment page after order creation.
- Verifying and reconciling payment status after callback.
Quick Start
- Step 1: Obtain an access token using client_id and client_secret via the OAuth token endpoint.
- Step 2: Create an order with basket items and callback/redirect URLs at POST https://api.bog.ge/payments/v1/ecommerce/orders.
- Step 3: Redirect the customer to the payment page URL from the response, handle the callback, then verify status with the receipt endpoint.
Best Practices
- Use HTTPS for all callback URLs and ensure redirect URLs are secure.
- Store and cache access tokens with proper expiry handling to minimize token requests.
- Include Accept-Language: ka or Accept-Language: en in all API requests.
- Implement idempotency keys for order creation to avoid duplicate charges.
- Log transaction IDs and responses for tracing, debugging, and reconciliation.
Example Use Cases
- Georgian e-commerce site implementing BOG to accept online payments and handle redirects to the BOG payment page.
- Refund workflow demonstrating full and partial refunds via /payment/refund/{order_id}.
- Callback handler that processes payment results and triggers order status updates.
- OAuth 2.0 client credentials flow to obtain and refresh access tokens for API calls.
- End-to-end flow for a single order: create order, redirect, callback, verify status.