2026, 새로운 도약을 시작합니다.

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

2년 전 조회 1,983

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

Copy




  

    

  

  

    

      

      총 주문금액

      15,000 원

      15,000원 결제하기

    

    

      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',

        })

      })

    

  




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

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

Copy


Authorization: Basic dGVzdF9za19PeUwwcVo0RzFWT0xvYkI2S3d2cm9XYjJNUVlnOg==

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

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

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

혹시방식은

Copy


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

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

답변 2개

채택된 답변
+20 포인트

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

여기를 보시면

PHP영역에

Copy


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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고