ตัวอย่าง Python
ตัวอย่างโค้ด Python สำหรับใช้งาน EasySlip API
การติดตั้ง
bash
pip install requestsตัวอย่างพื้นฐาน
ตรวจสอบด้วย Payload
python
import os
import requests
def verify_slip(payload: str, check_duplicate: bool = False) -> dict:
api_key = os.environ.get('EASYSLIP_API_KEY')
response = requests.post(
'https://developer.easyslip.com/api/v1/verify',
headers={
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
},
json={
'payload': payload,
'checkDuplicate': check_duplicate
}
)
result = response.json()
if result['status'] != 200:
raise Exception(result['message'])
return result['data']
# การใช้งาน
slip = verify_slip('00020101021230...')
print(f"จำนวนเงิน: {slip['amount']['amount']}")
print(f"ผู้โอน: {slip['sender']['displayName']}")
print(f"ผู้รับ: {slip['receiver']['displayName']}")ตรวจสอบด้วยรูปภาพ
python
import os
import requests
def verify_slip_image(file_path: str, check_duplicate: bool = False) -> dict:
api_key = os.environ.get('EASYSLIP_API_KEY')
with open(file_path, 'rb') as f:
response = requests.post(
'https://developer.easyslip.com/api/v1/verify',
headers={
'Authorization': f'Bearer {api_key}'
},
files={
'file': f
},
data={
'checkDuplicate': 'true' if check_duplicate else 'false'
}
)
result = response.json()
if result['status'] != 200:
raise Exception(result['message'])
return result['data']
# การใช้งาน
slip = verify_slip_image('/path/to/slip.jpg', check_duplicate=True)
print(f"จำนวนเงิน: {slip['amount']['amount']}")ตรวจสอบด้วย Base64
python
import os
import base64
import requests
def verify_slip_base64(base64_image: str, check_duplicate: bool = False) -> dict:
api_key = os.environ.get('EASYSLIP_API_KEY')
response = requests.post(
'https://developer.easyslip.com/api/v1/verify',
headers={
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
},
json={
'image': base64_image,
'checkDuplicate': check_duplicate
}
)
result = response.json()
if result['status'] != 200:
raise Exception(result['message'])
return result['data']
# การใช้งาน - แปลงไฟล์เป็น Base64
with open('/path/to/slip.jpg', 'rb') as f:
image_data = base64.b64encode(f.read()).decode('utf-8')
base64_image = f'data:image/jpeg;base64,{image_data}'
slip = verify_slip_base64(base64_image, check_duplicate=True)ตรวจสอบด้วย URL
python
import os
import requests
def verify_slip_url(url: str, check_duplicate: bool = False) -> dict:
api_key = os.environ.get('EASYSLIP_API_KEY')
response = requests.post(
'https://developer.easyslip.com/api/v1/verify',
headers={
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
},
json={
'url': url,
'checkDuplicate': check_duplicate
}
)
result = response.json()
if result['status'] != 200:
raise Exception(result['message'])
return result['data']
# การใช้งาน
slip = verify_slip_url('https://example.com/slips/slip.jpg', check_duplicate=True)API v2
ตรวจสอบสลิปธนาคาร (v2)
python
import os
import requests
def verify_slip_v2(payload: str, **options) -> dict:
api_key = os.environ.get('EASYSLIP_API_KEY')
body = {'payload': payload, **options}
response = requests.post(
'https://api.easyslip.com/v2/verify/bank',
headers={
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
},
json=body
)
result = response.json()
if result['status'] != 200:
raise Exception(result['message'])
return result['data']
# การใช้งานกับ account matching
slip = verify_slip_v2(
'00020101021230...',
receiverAccount='1234567890',
amount=1000.00
)
if slip['receiver']['account']['match']:
print('บัญชีผู้รับตรงกัน!')
if slip['amount']['match']:
print('จำนวนเงินตรงกัน!')ข้อมูลบัญชี (v2)
python
import os
import requests
def get_account_info_v2() -> dict:
api_key = os.environ.get('EASYSLIP_API_KEY')
response = requests.get(
'https://api.easyslip.com/v2/info',
headers={
'Authorization': f'Bearer {api_key}'
}
)
result = response.json()
if result['status'] != 200:
raise Exception(result['message'])
return result['data']
info = get_account_info_v2()
print(f"โควต้าคงเหลือ: {info['quota']['remaining']}")สร้าง QR Code (v1)
python
import os
import base64
import requests
def generate_qr(config: dict) -> dict:
api_key = os.environ.get('EASYSLIP_API_KEY')
response = requests.post(
'https://developer.easyslip.com/api/v1/qr/generate',
headers={
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
},
json=config
)
result = response.json()
if result['status'] != 200:
raise Exception(result['message'])
return result['data']
# สร้าง PromptPay QR
qr = generate_qr({
'type': 'PROMPTPAY',
'msisdn': '0812345678',
'amount': 100.00
})
# บันทึกเป็นไฟล์
image_data = base64.b64decode(qr['image'])
with open('qr-code.png', 'wb') as f:
f.write(image_data)
print('บันทึก QR Code สำเร็จ')EasySlip Client Class
python
import os
import requests
from typing import Optional, Dict, Any
from dataclasses import dataclass
@dataclass
class EasySlipException(Exception):
message: str
status: int
data: Optional[Dict[str, Any]] = None
class EasySlipClient:
def __init__(self, api_key: str, version: str = 'v1'):
self.api_key = api_key
self.base_url = f'https://developer.easyslip.com/api/{version}'
def _request(self, endpoint: str, method: str = 'GET', **kwargs) -> dict:
headers = {
'Authorization': f'Bearer {self.api_key}'
}
if 'json' in kwargs:
headers['Content-Type'] = 'application/json'
response = requests.request(
method,
f'{self.base_url}{endpoint}',
headers=headers,
**kwargs
)
result = response.json()
if result['status'] != 200:
raise EasySlipException(
message=result['message'],
status=result['status'],
data=result.get('data')
)
return result['data']
def verify_by_payload(self, payload: str, check_duplicate: bool = False) -> dict:
return self._request('/verify', 'POST', json={
'payload': payload,
'checkDuplicate': check_duplicate
})
def verify_by_image(self, file_path: str, check_duplicate: bool = False) -> dict:
with open(file_path, 'rb') as f:
return self._request('/verify', 'POST',
files={'file': f},
data={'checkDuplicate': 'true' if check_duplicate else 'false'}
)
def verify_by_url(self, url: str, check_duplicate: bool = False) -> dict:
return self._request('/verify', 'POST', json={
'url': url,
'checkDuplicate': check_duplicate
})
def verify_by_base64(self, image: str, check_duplicate: bool = False) -> dict:
return self._request('/verify', 'POST', json={
'image': image,
'checkDuplicate': check_duplicate
})
def generate_qr(self, config: dict) -> dict:
return self._request('/qr/generate', 'POST', json=config)
def get_account_info(self) -> dict:
return self._request('/me')
# การใช้งาน
client = EasySlipClient(os.environ.get('EASYSLIP_API_KEY'))
try:
slip = client.verify_by_payload('00020101021230...')
print(f"จำนวนเงิน: {slip['amount']['amount']}")
except EasySlipException as e:
print(f"Error: {e.message}")
if e.data:
print(f"Data: {e.data}")Async Client (aiohttp)
python
import os
import aiohttp
import asyncio
from typing import Optional, Dict, Any
class AsyncEasySlipClient:
def __init__(self, api_key: str, version: str = 'v1'):
self.api_key = api_key
self.base_url = f'https://developer.easyslip.com/api/{version}'
async def _request(self, endpoint: str, method: str = 'GET', **kwargs) -> dict:
headers = {
'Authorization': f'Bearer {self.api_key}'
}
if 'json' in kwargs:
headers['Content-Type'] = 'application/json'
async with aiohttp.ClientSession() as session:
async with session.request(
method,
f'{self.base_url}{endpoint}',
headers=headers,
**kwargs
) as response:
result = await response.json()
if result['status'] != 200:
raise Exception(result['message'])
return result['data']
async def verify_by_payload(self, payload: str, check_duplicate: bool = False) -> dict:
return await self._request('/verify', 'POST', json={
'payload': payload,
'checkDuplicate': check_duplicate
})
async def verify_by_image(self, file_path: str, check_duplicate: bool = False) -> dict:
with open(file_path, 'rb') as f:
data = aiohttp.FormData()
data.add_field('file', f, filename='slip.jpg')
data.add_field('checkDuplicate', 'true' if check_duplicate else 'false')
return await self._request('/verify', 'POST', data=data)
async def generate_qr(self, config: dict) -> dict:
return await self._request('/qr/generate', 'POST', json=config)
async def get_account_info(self) -> dict:
return await self._request('/me')
# การใช้งาน
async def main():
client = AsyncEasySlipClient(os.environ.get('EASYSLIP_API_KEY'))
slip = await client.verify_by_payload('00020101021230...')
print(f"จำนวนเงิน: {slip['amount']['amount']}")
asyncio.run(main())Flask Integration
python
import os
from flask import Flask, request, jsonify
from werkzeug.utils import secure_filename
app = Flask(__name__)
client = EasySlipClient(os.environ.get('EASYSLIP_API_KEY'))
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'webp'}
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/verify', methods=['POST'])
def verify_slip():
if 'file' not in request.files:
return jsonify({'error': 'ไม่พบไฟล์'}), 400
file = request.files['file']
if file.filename == '':
return jsonify({'error': 'ไม่ได้เลือกไฟล์'}), 400
if not allowed_file(file.filename):
return jsonify({'error': 'ประเภทไฟล์ไม่รองรับ'}), 400
try:
# บันทึกไฟล์ชั่วคราว
filename = secure_filename(file.filename)
file_path = f'/tmp/{filename}'
file.save(file_path)
# ตรวจสอบสลิป
slip = client.verify_by_image(file_path, check_duplicate=True)
# ลบไฟล์ชั่วคราว
os.remove(file_path)
return jsonify({
'success': True,
'data': slip
})
except EasySlipException as e:
return jsonify({
'success': False,
'error': e.message
}), 400
except Exception as e:
return jsonify({
'success': False,
'error': str(e)
}), 500
if __name__ == '__main__':
app.run(debug=True)จัดการ Error
python
def verify_with_error_handling(payload: str) -> dict:
try:
slip = verify_slip(payload)
return {'success': True, 'data': slip}
except Exception as e:
error_messages = {
'invalid_payload': 'Payload ไม่ถูกต้อง',
'slip_not_found': 'ไม่พบสลิป',
'quota_exceeded': 'โควต้าหมด',
'duplicate_slip': 'สลิปซ้ำ',
'unauthorized': 'API Key ไม่ถูกต้อง'
}
message = error_messages.get(str(e), str(e))
return {'success': False, 'error': message}