안전무
안전무4mo ago

자동결제 빌링키

안녕하세요. 토스페이먼츠에 있는 샘플코드를 가지고 자동결제를 구현했는데 빌링키 가지고 결제하는 곳에서 이런 오류가 발생합니다. 암호화해서 사용한 시크릿키는 샘플코드에 나와있는것을 가지고 했는데 안되나요? code: 'INVALID_BILL_KEY_REQUEST', message: '빌링키 인증이 완료되지 않았거나 유효하지 않은 빌링 거래 건입니다.'
21 Replies
Kimoon Lee
Kimoon Lee4mo ago
어디에 있는 샘플코드 키를 이용하신 건가요?
안전무
안전무OP4mo ago
GitHub
tosspayments-sample/express-react/server.js at main · tosspayments/...
토스페이먼츠 결제연동 샘플 프로젝트입니다. Contribute to tosspayments/tosspayments-sample development by creating an account on GitHub.
안전무
안전무OP4mo ago
여기에 나와있는 시크릿키를 사용했습니다
Kimoon Lee
Kimoon Lee4mo ago
이 시크릿 키는 빌링용 시크릿 키가 아닙니다. 지금 보시는 샘플도 빌링용 샘플이 아니구요.
안전무
안전무OP4mo ago
// 빌링키 발급 app.post("/issue-billing-key", function (req, res) { const { customerKey, authKey } = req.body; // AuthKey 로 카드 빌링키 발급 API 를 호출하세요 // @docs https://docs.tosspayments.com/reference#authkey로-카드-빌링키-발급 fetch(https://api.tosspayments.com/v1/billing/authorizations/issue, { method: "POST", headers: { Authorization: encryptedApiSecretKey, "Content-Type": "application/json", }, body: JSON.stringify({ customerKey, authKey, }), }).then(async function (response) { const result = await response.json(); console.log(result); if (!response.ok) { // TODO: 빌링키 발급 실패 비즈니스 로직을 구현하세요. res.status(response.status).json(result); return; } // TODO: 빌링키 발급 성공 비즈니스 로직을 구현하세요. // TODO: 발급된 빌링키를 구매자 정보로 찾을 수 있도록 저장해두고, 결제가 필요한 시점에 조회하여 카드 자동결제 승인 API 를 호출합니다. billingKeyMap.set(customerKey, result.billingKey); res.status(response.status).json(result); }); }); // 카드 자동결제 승인 app.post("/confirm-billing", function (req, res) { const { customerKey, amount, orderId, orderName, customerEmail, customerName } = req.body; // 저장해두었던 빌링키로 카드 자동결제 승인 API 를 호출하세요. fetch(https://api.tosspayments.com/v1/billing/${billingKeyMap.get(customerKey)}, { method: "POST", headers: { Authorization: encryptedApiSecretKey, "Content-Type": "application/json", }, body: JSON.stringify({ customerKey, amount, orderId, orderName, customerEmail, customerName, }), }).then(async function (response) { const result = await response.json(); console.log(result); if (!response.ok) { // TODO: 자동결제 승인 실패 비즈니스 로직을 구현하세요. res.status(response.status).json(result); return; } // TODO: 자동결제 승인 성공 비즈니스 로직을 구현하세요. res.status(response.status).json(result); }); });
코어 API | 토스페이먼츠 개발자센터
토스페이먼츠 API 엔드포인트(Endpoint)와 객체 정보, 파라미터, 요청 및 응답 예제를 살펴보세요.
안전무
안전무OP4mo ago
빌링키 발급과 빌링키 결제가 있어서 여기를 보고있엇습니다 그래서 빌링키 발급까지는 되는데 결제가 안되서 문의를 드린것이엇습니다
Kimoon Lee
Kimoon Lee4mo ago
네 여기 사용된 키가 결제위젯용 키라서 빌링이 되지 않을겁니다. 혹시 빌링 상점 계약을 하신 상태인가요?
안전무
안전무OP4mo ago
계약을 하려면 테스트화면이 구현이 되어야한다고해서요
Kimoon Lee
Kimoon Lee4mo ago
그러면 개발자 센터 가입은 하셨나요?
안전무
안전무OP4mo ago
네네 지금은 위젯용키는 사용중이고 빌링결제 계약은 테스트화면이 나오고 검사를 받아야한다고해서 구현중에 있습니다
Kimoon Lee
Kimoon Lee4mo ago
그럼 개발자 센터에 "개발 테스트 상점" 이라고 있을겁니다. 그 테스트 키를 확인해 보세요.
안전무
안전무OP4mo ago
네 알겠습니다! 감사합니다! 혹시 개발자상점에 있는 시크릿키를 사용해도 똑같은 경우인데 결제는 안되는건가요?
Kimoon Lee
Kimoon Lee4mo ago
개발자 상점에 있는 건 가능하실텐데요. 혹시 결제시도하신 주문번호 알수 있을까요?
안전무
안전무OP4mo ago
orderId를 말씀하시는 걸까요? ACu2CGXYgJ7Sk6N3V0lWy
Kimoon Lee
Kimoon Lee4mo ago
네 확인후 공유 드리겠습니다.
안전무
안전무OP4mo ago
네 감사합니다! 혹시 확인 되었을까요?
Kimoon Lee
Kimoon Lee4mo ago
이슈가 좀 있어서 지금 조치 중입니다.
안전무
안전무OP4mo ago
네! 빌링키 발급하는 것도 지금 안되나요?
Kimoon Lee
Kimoon Lee4mo ago
네 현재 확인중입니다. 그런데 지금 보니까 빌링키 발급때 사용한 secretkey 와 결제 요청에 사용한 secretkey 가 다른것 같은데요. 이거 같은 키 사용해서 테스트 해보실수 있을까요?
안전무
안전무OP4mo ago
결제테스트 됩니다 감사합니다!
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.