정기 결제 customerKey 관련 질문이 있습니다.
정기 결제 customerKey를 UUID 같은 걸로 무작위 고유값으로 설정하는걸 권장한다고 적혀있는데,
1. customerKey를 유저 아이디라고보면 될까요 ?
2. customerKey가 유저 아이디가 아니라면, customerKey를 백엔드에서 UUID로 생성해서 유저정보와 1:1 매핑하면 될까요?
3. 프론트에서 백엔드로 호출 해서 customerKey 값을 조회해서 sdk를 활용해 전달을 해야하는 부분일까요?
4. 프론트에서 customerKey를 생성해서 유저정보와 매핑하는 테이블에 insert or update를 해줘야하는 걸까요?
두서없이 쓴거같아,, 이해가 어려우실수도 있을것 같다는 생각이들지만.. 확인 부탁드리겠습니다..!
감사합니다 !!
10 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
1,2 그냥 유저를 식별할수 있는 정보로 유저ID 를 주셔도 되고 UUID 로 주셔도 됩니다.
3. customerkey 를 어떻게 사용하실지는 가맹점에서 정하시면됩니다.
4. 빌링키와 customerkey 그리고 유저 정보는 매칭을 해주셔야 합니다.
실제 결제 요청시에 customerkey와 빌링키를 모두 보내주셔야 하고 생성시의 값과 동일해야 결제가 가능합니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
1. auto increment로 userid가 생성 되고있는데 해당값으로 사용해도 무방할까요 ? 혹은 식별할 수 있는 값으로 이메일정보가 있는데 해당정보로도 사용해도 무방한가요 ?
2. customerKey가 중요한 값이라면, front 파트에서 해당 정보를 계속 지니고 있을 순 없을것 같고, front에서 customerKey에 대한 값을 요청 후 customerKey를 세팅 하고 backend 파트에서 success에 대한 리다이렉션 처리를 해야 하는 것으로 보이는데, 혹시 이 플로우가 맞을까요 ?
3. customerKey와 billingKey로 정기결제 신청이 되는걸로 확인되는데, 혹시 billingKey는 사용자에게 노출 되면 문제가 되는 값일까요 ?
답변드립니다.
1. auto increment보다는 user email을 hash() 함수로 처리하여 보내주시는 것을 추천드립니다.
2. front에서 보내주셔도되고 back에서 보내주셔도 됩니다.
3. billingKey는 사용자뿐 아니라 외부에 노출되지 않도록 해주셔야 합니다.
음..
가이드에서보이는
requestBillingAuth()의 파라미터로 설정했던 customerKey 값과 리다이렉트 URL에 있는 customerKey 값이 같은지 확인해보세요
이부분이 계속 이해가안되어서 .. 프론트에서 hash로 생성해서 보내면 백엔드에서 어떻게 같은지 확인할 수 있는 부분인지
조금만 더 설명가능하실까요 ?ㅜ
hash()는 같은 값을 넣으면 동일한 해쉬 값이 나오게 됩니다.
front와 back에서 같은 이메일 주소를 가지고 있다면 같은 값을 확인하실 수 있습니다.
정리하면,
1. 프론트에서 백엔드에 customerKey를 요청
2. 백엔드에서 customerKey를 발급(이메일주소를 sha256으로 암호화 or hashcode)
3. 프론트에서 전달받은 customerKey를 sdk에 세팅해서 successUrl redirection 설정
4. 백엔드에서 successUrl redirection 동작 (이메일주소 sha256 암호화or hascode하여 넘어온 customerKey 비교)
위와 같은 플로우가 되는게 맞을까요 ?
아 그리고
후에 제가 hash된 customerKey로 user 정보를 거꾸로 찾아야하는 경우도 있나요 ? (복호화가 필요한지에 대한 여부)
예를들어, customerKey로 통계를 토스페이먼츠에서 받는다거나.. 그러면 AES로 암호화해야할거같아서요..
customerKey 생성 및 운영에 대해서는, 정말 자유롭게 하고 싶으신 방향으로 진행 하시면 될것 같아요!
저희는 전달받은 customerKey 값 그 자체를 보고 있기 때문에,
customerKey 생성시에 활용한 데이터 (이메일 등등) 은 자체적으로 매핑 테이블을 운영하시는 것이 당연히 필요 할것 같네요. 이 부분도 자유롭게 하고싶으신 방향으로 운영 해주세요
가맹점은 customerKey 를 생성해서 전달 하고
토스페이먼츠는 해당 customerKey 와 고객이 입력한 카드 정보를 billingKey 로 응답하고
가맹점은 이후 customerKey와 billingKey 로 결제를 내는것만 고려하시고
나머지 어떤 값을 어떻게 처리할지에 대해서는 자유롭게 고민 하셔서
좋은 서비스 만드시길 바랄게요!
답변 감사합니다 !