AboutContactRecruit
Our LAB

Column

E-FUSIONI COLUMN

미국식 결제 및 정산 처리
PG Cybersource 적용기 (Spring Boot 기반):

최근 해외(미국) 고객사 SI 프로젝트를 진행하며 미국의 전자 결제 시스템을 적용하였는데 미국의 전자 결제 서비스 중 하나인 Cyber source(VISA 자회사)를 사용하면서 한국과는 다른 결제 방식에 대한 경험을 공유하고자 글을 작성하게 되었습니다.

미국의 전자 결제 방식



미국의 전자 결제 서비스가 국내 서비스의 가장 큰 차이점은 기승인(Pre-Authorize)단계와 결제 확정(Capture Order) 단계로 나누어져 있다는 부분입니다.


미국은 결제 진행 시 카드사에서는 우선 기승인(Pre-Authorize) 처리가 됩니다. 이때 고객의 카드 한도만 사용되는 결제 대기(Hold) 상태가 되며, 이후 실제 물건이 배송이 되거나 하면 쇼핑몰에서 최종 승인 요청(Capture-Order)을 한 뒤, 카드사에서 최종 결제 처리를 하게 되어 고객의 계좌에서 금액이 인출 됩니다.


그래서 쇼핑몰에서 결제 후 최종 승인되는 며칠 동안 실제 계좌에서는 돈이 나가지 않습니다. 그에 반해 국내는 결제 시 바로 카드 승인이 나는 구조라서 승인 단계 후 추가 작업이 없어 바로 돈이 빠져나가게 되는 것 입니다.

미국의 전자 결제 서비스

미국의 전자 결제 서비스

Cybersoruce 전자 결제 솔루션 도입



전자 결제 시스템을 구축하기 위해서는 아래와 같은 보안 및 기능 요건을 준수해야 했습니다.


  1. 사기 방지(Fraud Prevention) 및 리스크 관리

고객의 거래 활동을 모니터링하여 이상 징후를 탐지하고, 잠재적인 사기 행위를 사전에 차단할 수 있는 기능이 필요합니다. 이를 통해 고객과 회사 모두의 금융 안전성을 높일 수 있습니다.


  1. 다양한 결제 수단 지원

기본적인 신용카드 외에도 PayPal, Google Paly 등 주요 결제 수단을 지원하여 고객이 편리하게 결제할 수 있어야 합니다.


  1. 가승인(Authorize) 및 결제 확정(Capture) 단계 관리

미국의 결제 시스템과 같이 승인과 결제 확정이 분리된 프로세스에 대한 관리를 지원할 수 있어야 합니다.


  1. PCI DSS (Payment Card Industry Data Security Standard)

카드 정보가 안정하게 저장, 전송 처리될 수 있도록 하기 위해 결제 솔루션이 PCI DSS 표준을 준수해야 합니다 이 규격을 통해 결제 시스템의 보안 수준을 일관되게 유지할 수 있습니다.


이러한 요구사항을 고려하여, 고객사는 글로벌 전자 결제 솔루션인 Cybersource를 도입하기로 결정했습니다. Cybersource는 VISA의 자회사로, 미국 시장을 중심으로 한 전문적인 전자 결제 플랫폼입니다. 소규모 사업자를 위한 Authorize.net 과 같은 서비스를 포함하여 다양한 결제 솔루션을 제공합니다.


Cybersource는 PCI DSS 표준을 준수하며, Decision Manager 라는 사기 방지 시스템을 통해 이상 거래를 실시간으로 탐지하고 대응할 수 있습니다. 또한, Tokenization 기술을 활용하여 고객의 카드 정보를 쇼핑몰에서 직접 저장하지 않고 안전하게 처리할 수 있는 환경을 제공합니다.

Springboot 연동 설정



이번 프로젝트 환경 구성은 Front-end는 React, Back-end는 Spring Boot로 구성했습니다. 이 환경에 적합하면서 보안 준수 사항을 충족하는 결제 솔루션으로 Cybersource flex-microform 방식을 채택했습니다.


* Cybersource flex-microform 방식은 민감한 결제 정보를 직접 서버에 전달하지 않고, 클라이언트 측에서 카드 정보를 암호화한 후

토큰으로 변환하는 방식을 사용합니다.


제가 담당하는 부분은 Back-end 중심이므로, 이후 가이드는 Spring Boot 기반 설정을 주로 설명하겠습니다.

1. Cybersource 관련 모듈 추가



프로젝트에 Cybersource 관련 모듈을 추가해야 합니다 아래 SDK와 클라이언트를 포함하여 필요한 라이브러리를 구성합니다


- Cyber Source Java SDK for Simple Order API

참고 문서: https://github.com/CyberSource/cybersource-sdk-java



- Cyber Source Rest Client Java

Github : https://github.com/CyberSource/cybersource-rest-client-java

2. 인증 패키지 Key 파일 생성



Cybersource 서비스간에 서버와 클라이언트간에 사용할 인증 패키지 Key 파일을 생성합니다. 이 파일은 Cybersource 관리자 사이트인

EBC (Enterprise Business Center) 에서 발급받습니다.



- Docs

참고 문서: https://developer.cybersource.com/docs/cybs/en-us/platform/developer/all/rest/rest-getting-started/

restgs-jwt-message-intro/restgs-security-p12-intro/restgs-security-P12.html

3. Cybersource properties 설정



