권씨 😮💨
권씨 😮💨16mo ago

리믹스 프레임워크를 사용하여서 결제 , 환불을 구현하고자 합니다.

리믹스 프레임워크를 사용해서 결제 환불을 구현하고자 하는데 db는 prism studio를 사용할 것 같습니다. 결제 후 결제 정보를 저장해야 하는데 db 테이블을 결제 요청했을 때 들어가는 정보들만 저장을 해도 상관 없을까요?
tsx
amount: 200,
orderId: Math.random().toString(36).substring(2, 11),
orderName: `코인 구매`,
customerName: data.userData.name,
tsx
amount: 200,
orderId: Math.random().toString(36).substring(2, 11),
orderName: `코인 구매`,
customerName: data.userData.name,
15 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
today.lastday
today.lastday16mo ago
결제 완료 후 응답값도 저장해 주셔야 합니다. 특히 paymentKey 값을 저장해 주셔야 취소와 결제 상태 조회등을 원할하게 하실 수 있습니다.
권씨 😮💨
권씨 😮💨OP16mo ago
console.log(JSON.stringify(result));가 결제 후 결과값을 보여주는데 아래와 같이 보여주고 있습니다. 이 값도 저장해야하는 것이 맞을까요 ?
"mId":"tvivarepublica","lastTransactionKey":"BE14822E528CBBED43397D61A03799D9","paymentKey":"1kZn04DxKBE92LAa5PVbNWEkQ7LoNRV7YmpXyJjg6Owzoeqd","orderId":"yg7tfttqz","orderName":"코인 구매","taxExemptionAmount":0,"status":"DONE","requestedAt":"2023-11-08T11:31:01+09:00","approvedAt":"2023-11-08T11:31:16+09:00","useEscrow":false,"cultureExpense":false,"card":null,"virtualAccount":null,"transfer":null,"mobilePhone":null,"giftCertificate":null,"cashReceipt":null,"cashReceipts":null,"discount":null,"cancels":null,"secret":"ps_ORzdMaqN3w5eoYznlnONr5AkYXQG","type":"NORMAL","easyPay":{"provider":"토스페이","amount":161,"discountAmount":39},"country":"KR","failure":null,"isPartialCancelable":true,"receipt":{"url":"https://dashboard.tosspayments.com/receipt/redirection?transactionId=tviva20231108113104PICT7&ref=PX"},"checkout":{"url":"https://api.tosspayments.com/v1/payments/1kZn04DxKBE92LAa5PVbNWEkQ7LoNRV7YmpXyJjg6Owzoeqd/checkout"},"currency":"KRW","totalAmount":200,"balanceAmount":200,"suppliedAmount":182,"vat":18,"taxFreeAmount":0,"method":"간편결제","version":"2022-11-16"}
"mId":"tvivarepublica","lastTransactionKey":"BE14822E528CBBED43397D61A03799D9","paymentKey":"1kZn04DxKBE92LAa5PVbNWEkQ7LoNRV7YmpXyJjg6Owzoeqd","orderId":"yg7tfttqz","orderName":"코인 구매","taxExemptionAmount":0,"status":"DONE","requestedAt":"2023-11-08T11:31:01+09:00","approvedAt":"2023-11-08T11:31:16+09:00","useEscrow":false,"cultureExpense":false,"card":null,"virtualAccount":null,"transfer":null,"mobilePhone":null,"giftCertificate":null,"cashReceipt":null,"cashReceipts":null,"discount":null,"cancels":null,"secret":"ps_ORzdMaqN3w5eoYznlnONr5AkYXQG","type":"NORMAL","easyPay":{"provider":"토스페이","amount":161,"discountAmount":39},"country":"KR","failure":null,"isPartialCancelable":true,"receipt":{"url":"https://dashboard.tosspayments.com/receipt/redirection?transactionId=tviva20231108113104PICT7&ref=PX"},"checkout":{"url":"https://api.tosspayments.com/v1/payments/1kZn04DxKBE92LAa5PVbNWEkQ7LoNRV7YmpXyJjg6Owzoeqd/checkout"},"currency":"KRW","totalAmount":200,"balanceAmount":200,"suppliedAmount":182,"vat":18,"taxFreeAmount":0,"method":"간편결제","version":"2022-11-16"}
그리고 잘 이해가 되지 않는 부분이 있습니다. 결제 조회나 취소 같은 부분은 sdk가 아니라 따로 화면 구성을 해야하는걸까요 ? 아니면 결제 연동할 때 사용했던 sdk를 사용하면 되는걸까요 ? 취소나 환불 등을 구현할 때는 리액트 js 로는 구현하기 어려운 걸까요 ?
Kimoon Lee
Kimoon Lee16mo ago
네 결제 승인, 취소, 환불등은 서버2서버 통신으로 이루어 지기 때문에 FE 로만 구현하시면 안됩니다.
결제 조회나 취소 같은 부분은 sdk가 아니라 따로 화면 구성을 해야하는걸까요 ?
네 맞습니다. 이건 가맹점별 로 결제 성공 페이지나 환불 요청 페이지등 UI 를 직접 구현해서 정보를 보여주셔야 합니다. 저희가 별도로 UI 를 제공하지 않습니다.
권씨 😮💨
권씨 😮💨OP16mo ago
위에서는 result를 전부 다 저장하면 될까요? 그리고 현재 코드가 결제 위젯을 불러오는 파일이 따로 있고 결제 성공 파일이 따로 존재하고 있습니다. 아래 이미지는 결제 성공 페이지 인데 여기서 주문자 이름을 불러올 수 있는 방법이 따로 있을까요
권씨 😮💨
권씨 😮💨OP16mo ago
No description
권씨 😮💨
권씨 😮💨OP16mo ago
결제 위젯을 불러오는 코드는 아래 이미지 입니다.
No description
today.lastday
today.lastday16mo ago
주문자 이름은 넘겨주는 결제수단의 경우만 응답값에 포함됩니다.
권씨 😮💨
권씨 😮💨OP16mo ago
디비에는 result 값을 전부 다 저장하면 되는걸까요?
Kimoon Lee
Kimoon Lee16mo ago
필요하다고 생각하시는 부분만 저장하시면 됩니다. paymentkey 과 mid 는 무조건 저장을 하셔야 하고, 나머지는 고객에게 어떤 정보를 보여주시는지에 따라 저장여부를 선택하시면 될것 같아요.
권씨 😮💨
권씨 😮💨OP16mo ago
{ "mId": "tvivarepublica", "paymentKey": "OR1ZwdkQD5GePWvyJnrKaR7lZy9o5a3gLzN97EoqYA60XKx4", "orderId": "puvvfsvjc", "orderName": "코인 구매", "approvedAt": "2023-11-08T14:06:52+09:00", "totalAmount": 200, "method": "간편결제", } 위와 같은 값들만 db에 저장을 하고자 합니다. prism studio의 PostgreSQL문법으로 작성한다고 했을 때 아래처럼 작성하면 될까요?
// schema.prisma

