심용섭
심용섭4w ago

대머리퀵서비스입니다. 지급정산대행 에서 암호화 복호화 자바 클래스 라이브러리가 있나요?

대머리퀵서비스입니다. 지급정산대행 에서 암호화 복호화 자바 클래스 라이브러리가 있나요? 클래스에 액박 떠서 이용불가합니다
39 Replies
이실장
이실장4w ago
@김차장 님 한번 확인해주시겠어요?
Kimoon Lee
Kimoon Lee4w ago
어떤 코드를 참고하셔서 구현하시는 건가요?
김차장
김차장4w ago
엑박이라는 부분과 소스코드를 techsupport@tosspayments.com 으로 전달주세요
심용섭
심용섭OP4w ago
JWE로 시작되는 클래스를 쓸수가 없어요. 특정 JAR가 있어야 하나요?
Kimoon Lee
Kimoon Lee4w ago
네 외부 라이브러리입니다. 어디에서 코드를 보고 사용중이신건가요?
심용섭
심용섭OP4w ago
지급대행하기 | 토스페이먼츠 개발자센터
지급대행은 오픈마켓을 운영하는 사업자 대신 토스페이먼츠가 셀러(입점 판매자)에게 대금 지급을 대행 해주는 서비스예요.
심용섭
심용섭OP4w ago
위링크입니다
김차장
김차장4w ago
메일로 샘플 보내드릴게요 @심용섭 sim***@naver.com 으로 보냈어요 메일주소가 있어서 삭제했습니다
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
심용섭
심용섭OP4w ago
메일 잘 받았습니다만....... 바로 다운로드가 안되네요? 승인바랍니다
김차장
김차장4w ago
그런가요? 공용링크로 드린줄 알았는데 다시 확인해볼게요 권한 바꿔놓았습니다. 다시 확인부탁드려요
심용섭
심용섭OP3w ago
payout.zip 파일 다운로드 하고 나서 이클립스 import 했는데요... 빌드가 안됩니다. 이걸 어떻게 import 해야 하나요 ? 제발 쓰는 방법좀 알려 주세요..... T.T import 해도 실행이 안되네요 답답..... ;;;;
이실장
이실장3w ago
cc @김차장
김차장
김차장3w ago
JDK 환경부터 맞춰야 할거같네요 제가 빌드한 환경이 JDK17 이었는데 어떤 환경을 쓰시나요? pom.xml 에서 어떤 라이브러리가 안읽히는지 보셔야해요 이클립스말고 인텔리제이로 해보시구요
심용섭
심용섭OP3w ago
자바 1.8. 이었습니다. 이클립스에서는 않되나요? Jar도 없더라구요
김차장
김차장3w ago
pom.xml 기반으로 받아서 쓰셔야해요 이클립스도 되긴하는데 애초에 인텔리제이 프로젝트로 만들은거라 그대로 쓰실게 아니라면 그냥 만들어서 쓰시는것이 더 빠를거같습니다 생성자쪽은 Docs 에 있는 코드를 그대로 쓰셔도 되고
public static String encrypt(Object target, String securityKey) throws Exception {
// 보안 키를 바이트 배열로 변환
byte[] key = Hex.decode(securityKey);

// JWE 헤더 생성
JWEHeader jweHeader = new JWEHeader.Builder(JWEAlgorithm.DIR, EncryptionMethod.A256GCM)
.customParam("iat", OffsetDateTime.now(ZoneId.of("Asia/Seoul")).toString())
.customParam("nonce", UUID.randomUUID().toString())
.build();

// Request Body 암호화
String payload = objectMapper.writeValueAsString(target);
JWEObject jweObject = new JWEObject(jweHeader, new Payload(payload));
jweObject.encrypt(new DirectEncrypter(key));
return jweObject.serialize();

}
public static String encrypt(Object target, String securityKey) throws Exception {
// 보안 키를 바이트 배열로 변환
byte[] key = Hex.decode(securityKey);

// JWE 헤더 생성
JWEHeader jweHeader = new JWEHeader.Builder(JWEAlgorithm.DIR, EncryptionMethod.A256GCM)
.customParam("iat", OffsetDateTime.now(ZoneId.of("Asia/Seoul")).toString())
.customParam("nonce", UUID.randomUUID().toString())
.build();

// Request Body 암호화
String payload = objectMapper.writeValueAsString(target);
JWEObject jweObject = new JWEObject(jweHeader, new Payload(payload));
jweObject.encrypt(new DirectEncrypter(key));
return jweObject.serialize();

}
관련 라이브러리는 제가 전달드린 파일 압축풀어서나오는 nimbusds 라이브러리를 갖다써보세요 package com.nimbusds.jose; 이부분이에요
심용섭
심용섭OP3w ago
그런데 현재 시스템은 자바 버전1.8을 쓰고 있어요 보내주신 샘플은 jdk17에서만 돌아간다멵 현재시스템에 적용이 불가한데 어떻게 해야 하나요?
Kimoon Lee
Kimoon Lee3w ago
저희가 JDK 버전 별로 샘플을 제공해 드릴수는 없어서 컴파일이 안되거나 1.8 버전에서 에러가 나는 부분은 구글링이나 GPT 등을 이용해서 수정하면서 돌아가도록 해주셔야 할것 같습니다. 샘플에서 암호화에 사용하는 nimbus jose 라이브러리 홈페이지 입니다. 여기도 참고해 주세요.
Kimoon Lee
Kimoon Lee3w ago
Connect2id
JOSE + JWT library for Java
The most popular and robust Java and Android library for JSON Web Tokens (JWT) Covers all standard signature (JWS) and encryption (JWE)...
심용섭
심용섭OP3w ago
SecurityKey 는 secret Key base64 encode. 데이타 인가요? 아니면 생성방법 요청드려요 셀러등록은 1회 인가요? 아니면 지급대행 요청할때마다 해야하나요?
이실장
이실장3w ago
한 셀러는 한번만 드록하면됩니다. SecurityKey는 보안키로 개발자센터에서 확인하실 수 있습니다.
심용섭
심용섭OP3w ago
셀러 등록 400 에러 떨어집니다. 원인을 알수 있을까요?
심용섭
심용섭OP3w ago
No description
심용섭
심용섭OP3w ago
소스코드는 2000자가 넘어가서. 전달이 않되네요
today.lastday
today.lastday3w ago
에러 응답에 traceId가 있었을텐데 traceId를 남겨주세요.
김차장
김차장3w ago
저도 gpt 한테 물어봤는데요 아래같이 이야기해주네요
가능성 99%로 Gson 버전 충돌 때문입니다.
Nimbus-JOSE-JWT가 내부에서 사용하는 JSONObjectUtils가 아래 신규 API에 의존하는데,

