๐Ÿ’ณ ํ† ์ŠคํŽ˜์ด๋จผ์ธ  ์—ฐ๋™ํ•˜๊ธฐ (4) _๊ฒฐ์ œ ์ทจ์†Œ / ๊ฒฐ์ œ ๋‚ด์—ญ ์กฐํšŒ

ํ˜„์ฃผยท2023๋…„ 6์›” 2์ผ
1

๐Ÿ“Œ ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ์€ ์ „ ๊ฒŒ์‹œ๋ฌผ๊ณผ ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๊ฒฐ์ œํ•˜๋Š” ๋กœ์ง์„ ๋ชจ๋‘ ์™„์„ฑํ•˜์˜€๋Š”๋ฐ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ฒฐ์ œ๋ฅผ ์ทจ์†Œํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๊ฒฐ์ œ๋ฅผ ์ทจ์†Œํ•˜๋ ค๋ฉด ๊ฒฐ์ œ ์Šน์ธ ์‹œ์— ํ† ์ŠคํŽ˜์ด๋จผ์ธ ์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ paymentKey์™€ ์ทจ์†Œ ์ด์œ ์ธ cancelReason์ด ๊ผญ ํ•„์š”ํ•˜๋‹ค.

๋˜, ์„ฑ๊ณต/์‹คํŒจ ์‹œ์™€ ๊ฐ™์ด ํ—ค๋”์— ์‹œํฌ๋ฆฟ ํ‚ค๋ฅผ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ๋ณด๋‚ด์•ผํ•œ๋‹ค.


๐ŸŒผ ๊ฒฐ์ œ ์ทจ์†Œ ์ฒ˜๋ฆฌ + ๊ฒ€์ฆ ๋กœ์ง

โœ”๏ธ ๊ฒฐ์ œ ์ทจ์†Œ Controller

  • tossPaymentCanclePoint

โžœ ์ทจ์†Œ ์š”์ฒญ์„ ๋ฐ›์„ Controller
โ €
โžœ ํ•„์š”ํ•œ ์ •๋ณด(๊ณ ๊ฐ ์ •๋ณด/paymentKey/์ทจ์†Œ ์ด์œ )๋ฅผ ๋ฐ›์•„ Service ๋กœ์ง์—์„œ ๊ฒ€์ฆ์„ ์™„๋ฃŒํ•œ ํ›„ ๊ฒฐ์ œ ์ƒํƒœ๋ฅผ ์ทจ์†Œ๋กœ ๋ฐ”๊ฟ”์คŒ


โœ”๏ธ ๊ฒฐ์ œ ์ทจ์†Œ Service

  • cancelPaymentPoint()

โžœ Controller์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’๋“ค์„ ์ด์šฉํ•˜์—ฌ ๊ฒ€์ฆ ๋กœ์ง๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ
โ €
โžœ ๊ฒฐ์ œ ์ทจ์†Œ ์‹œ์— ์ž”์—ฌ ํฌ์ธํŠธ๊ฐ€ ์ทจ์†Œํ•˜๋ ค๋Š” ๊ธˆ์•ก๋งŒํผ ์—†๋‹ค๋ฉด ๋ถˆ๊ฐ€๋Šฅ
( ์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ฒฐ์ œ = ํฌ์ธํŠธ ์ถฉ์ „์ž„ )
โ €

  • tossPaymentCancel()

โš ๏ธ โžœ ํ† ์ŠคํŽ˜์ด๋จผ์ธ ์— ์ตœ์ข… ์ทจ์†Œ ์Šน์ธ ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๋‹ด์•„ POST๋กœ ๋ณด๋‚ด๋Š” ๋ถ€๋ถ„

โžœ net.minidev.json.JSONObject๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค/๊ฐ’ ์Œ์„ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ์˜ค๋ธŒ์ ํŠธ๋กœ ์ˆซ์ž ๊ทธ๋Œ€๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ

โžœ postForObject() ์•ˆ์— ํ•„์š”ํ•œ ์ •๋ณด์ธ < ์š”์ฒญ URL + ์š”์ฒญ ๊ฐ์ฒด + ์‘๋‹ต Map.class >๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋จ

โœ” ์š”์ฒญ URL
โžœ "https://api.tosspayments.com/v1/payments/" + paymentKey + "/cancle"

  • getHeaders()

( โฌ†๏ธ ๊ฒฐ์ œ ์„ฑ๊ณต / ์‹คํŒจ ์‹œ์— ์‚ฌ์šฉํ•œ getHeaders()์™€ ๋™์ผํ•œ ๋ฉ”์„œ๋“œ์ž„ )

โžœ ํ—ค๋”์—๋Š” ํ† ์Šค์—์„œ ์ œ๊ณตํ•ด์ค€ ์‹œํฌ๋ฆฟ ํ‚ค๋ฅผ Basic Authorization ๋ฐฉ์‹์œผ๋กœ base64๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ๊ผญ ๋ณด๋‚ด์•ผํ•จ
( โ— ๊ผญ! {์‹œํฌ๋ฆฟํ‚ค + ":"} ์กฐํ•ฉ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜๊ธฐ )


