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

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

QA

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

본문

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

<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] -> [결제상황 검토 후 결제승인] -> [결제승인 응답 및 디비처리] 이런식이겠네요

 

답변을 작성하시기 전에 로그인 해주세요.
전체 818
QA 내용 검색
filter #DB ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT