회사에서 엑심베이(Eximbay) 결제 모듈을 연동할 일이 생겨서 Nuxt.js에 엑심베이 FGKEY를 설정했을 때 사용한 코드를 공유하도록 하겠습니다.
기본적으로 엑심베이에서 FRKEY를 사용하는 이유는 가맹점과 Eximbay 사이에 전송되는 파라미터의 유효성을 확인하기 위해 사용됩니다.
Eximbay에 모든 거래 요청 시, 파라미터를 SHA-256으로 Hashing 하여 fgkey 파라미터로 전달하며, 이 값은 Eximbay에서 생성된 Hashing 값과 비교하여 거래의 유효성을 확인합니다. 응답 파라미터의 fgkey는 Eximbay에서 생성하며, 동일한 방법으로 가맹점에서 거래의 유효성을 확인합니다.
fgkey생성을 위해서는 승인된 key가 필요하며, 해당 key는 Eximbay로부터 할당받습니다. 실제 서비스에 반영할 때는 엑심베이로부터 부여받은 key를 사용하여 해시(hash) 값을 생성한 후 Eximbay에 전달해야 하며, 외부에 유출되지 않도록 관리해야 합니다.
fgkey는 아래 3단계를 통해서 해시 값을 생성합니다.
A. 모든 요청/응답 파라미터를 알파벳순서로 sorting하여 데이터를 생성
B. secretkey와 A의 데이터를 “?”로 연결
C. B의 결과를 SHA256 함수를 통해 Hashing 하여 생성합니다.
secretkey는 엑심베이로부터 부여받은 키입니다.
yarn add js-sha256 // SAH256 암호화를 하기 위해 js-sha256 패키지 설치
const makeFgkey = (secrentKey, params) => {
const sortedKeys = Object.keys(params).sort() // 요청 파라미터를 알파벳순서로 정렬
// A의 값을 생성합니다.
const query = sortedKeys.reduce((acc, key, i) => {
const value = params[key]
const prefix = i === 0 ? '' : '&'
return acc + `${prefix}${key}=${value}`
}, '')
return sha256(`${secrentKey}?${query}`) // sha256을 활용해서 해시처리
}
// 사용예시
const hashvalue = makeFgkey('289F40E6640124B2628640168C3C5464', { ver: 230 });
엑심베이는 이니시스(이니페이)보다 좀 더 쉽게 결제모듈을 사용할 수 있는 것 같습니다. 이니시스는 PC와 모바일의 파라미터 양식이 달라서 굉장히 귀찮고 번거로웠지만 엑심베이는 동일한 양식으로 넘길 수 있었습니다. Private Key를 생성하는 방식은 두 업체 모두 방식이 같습니다. 예시로 Nuxt.js 프레임워크에서 사용하는 방법을 들었는데 결제모듈 흐름만 잘 알면 다른 프레임워크를 사용하더라도 굉장히 간단하게 구현할 수 있습니다.
'개발 > Vue' 카테고리의 다른 글
Vue 클릭이벤트(click event) 여러개 설정하는 방법 (How to call multiple functions with @click in vue) (2) | 2020.09.22 |
---|---|
Vuex 제대로 사용하는 방법 (Vuex의 기초부터 심화까지) (1) | 2020.09.13 |
Vue watch에 lodash debounce 적용하는 방법 (0) | 2020.07.15 |
[Vue] vue.js Mixin을 활용해서 재사용성을 늘리자! (Understanding Mixins in Vue JS) (0) | 2020.07.10 |
vue.js 사용자 지정 디렉티브를 활용해서 코드를 깔끔하게 작성하는 방법 (vue custom directive) (0) | 2020.07.06 |
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.