Cybersource 모듈 사용을 위해 기본 설정 파일을 구성해야 합니다. 2단계에서 발급받은 파일 경로와 merchantid 등을 포함하여, Resources 디렉토리 하위에 cybs.properties 파일을 생성하고 다음과 같은 기본 값을 설정해 주세요.

Cybersource properties 설정

Cybersource properties 설정

자세한 설정 항목은 아래 링크에서 확인할 수 있습니다.



- Docs

참고 문서: https://github.com/CyberSource/cybersource-sdk-java/blob/master/java/src/main/resources/cybs.properties

4. Spring Boot API Config 설정



3단계에서 설정한 properties 값을 Spring Boot 서비스 내에서 사용하기 위해, ApiClient 관련 설정을 구성해야 합니다. 이를 위해 필요한 Bean 등록

@PostConstruct 어노테이션을 통해 초기화합니다.

Spring Boot API Config 설정

Spring Boot API Config 설정

결제 테스트



구성을 마쳤다면 FE(React) 화면에서 결제 페이지의 카드번호 입력란에 Cybersource에서 제공하는 iFrame 기반의 microform 입력 창이 생성된 것을 확인할 수 있습니다.

microform 입력

microform 입력

이 IFrame은 Cybersource의 모듈로 호출되며, 저희 시스템에서는 고객이 입력하는 카드번호와 같은 민감 정보를 직접 처리하지 않습니다. 카드번호와 CVC 값이 입력되면 Cybersource에서 React 애플리케이션으로 Token 값이 전달됩니다. 이 Token을 Back-end API의 결제 요청 파라미터로 사용하여, Back-end에서는 다시 Cybersource와 인증 과정을 통해 Pre-Authorize 승인을 진행하게 됩니다.

Pre-Authorize 응답 내용(좌Key 우Value)

Pre-Authorize 응답 내용(좌Key 우Value)

정상적인 결제 성공 시 Pre-Authorize 응답 내용


  1. requestID 항목은 승인 번호를 의미하며, 이를 통해 EBC(Enterprise Business Center)에서 거래를 조회하고 Capture-Order 처리를 할 수 있습니다.
  2. decision 항목은 승인 결과를 나타내며, ACCEPT, REJECT, ERROR, REVIEW 중 하나의 코드 가 반환됩니다.
  3. 그 외 API 필드 관련

Doc : https://developer.cybersource.com/docs/cybs/en-us/api-fields/reference/all/so/api-fields/api-fields-about-guide.html

결제 시퀀스 다이어그램

결제 시퀀스 다이어그램

5단계 과정을 마치면 전자결제가 승인되며, 결제 고객에게는 결제 완료 화면이 표시되고 이후에는 배송 관련 안내가 진행됩니다.


배송 단계에서는 최종 매출 처리를 위해 Capture-Order 작업이 필요합니다. 이 Capture-Order 요청은 이전에 받은 requestID 값을 사용하여 Cybersource에 최종 승인 요청을 보내는 방식으로 이루어집니다. 호출 API는 Pre-Authorize와 동일한 API를 사용하지만, 요청 항목(request parameters)에 약간의 차이가 있습니다. 이렇게 모든 절차를 완료하면 결제 및 매출 처리가 완료되어 고객과의 전자결제 흐름이 완성됩니다.


단순히 데이터의 흐름을 보면 국내 결제와 크게 다르진 않습니다. 고객이 결제 시도를 하면 Server 단에서 Cybersource와 통신하여 인증받은후에 고객에게 결제 완료 메 시지를 보여주면 되니까요

마무리



1. TAX (세금)


미국의 복잡한 세금 계산을 위해 Cybersource의 Tax Calculation API를 활용하여 처리했습니다.


- Cybersource Tax Calculation ARL

https://www.cybersource.com/en-us/solutions/unified- commerce/commerce-services/global-tax-calculation.html



2. Re-Authorize


Pre-Authorize와 Capture-Order 간의 기간이 길어질 경우, Cybersource의 인증 토큰을 재갱신 하는 처리가 필요합니다. 이를 배치 서비스를 통해 주기적으로 토큰을 갱신하는 방식으로 구현 했습니다.



3. 3D Secure


사용자 추가 보안 인증을 위한 기술로, 결제 단계에서 3D Secure를 사용했습니다.


- 3D Secure 참고 자료

https://www.cybersource.com/en/solutions/fraud-and-risk-management/3d-secure-and-psd2.html



4. Decision Manager


이상 거래 탐지를 위해 Decision Manager를 통해 데이터 연동 및 후속 처리(Under Review 상태 관리)를 구현했습니다.


- Cybersource Decision Manager 참고 자료

https://www.cybersource.com/en-ap/solutions/fraud-and-risk-management/decision-manager.html



이번 프로젝트를 통해 미국과 국내의 결제 방식에 차이가 있다는 점을 깊이 이해할 수 있었습니다.


특히 미국에서는 결제 승인(authorization)과 실제 결제 완료(capture) 과정이 분리되어 있어, 고객의 결제 요청이 승인된 이후에도 일정 시간 내에 별도의 캡처 단계가 필요하다는 점이 인상적이었습니다. 아울러 다양한 보안 기능을 추가하며 실질적인 보안 강화 기술의 구현 경험이 좋았던 것 같습니다. 이를 통해 전자 결제 시스템 개발에서 보안이 얼마나 중요한 요소인지 깨닫게 되었고, 향후 글로벌 결제 시스템 구축에 필요한 기초와 경험을 다질 수 있었습니다.


긴 글 읽어주셔서 감사합니다.