토스페이 연결 중인데 헤더에 값을 넘겨주라고 하는데 무슨 말인가요?

토스페이 연결 중인데 헤더에 값을 넘겨주라고 하는데 무슨 말인가요?

QA

토스페이 연결 중인데 헤더에 값을 넘겨주라고 하는데 무슨 말인가요?

답변 2

본문

토스페이먼트 결제 연동중인데 아래처럼
연결했는데 테스트 결제내역을 볼 수없길래
토스쪽에 문의 메일을 보냈습니다.

<html>
  <head>
    <script src="https://js.tosspayments.com/v1/payment"></script>
  </head>
  <body>
    <section>
      <!-- ... -->
      <span>총 주문금액</span>
      <span>15,000 원</span>
      <button id="payment-button">15,000원 결제하기</button>
    </section>
    <script>
      var clientKey = 'test_ck_Z0RnYX2w532gxz2jkPVNeyqApQEJ'
      var tossPayments = TossPayments(clientKey)
      var button = document.getElementById('payment-button') // 결제하기 버튼
      button.addEventListener('click', function () {
        tossPayments.requestPayment('카드', {
          amount: 15000,
          orderId: 'xCyroSCYYpZumYCyxmBDh',
          orderName: '토스 티셔츠 외 2건',
          customerName: '박토스',
          successUrl: 'http://localhost:8080/success',
          failUrl: 'http://localhost:8080/fail',
        })
      })
    </script>
  </body>
</html>


https://docs.tosspayments.com/guides/using-api/authorization#%EC%9D%B8%EC%A6%9D

위의 페이지를 보여주면서 http헤더에 포함되어야 한다고 하는데


Authorization: Basic dGVzdF9za19PeUwwcVo0RzFWT0xvYkI2S3d2cm9XYjJNUVlnOg==

윈 부분을 어디에 어떻게 추가해야 하나요?

일단 Basic 다음의 값은 {secret key}:를 base62 인코딩한 값이란 것은 알겠습니다.

 
그럼 위의 Authorization 부분은 어디에 추가해야 하나요?

 

혹시방식은


header ("Authorization: Basic" .base64_encode($secret key));

인가요? 그럼 위치는 어디인가요? htm테그보다 위인가요?

이 질문에 댓글 쓰기 :

답변 2

https://tossdev.github.io/gettingstarted.html

여기를 보시면

PHP영역에


$arrayBody = array();
$arrayBody["orderNo"] = "1";
$arrayBody["amount"] = 10000;
$arrayBody["amountTaxFree"] = 0;
$arrayBody["productDesc"] = "토스티셔츠";
$arrayBody["apiKey"] = "sk_test_w5lNQylNqa5lNQe013Nq";
$arrayBody["autoExecute"] = true;
$arrayBody["resultCallback"] = "https://YOUR-SITE.COM/callback";
$arrayBody["retUrl"] = "http://YOUR-SITE.COM/ORDER-CHECK";
$arrayBody["retCancelUrl"] = "http://YOUR-SITE.COM/close";
$jsonBody = json_encode($arrayBody);
$ch = curl_init('https://pay.toss.im/api/v2/payments');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($jsonBody))
);   //이 영역이 헤더입니다.  그 값은 $jsonBody 라는 변수로 위에서 대입한것이구요
$result = curl_exec($ch);
curl_close($ch);
echo "Response: ".$result;

 

로 되어있네요

내용을 잘 이해한건지 모르겠지만

https://docs.tosspayments.com/guides/payment-widget/integration

https://docs.tosspayments.com/reference

이렇게 2가지가 header를 전달하고 안 하고 약간 다르긴한데

PaymentWidget를 사용해서 자바스크립트만을 가지고 데이터를 전달할 수 있게 하는건지는...

그리고 successUrl 를 던지는 구간이라면 결제창띄우는 것 까지만의 구간일테고

결제가 완료되면 http://localhost:8080/success 이 구간으로 값이 들어 올 것이고

그 값과 현재 결제하려는 값을 비교하여 [결제승인]구간으로 넘어가야 하지 않을까 생각합니다.

 

따라서 저 헤더를 추가하는 구간은

success페이지 내에서 [결제승인]을 확인하는 구간에서 javascript 코드가 아닌 서버단에서 통신을 할 때 사용되어야 합니다.

 

큰 흐름의 순서는 [결제창 띄우고] -> [success or fail ==> success] -> [결제상황 검토 후 결제승인] -> [결제승인 응답 및 디비처리] 이런식이겠네요

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 123,664
© SIRSOFT
현재 페이지 제일 처음으로