๐Ÿšฉ ์—ฌ๊ธฐ๊นŒ์ง€ ๊ฒฐ์ œ ์ทจ์†Œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์•˜๋Š”๋ฐ,

์•„๋ž˜์™€ ๊ฐ™์ด CancleYN๊ฐ€ true๋กœ ๋ฐ”๋€Œ๊ณ  ์ทจ์†Œ ์ด์œ ๊ฐ€ ์ €์žฅ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์‚ฌ์ง„ ๋„ฃ์„ ์˜ˆ์ •

โ— ๊ฒฐ์ œ ๊ธˆ์•ก ์ค‘ ์ผ๋ถ€๋งŒ ์ทจ์†Œํ•˜๋ ค๋ฉด cancelAmount์— ์ทจ์†Œํ•  ๊ธˆ์•ก์„ ์ถ”๊ฐ€ํ•ด์„œ ๊ฒฐ์ œ ์ทจ์†Œ API๋ฅผ ์š”์ฒญํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.
ํ† ์ŠคํŽ˜์ด๋จผ์ธ  ์ฐธ๊ณ 


๐ŸŒผ ๊ฒฐ์ œ ๋‚ด์—ญ ์กฐํšŒ

โœ”๏ธ ๊ฒฐ์ œ ๋‚ด์—ญ ์กฐํšŒ Controller

  • getChargingHistory

โžœ ๊ฒฐ์ œ ๋‚ด์—ญ ์กฐํšŒ ์š”์ฒญ์„ ๋ฐ›์„ Controller
โ €
โžœ ํ•ด๋‹น ๊ณ ๊ฐ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ Service ๋กœ์ง์„ ํƒ€๊ณ  Repository์—์„œ ์•Œ๋งž์€ ์ •๋ณด๋“ค์„ ์ฐพ์•„์™€ ๋ฐ˜ํ™˜

์ด ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ,
๋ฐ์ดํ„ฐ๋ฅผ ์Šฌ๋ผ์ด์Šค ํ˜•์‹์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด SliceResponseDto๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

  • SliceResponseDto<T>
  • SliceInfo

โœ”๏ธ ๊ฒฐ์ œ ๋‚ด์—ญ ์กฐํšŒ Dto

  • ChargingHistoryDto

โžœ ๊ฒฐ์ œ ๋‚ด์—ญ์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ์‘๋‹ต ๋ฐ์ดํ„ฐ


โœ”๏ธ ๊ฒฐ์ œ ๋‚ด์—ญ ์กฐํšŒ Mapper

  • PaymentMapper

โžœ List ํ˜•ํƒœ์˜ ๊ฒฐ์ œ ๋‚ด์—ญ์„ stream์„ ์‚ฌ์šฉํ•˜์—ฌ dto(์‘๋‹ต ๊ฐ์ฒด)์˜ ๊ฐ ์š”์†Œ๋“ค์— ํ•ด๋‹น ๊ฐ’์„ ๋„ฃ์–ด์คŒ


โœ”๏ธ ๊ฒฐ์ œ ๋‚ด์—ญ ์กฐํšŒ Service

  • findAllChargingHistories

โžœ ๊ณ ๊ฐ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ ํ•ด๋‹น ๊ณ ๊ฐ์ด ๋งž๋Š”์ง€ ๊ฒ€์ฆ ํ›„์— paymentRepository์—์„œ ํ•ด๋‹น ๊ณ ๊ฐ์˜ ๊ฒฐ์ œ ๋‚ด์—ญ์„ ๋ชจ๋‘ ๊ฐ€์ ธ์™€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ถ€๋ถ„

โžœ paymentId๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ๋ฐ˜ํ™˜


๐Ÿšฉ ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๊ณ  postman์œผ๋กœ ๊ฒฐ์ œ ๋‚ด์—ญ์„ ์กฐํšŒํ•ด๋ณด๋ฉด,

์•„๋ž˜์™€ ๊ฐ™์ด ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค !

์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ถฉ์ „ ๋‚ด์—ญ์ด ์ž˜ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์—ฌ๊ธฐ๊นŒ์ง€ ํ”„๋กœ์ ํŠธ์—์„œ ๊ตฌํ˜„ํ•œ ํ† ์ŠคํŽ˜์ด๋จผ์ธ  ์—ฐ๋™ ๊ด€๋ จ ํฌ์ŠคํŒ…์ด์—ˆ์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2024๋…„ 1์›” 11์ผ

์ •๋ณด ์ •๋ฆฌ, ์ฝ”๋“œ, ๊ธ€ ์†œ์”จ ๋ญํ•˜๋‚˜ ๋น ์ง„๊ฒŒ ์—†๋„ค์š”;; ๋„ˆ๋ฌด ๋„์›€ ๋งŽ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ใ… ใ…œใ… ใ…œใ… ใ…œ

1๊ฐœ์˜ ๋‹ต๊ธ€