new GsonBuilder().setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE)

TypeToken.getParameterized(Map.class, String.class, Object.class)

이 중 setObjectToNumberStrategy(ToNumberPolicy …)는 Gson 2.10+에서 추가된 메서드입니다.
프로젝트 클래스패스에 gson 2.8.x 같은 낮은 버전이 끼어 있으면 스크린샷처럼 “cannot find symbol” 컴파일 에러가 납니다(자바 1.8 자체 문제는 아님).
가능성 99%로 Gson 버전 충돌 때문입니다.
Nimbus-JOSE-JWT가 내부에서 사용하는 JSONObjectUtils가 아래 신규 API에 의존하는데,

new GsonBuilder().setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE)

TypeToken.getParameterized(Map.class, String.class, Object.class)

이 중 setObjectToNumberStrategy(ToNumberPolicy …)는 Gson 2.10+에서 추가된 메서드입니다.
프로젝트 클래스패스에 gson 2.8.x 같은 낮은 버전이 끼어 있으면 스크린샷처럼 “cannot find symbol” 컴파일 에러가 납니다(자바 1.8 자체 문제는 아님).
해결방법은 Gson 을 2.10 보다 높은 버전으로 올리라고합니다
심용섭
심용섭OP3w ago
>> obj.toString() : {"company":{"name":"대머리","representativeName":"대머리대표","businessRegistrationNumber":"1234567890","email":"toss@sample.com","phone":"01012345678"},"acount":{"bankCode":"092","accountNumber":"1002852217334","holderName":"심용섭"},"metadata":{"key1":"value1","key2":"value2"},"refSellerId":"daemuri","businessType":"INDIVIDUAL_BUSINESS"} >> data : eyJlbmMiOiJBMjU2R0NNIiwiaWF0IjoiMjAyNS0xMS0xOVQwOTozMjozNi4wMjErMDk6MDAiLCJub25jZSI6ImNkZTk5NTI5LTJhMmItNDFmOS04NTVjLTAwOWZmNjc2MjQ0ZSIsImFsZyI6ImRpciJ9..8rrQ88xIai2K2YYk.QcGyAU8OYBpSVeI8wZR4U68cTJrp-6qzptBmnCBqb3aymIQNmf2jfcwpZRo6hNi0SmdBSY79H6Y9SOc_TmBLh4pR-4ayzwmYp1uoFi3LJZ5wqbZP-iKiU_Q0zQwItbCmDB4QFnarTXnytgLWVLhcMRengej8Tf2y8fUNrhanpG3ufoT4xvGsK_Jj0BK6jgIHPo086zPLcbHlo9w94dSqUddCdFX9jlfuI_nG5H9WxjIwOPu4rbhgEeVubs0rfCSYDNZW2ktijDasStlekGqTMRuhW95fhCSl6qdhHbUEjb0UsDWzUxfhMSvmn2ZFXToIHCXI8wu8_UXRYWebRYKJFtIelaNchsVOAPi1pAQFCID9LoQ90_GlVtcZo_t9KTbxqjqPy8fPX7aXzzR4cxvhIJMVUNbYg-uDg9vFwfqApy0BK60xGr-aDg7UngTyIwTRfT0YoLuFbwcqdpQE_emO8A.ywSbej1yWFA8CQXwKPfBbg >> 일반결제 Response code: 400 >> 일반결제 {"version":"2022-11-16","traceId":"dfd4855c397e9fa81d3501fc82292a70","entityBody":null,"entityType":null,"error":{"code":"INVALID_ENCRYPTION","message":"Invalid encryption format."}} 확인바랍니다 상점 등록 400. 결과입니다
Kimoon Lee
Kimoon Lee3w ago
--header 'TossPayments-api-security-mode: ENCRYPTION' \ 이부분 헤더 세팅하셨나요?
심용섭
심용섭OP3w ago
셋팅 했습니다
Kimoon Lee
Kimoon Lee3w ago
저희가 받은 요청의 헤더 상에는 해당 내용이 없습니다. 호출하실때 헤더 추가하신게 맞는지 다시 확인부탁드릴께요.
심용섭
심용섭OP3w ago
추가하고 호출 햇습니다. 동잀합니다 {"version":"2022-11-16","traceId":"5a3d44a1651fa3203617f57aeda2d673","entityBody":null,"entityType":null,"error":{"code":"INVALID_REQUEST","message":"필수 파라미터가 누락 또는 요청 형식이 잘못되었습니다."}}
Kimoon Lee
Kimoon Lee3w ago
에러내용이 바뀌었네요.
심용섭
심용섭OP3w ago
복흐화 했습니다 어떤게 잘못 되었을까요?
Kimoon Lee
Kimoon Lee3w ago
"acount": 이걸 잘못 보내셨네요. account 입니다.
심용섭
심용섭OP3w ago
정정하고 보냈습니다{"version":"2022-11-16","traceId":"695842a721107d5bb5e737eedd9e81e2","entityBody":null,"entityType":null,"error":{"code":"FORBIDDEN_REQUEST","message":"Not allowed request"}}냈습니다. 403. 나옵니다
Kimoon Lee
Kimoon Lee3w ago
지금 보내시는 secretkey 가 개발 연동 테스트 상점 것으로 보이시는데요.
심용섭
심용섭OP3w ago
맞습니다
Kimoon Lee
Kimoon Lee3w ago
지급대행 계약하신 MID 있으신가요? 지급대행은 연동 테스트 상점에서는 제공되지 않습니다. 일단 암호화 쪽은 문제 없으신것 같아요.
심용섭
심용섭OP3w ago
네 감사합니다

Did you find this page helpful?