방글라데시 결제 샌드박스 환경 테스트 가이드라인
방글라데시 결제 샌드박스 환경 테스트 가이드라인
1. 개요
이 가이드는 개발자와 테스터에게 방글라데시 결제 시스템의 샌드박스 환경에서의 통합 및 테스트에 대한 자세한 지침을 제공합니다. 샌드박스 환경은 실제 결제 시스템의 동작을 시뮬레이션하지만 실제 자금 흐름은 포함하지 않습니다.
2. 액세스 권한 얻기
2.1 등록 절차
- 1단계액세스방글라데시 중앙은행(NBP) 개발자 포털
- 2단계개발자 등록 양식을 작성하고 필요한 서류(사업자 등록증, 납세 증명서 등)를 제공합니다.
- 3단계검토 대기 중(보통 영업일 기준 3~5일 소요)
2.2 API 키 획득
검토를 통과한 후 받게 됩니다:
- 샌드박스 API 키
- 판매자 ID/테스트 계정
- API 문서 액세스
3. 샌드박스 엔드포인트 URL
서비스 유형 | 샌드박스 URL |
---|---|
OAuth 인증 | https://api-sandbox.nbp.gov.bd/oauth/token |
QR 결제 | https://api-sandbox.nbp.gov.bd/qr/v1/payments |
P2P 전송 | https://api-sandbox.nbp.gov.bd/payment/v1/transfers |
청구서 결제 | https://api-sandbox.nbp.gov.bd/billpay/v1/payments |
4. 테스트 자격증명(테스트 목적으로만 사용)
판매자 계정.
판매자 ID: TESTMERCH001
API 키: sb_test_1234567890abcdefghijklmnopqrstuvwxyz
고객 계정.
모바일 지갑: +88017XXXXXXXX(+88017로 시작하는 숫자 사용)
PIN: 1234(모든 테스트 계정에 공통)
5 . 일반적인 트레이딩 시나리오를 위한 샘플 코드(Python)
가져오기 요청
토큰을 받기 위한 # OAuth 인증
auth_url = "https://api-sandbox.nbp.gov.bd/oauth/token"
헤더 = {
"콘텐츠 유형": "application/x-www-form-urlencoded",
"권한 부여": "기본 [base64 인코딩된 client_id:client_secret]"
}
data = {
"grant_type": "client_credentials"
}
응답 = requests.post(auth_url, headers=headers, data=데이터)
access_token = response.json()["access_token"]
# QR 결제 요청 예시
qr_payload = {
"merchantId": "[YOUR_MERCHANT_ID]",
"amount":100,
# ... 기타 필수 필드는 API 설명서를 참조하세요...
}
QR_헤더={
'권한': f'무기명 {access_token}',
'Content-Type':'application/json'
}
qr_response=requests.post(
'https://api-sandbox.nbp.gov.bd/qr/v1/payments',
json=qr_payload.
헤더=QR_헤더
)
print(qr_response.json())
6 . 오류 처리 및 디버깅 팁
일반적인 HTTP 상태 코드.
-400 잘못된 요청 → 요청 형식이 올바른지 확인합니다.
-401 권한 없음 →API 키/OAuth 토큰이 유효하고 만료되지 않았는지 확인합니다.
-403 금지됨→판매자 계정에 이 작업을 수행할 수 있는 권한이 있는지 확인합니다.
권장 사항 로깅.
curl-v-X POST\ https:/... \
-"권한 부여: 무기명 $TOKEN"\
-d@request_body.json>response.log
7 . 제한 및 할당량
샌드박스 환경에는 다음과 같은 제한 사항이 있습니다:
-단일 거래 금액이 Tk. 100,000 (BDT)를 초과하지 않습니다.
-일일 누적 거래액이 Tk. 500,000을 초과하지 않아야 합니다.
-분당 최대 30건의 API 호출
8 . 지원 채널
다음은 문제가 발생했을 때 도움을 받을 수 있는 방법입니다:
-이메일.[email protected]
-슬랙.NBP 개발자 커뮤니티
-전화: +880XXXXXXX(월~금 오전 9시~오후 5시 GMT+6)
방글라데시에서 결제 샌드박스 환경을 테스트하기 위한 가이드라인(계속)
9. 테스트 케이스 설계 권장 사항
9.1 핵심 결제 시나리오
- 성공적인 결제 프로세스:: 소량(10 BDT), 표준 금액(500 BDT), 경계값(99,999 BDT)
- 실패 장면::
- PIN 오류 연속 입력(잠금 메커니즘에 대해 3번 테스트)
- 잔액 부족 거래
- QR코드 만료된 거래(기본 15분 만료)
9.2 API 유효성 검사 매트릭스
API 메서드 | HTTP 상태 코드 | JSON 응답 필드 |
---|---|---|
POST /결제 | 201 생성됨 |
트랜잭션Id , 상태: "보류 중" |
GET /거래/{id} | 200 OK |
결제금액 , 수수료 세부 정보 |
결제 /결제/{ID} 삭제(환불) | 202 수락됨 |
반전참조 |
10 . 로컬 시뮬레이션 도구
Docker 이미지 빠른 배포:
도커 실행 -p8080:8080 nbp/샌드박스-시뮬레이터:v2.4 \
-e 모의_응답_지연=200ms \
-e FAILURE_RATE=5%
구성 매개변수 설명:
- DELAY_MS: 아날로그 네트워크 지연(기본값 150ms)
- 실패율: 자동화된 실패 요청의 비율(스트레스 테스트용)
11 . 보안 규정 준수 요구 사항
반드시 실현해야 하는 보호 조치:
-
암호화된 전송모든 요청에 TLS 1.2+ 사용 의무화
# Nginx 샘플 구성
ssl_프로토콜 TLSv1.2 TLSv1.3.
ssl_ciphers HIGH:!aNULL:!MD5;
-
민감한 데이터 무감각화::
# Python 로그 필터링 예제
로깅 가져오기
클래스 SensitiveDataFilter(logging.Filter).
def filter(self, record).
record.getMessage().lower()에 'pin'이 있으면:
반환 거짓
True를 반환합니다.
3.인증 개선 권장 사항
POST /auth/token HTTP/1.
호스트 : api-sandbox.nbp.gov.bd
인증 : 기본 base64(client_id:SHA256(client_secret+타임스탬프))
X-타임스탬프 :20240605T143812Z
12 . 성능 벤치마크 참조
AWS t3.xlarge 인스턴스에서 측정되었습니다.
-평균 응답 시간: 120±25ms(P95)
-처리량: 220TPS(지속적 부하 시)
-콜드 스타트 지연 시간: 첫 번째 통화 시 300-500밀리초 추가
13 . 프로덕션 전환 체크리스트
샌드박스 테스트를 완료한 후 확인하시기 바랍니다:
✅ [ ] IP 화이트리스트가 NBP 운영팀에 제출되었습니다.
✅ [ ] 신뢰할 수 있는 CA에서 발급한 SSL 인증서이며 만료되지 않았습니다.
✅ [ ] 오류 코드 처리 범위 최대 100%
✅ [ ] 모의 데이터 및 실제 계정 전환 완료
"방글라데시 전자 결제 시스템 통합을 위한 사양"의 전체 버전을 PDF로 받으려면 다음 주소로 공식 요청 이메일을 보내주세요.[email protected] 이메일 제목 형식: "[API 문서 요청] {회사 이름}"