Toss Payments

yum·2022년 8월 10일
0

Toss Payments

목록 보기
1/2

신용 & 체크카드 연동

API 키

  • 위치 : 내상점 → 매출 · 정산 관리 → 개발연동
  • 클라이언트 키 : 프론트에서 토스 sdk 호출시 사용
  • 시크릿 키 : 서버에서 사용

결제창 띄우기

  • requestPayment 메서드 첫 번째 파라미터 결제 수단
  • requestPayment 메서드두 번째 파라미터는 결제 정보입니다.
    • 필수 파라미터인 결제 금액(amount), 주문 ID(orderId)
    • clientKey : 위에서 저장한 클라이언트 키 적용
    • successUrl : 토스 결제 성공 시, 리다이렉트할 url
    • failUrl : 토스 결제 실패 시, 리다이렉트할 url
<!DOCTYPE html>
<html lang="ko">
    <head>
        <title>결제하기</title>
        <meta charset="utf-8">
        <script src="https://js.tosspayments.com/v1"></script>
      </head>
      <body>
        <script>
          var clientKey = 'test_key'
          var tossPayments = TossPayments(clientKey) // 클라이언트 키로 초기화하기
        </script>
      </body>
<script>
    tossPayments.requestPayment('카드', {
  amount: 150000,
  orderId: '0299f62b-865b-4ba1-812f-15sdfs42',
  orderName: '개인산책',
  customerName: '홍길동',
  successUrl: 'http://localhost:8080/success',
  failUrl: 'http://localhost:8080/fail',
})
</script>
</html>

결제 요청이 성공하거나 실패하면 위에서 설정한 successUrl, failUrl로 이동합니다. URL에 포함된 쿼리 파라미터로 결제 승인을 요청할 수 있습니다.

결제 승인

successUrl로 리다이렉트 된 경우

https://{ORIGIN}/success?paymentKey={PAYMENT_KEY}&orderId={ORDER_ID}&amount={AMOUNT}
  • paymentKey: 결제 건에 대한 고유한 키 값입니다.
  • orderId: 상점에서 주문 건을 구분하기 위해 발급한 고유 ID입니다. 결제창을 열 때 requestPayment에 담아 보낸 값입니다.
  • amount: 실제로 결제된 금액입니다.

결제 금액이 같은지 검증하기

결제창을 열 때 requestPayment 메서드에 담아 보냈던 amount 값과 리다이렉트 URL에 있는 실제 결제 금액인 amount 값이 같은지 확인

결제 승인 API 호출하기

  • 결제 승인 API를 호출합니다. 리다이렉트 URL로 받은 paymentKey, orderId, amount를 요청 본문으로 함께 보냅니다.
  • successUrl로 리다이렉트 된 후 10분 이내에 결제 승인 API를 호출해야 합니다.
curl --request POST \
  --url https://api.tosspayments.com/v1/payments/confirm \
  --header 'Authorization: Basic dGVzdF9za19kMjZEbGJYQWFWMG85Uk5HOWJLM3FZNTBROVJCOg==' \
  --header 'Content-Type: application/json' \
  --data '{"paymentKey":"P5qJ5TLLWt-yD51UZrpD6","amount":15000,"orderId":"Rjbb0lCkPeGe56cw-JmUk"}'

결제 성공

API 호출 결과로 HTTP 상태 코드 200이 돌아오면 결제 승인 성공

{
  "mId": "tosspayments",
  "version": "2022-06-08",
  "paymentKey": "P5qJ5TLLWt-yD51UZrpD6",
  "status": "DONE",
  "transactionKey": "vwHfrGh21kF0qPlP-c3eC",
  "lastTransactionKey": "JhwlGZaT_tHwJTKk4f1s-",
  "orderId": "Rjbb0lCkPeGe56cw-JmUk",
  "orderName": "토스 티셔츠 외 2건",
  "requestedAt": "2022-06-08T15:40:09+09:00",
  "approvedAt": "2022-06-08T15:40:49+09:00",
  "useEscrow": false,
  "cultureExpense": false,
  "card": {
    "company": "농협",
    "number": "123456******7890",
    "installmentPlanMonths": 0,
    "isInterestFree": false,
    "interestPayer": null,
    "approveNo": "00000000",
    "useCardPoint": false,
    "cardType": "신용",
    "ownerType": "개인",
    "acquireStatus": "READY",
    "receiptUrl": "https://dashboard.tosspayments.com/sales-slip?transactionId=KAgfjGxIqVVXDxOiSW1wUnRWBS1dszn3DKcuhpm7mQlKP0iOdgPCKmwEdYglIHX&ref=PX",
    "amount": 15000
  },
  "virtualAccount": null,
  "transfer": null,
  "mobilePhone": null,
  "giftCertificate": null,
  "cashReceipt": null,
  "discount": null,
  "cancels": null,
  "secret": null,
  "type": "NORMAL",
  "easyPay": null,
  "country": "KR",
  "failure": null,
  "isPartialCancelable": true,
  "receipt": {
    "url": "https://dashboard.tosspayments.com/sales-slip?transactionId=KAgfjGxIqVVXDxOiSW1wUnRWBS1dszn3DKcuhpm7mQlKP0iOdgPCKmwEdYglIHX&ref=PX"
  },
  "currency": "KRW",
  "totalAmount": 15000,
  "balanceAmount": 15000,
  "suppliedAmount": 13636,
  "vat": 1364,
  "taxFreeAmount": 0,
  "method": "카드"
}

ref

profile
새로운 것을 배우는걸 좋아합니다.

0개의 댓글