방글라데시 결제 API에 액세스하는 방법?초보자를 위한 개발자 튜토리얼
방글라데시 결제 API에 액세스하는 방법?초보자를 위한 개발자 튜토리얼
I. 방글라데시 결제 시장 개요
남아시아에서 가장 빠르게 성장하는 경제 국가 중 하나인 방글라데시의 전자결제 시장은 최근 몇 년 동안 급성장했습니다. 스마트폰 보급률이 증가하고 인터넷 인프라가 개선됨에 따라 점점 더 많은 기업과 개발자가 현지화된 결제 솔루션에 액세스하고자 합니다. 이 글에서는 방글라데시의 주요 결제 API에 액세스하는 방법을 기술적인 측면에서 자세히 소개합니다.
II. 사전 준비 작업
1. 올바른 결제 서비스 제공업체 선택
방글라데시에서 운영되는 주요 결제 게이트웨이는 다음과 같습니다:
- 비캐시(시장 점유율 1위)
- 나가드(정부 지원 디지털 지갑)
- 로켓(네덜란드-방글라 은행의 일부)
- Upay
- SureCash
2. 판매자 계정 등록
선택한 제공업체의 공식 웹사이트를 방문하여 다음 단계를 완료하세요:
- 사업자 등록 서류 제출
- 신청서 작성
- 검토 대기 중(보통 영업일 기준 3~7일)
- 판매자 ID 및 API 키 가져오기
3. API 문서 액세스
등록에 성공하면 판매자 백오피스에 로그인하여 최신 버전의 API 설명서를 다운로드합니다. 대부분의 공급업체는 RESTful API 인터페이스를 지원합니다.
III. 개발 환경 구성
1. 기본 요구 사항
- HTTPS 프로토콜(SSL 인증서 필요)
- IP 화이트리스트 설정(일부 플랫폼에 필요)
-서버 표준 시간대가 UTC+6(다카 시간)으로 설정됨
2. SDK 설치(예시: PHP)
// 컴포저를 통해 공식 SDK를 설치합니다.
작곡가 요구 BKASH/API-클라이언트
// 또는 수동으로 도입
require_once '경로/to/bKashApi.php';
Python/Java/Node.js와 같은 다른 언어에서도 해당 SDK를 사용할 수 있습니다.
넷째, 핵심 API 도킹 프로세스
다음은 일반적인 통합 단계입니다:
1. 인증
//예시: 액세스 토큰 가져오기
const authResponse = await fetch('https://api.bkash.com/token', {
메서드: 'POST',
헤더: {
'콘텐츠 유형': 'application/json',
'사용자이름': '[YOUR_MERCHANT_USERNAME]',
'password': '[YOUR_API_PASSWORD]'
},
body: JSON.stringify({ grant_type: 'client_credentials' })
});
2. 트랜잭션 요청 만들기
# 파이썬 예제 - 결제 요청 시작하기
가져오기 요청
페이로드 = {
"mode": "0011", # 테스트 모드 코드
"payerReference": "INV12345".
"callbackURL": "https://yourdomain.com/callback",
"amount": "500",
"통화": "BDT".
"intent": "sale"
}
헤더 = {
"권한": "무기명 [ACCESS_TOKEN]",
"X-App-Key":"[APP_KEY]"
}
response=requests.post("https://api.bkash.com/create",json=payload,headers=headers)
3. 콜백 알림 처리하기
모든 거래 상태 변경 사항은 웹훅을 통해 알림을 받습니다:
// 자바 스프링 부트 수신 콜백 예제
포스트매핑("/결제/콜백")
public ResponseEntity handleCallback(@RequestBody CallbackData data) {
if(data.getStatus().equals("Completed")){
// 주문 상태를 결제됨으로 업데이트
} else {
//실패 사유 문서화
}
새 응답 엔티티("OK", HttpStatus.OK)를 반환합니다;
}
4. 거래 결과 문의
콜백을 받더라도 확인을 위해 적극적으로 문의해야 합니다:
$transactionId="TRX789012".
$queryUrl="https://api.nagad.com/query/".$transactionId;
$ch=curl_init($queryUrl);
curl_setopt($ch,CURLOPT_HTTPHEADER,[
'권한:무기명 '.$accessToken,
'X-Merchant-ID:'.$merchantId'.
]);
$result=curl_exec($ch);
/* JSON 형식을 반환합니다.
{
"statusCode": "0000",
"금액": "1000",
"trxTimestamp": "2023-05
V. 샌드박스 환경의 테스트 및 사용
1. 시험 바우처 받기
모든 주요 결제 플랫폼은 샌드박스 환경을 제공합니다:
- 비캐시 샌드박스. https://developer.bkash.com
- 나가드 테스트 포털. https://sandbox.mynagad.com
- 로켓 개발 구역. https://developer.rocket.com.bd
신청 시 필수입니다:
- 테스트 휴대폰 번호(인증 코드 수신용)
- 가상 판매자 ID
- API 키 시뮬레이션
2. 일반적인 테스트 시나리오
사용 사례 | 테스트한 금액(BDT) | 예상 결과 |
---|---|---|
소액 금융 | 10-100 | 신속한 결제 |
대규모 거래 | 5000+ | OTP 인증이 필요할 수 있습니다. |
중복 주문 ID | 금액 제한 없음 | 는 오류를 반환해야 합니다. |
만료된 세션 | 타임아웃 결제ID |거래 만료 알림|거래 만료 알림 |
# cURL 테스트 예제(Nagad)
curl -X POST \
https://sandbox.mynagad.com/api/checkout \
-H '콘텐츠 유형: 애플리케이션/json' \
-d '{
"merchantId": "TEST001".
"invoiceNumber": "DEMO123".
"amount": "50.00"
}'
VI. 프로덕션 환경 온라인 체크리스트
공식 환경으로 전환하기 전에 다음 단계를 완료하세요:
- SSL 인증서, PCI DSS 준수 테스트 통과
- 결제 플랫폼 백엔드에서 IP 화이트리스트가 구성되었습니다.
- 웹훅 엔드포인트 스트레스 테스트(200+ TPS 지원 권장)
- 조정 모듈 통합 완료
- 방글라데시 언어 오류 메시지 현지화
VII. 특별 고려 사항
1.방글라데시 현지 규정 준수 요구 사항
-거래 기록을 최소 5년간 보관해야 합니다.
-5,000 BDT 이상의 거래는 추가 인증 제출이 필요합니다.
-도박/성인 콘텐츠와 같은 고위험 업종에 대한 접근 금지
2.통화 및 수수료
주요 결제수단별 요금 비교:
(참고: 그림은 실제 데이터 차트로 대체해야 합니다.)
비캐시 → 1.85% + VAT
나가드 → 고정 15 BDT/펜
로켓 → 기업 계정 1%로 협상 가능
신용 카드 액세스 → 3%-4%(권장하지 않음)
VIII. 문제 해결 가이드
API가 오류를 반환할 때 참조합니다:
HTTP 상태 코드 분석
표: 일반적인 오류 코드 비교
| 코딩 | 숨겨진 의미 | 처방전 |
|----|----- ----|----- ------|
401 인증 실패 ⇒ 타임스탬프가 UTC+6 표준 시간대인지 확인합니다.
403 IP가 승인되지 않음 ⇒ 고객 서비스에 문의하여 서버 IP를 추가하세요.
429 요청 흐름 제한 ⇒ 통화 빈도 감소 또는 할당량 증가 요청
503 서비스 유지보수 ⇒ 공식 현황 페이지(status.nagad.com) 보기
// 일반적인 오류 처리 로직의 예(bKash)
시도 {
const payment = await bkash.createPayment(params);
} catch (error) { //비즈니스별 예외를 잡습니다.
if(error.code === 'INSUFFICIENT_BALANCE'){
alert("사용자의 지갑 잔액이 부족합니다");;
} else if(error.code === 'TX_TIMEOUT'){
console.log("이 주문이 만료되었습니다, 다시 시작하세요");
}
}
IX. 모범 사례 권장 사항
50개 이상의 지역 비즈니스를 매칭한 경험을 바탕으로 합니다:
✔️ 하이브리드 통합 전략
수익에 영향을 미치는 단일 장애 지점을 방지하기 위해 최소 두 개의 결제 채널(예: bKash + 나가드)에 동시에 액세스해야 합니다.
✔️ 지능형 경로 최적화
실시간 성공률에 따른 자동 채널 전환:
if(bkash 실패 횟수 > 3){
fallbackTo(nagadAPI).
}
✔️ 향상된 로컬라이제이션 경험
- 라마단 기간 중 영업 시간 표시 조정
- 오른쪽에서 왼쪽으로 읽는 습관에 맞춘 UI(벵골어 인터페이스)
더 자세한 코드 예제나 플랫폼별 도킹 매뉴얼은 개발자 커뮤니티[링크]에서 최신 리소스를 참조하시기 바랍니다. 이 문서는 2024년 방글라데시 중앙은행의 새로운 규정 변경 사항을 반영하여 계속 업데이트될 예정입니다.