model Payment {
id Int @id @default(autoincrement())
mId String
paymentKey String
orderId String
orderName String
approvedAt DateTime
totalAmount Int
method String
}
// schema.prisma

model Payment {
id Int @id @default(autoincrement())
mId String
paymentKey String
orderId String
orderName String
approvedAt DateTime
totalAmount Int
method String
}
번거롭게 자주 여쭤봐서 죄송합니다
today.lastday
today.lastday16mo ago
네, 크게 이슈 없어보입니다.
권씨 😮💨
권씨 😮💨OP16mo ago
감사합니다 ㅠㅠ 한가지 더 궁금한 점이 생겼는데, 결제 및 거래 조회를 이용하여서 계정마다 본인이 구매한 내역을 보여주게 하기 위해서는 결제가 승인 된 후 기존에 존재하던 유저 db에 구매한 내역을 넣어야 하는걸까요? 아니면 어떤식으로 작동을 해야하는걸까요 ? // schema.prisma model Payment { id Int @id @default(autoincrement()) mId String paymentKey String orderId String orderName String approvedAt DateTime totalAmount Int method String } 위 db 모델에 결제 내용을 저장하는데 어떤 계정이 구매했는지 체크를 할 수 있는 방법이 없는것 같아서요
이실장
이실장16mo ago
귀사 DB 구현하는 부분은 고민해보시고 결정해주시면 될 것 같습니다. 저희쪽 응답 레퍼런스는 아래 참고해주세요. https://docs.tosspayments.com/referenc
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?