PHP 8 연동 API
백오피스와 홈페이지가 PHP8과 최신 버전의 MariaDB로 만들었는데 토스페이먼츠 결제 연동과 정산 연동 API 관련 자료나 매뉴얼을 받고 싶습니다
55 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
토스페이먼츠 결제연동팀
샘플소스 안내
아래 버튼을 눌러 샘플 소스를 확인하세요
샘플 소스는 이미 적용해 보았지만 토스페이먼츠 기술지원팀이 이 소스를 사용하지 말고 다른 소스를 소개해줘 이 부분으로 사용한 후 가동하고 있지만, 매뉴얼이 없어 에러가 나더라도 어디에서 에러가 나오는지 모르겠습니다. 개발자용 매뉴얼이 없나요? 그리고 정산 부분을 저희가 개발한 백오피스와 연동하기 위한 API는 제공하지 않나요?
저희 docs.tosspayments.com 문서는 보셨을까요?
네 보았습니다 여러번 ㅠㅠ
그리고 어떤 에러가 발생하는지 여기에 올려주시면 확인해 드리도록 하겠습니다.
api reference는 확인해 보셨을까요?
정산 부분은 https://docs.tosspayments.com/reference#%EC%A0%95%EC%82%B0-%EC%A1%B0%ED%9A%8C 이 API 를 이용하시면 됩니다.
코어 API | 토스페이먼츠 개발자센터
토스페이먼츠 API 엔드포인트(Endpoint)와 객체 정보, 파라미터, 요청 및 응답 예제를 살펴보세요.
ASP나 모바일 부분에는 자세한 자료들이 있는데 PHP는 지원팀에서 알려준 샘플 소스 밖에 없네요 ㅠㅠ
혹시 사용하시는 모듈이 어떤 모듈이실까요?
최신 js sdk 모듈이 맞으실까요?
말씀해 주시는 내용으로 보면 구모듈인 xpay를 이용하시는게 아닌가 싶습니다.
아닙니다 PHP 8을 사용합니다
고객 쪽에 결제창을 띄우실때 호출하시는
js 파일이
js.tosspayments.com 도메인이 맞을까요?
그렇다면 언어와 상관없이 연동이 가능하십니다.
최신 모듈이시네요.
그렇다면 언어랑 상관없이 다 제공이 가능한데요.
기존에 지원팀에서 받으셨다는 문서가 어떤 문서일까요?
받으신 문서가 XPay 문서는 아닌가요?
깃 허브에 있는 내용인데 다시 들어가보니 찾을 수 없습니다. 일반인은 쉽게 찾도록 되어 있지 않아서요
깃허브에 있던 것인가요? 잠시만 기다려 주세요.
https://discord.com/channels/864296203746803753/877547393938251848/1014345583605059614
이 레포 맞으실까요?
예 맞습니다
샘플 소스는 이미 적용해 보았지만 토스페이먼츠 기술지원팀이 이 소스를 사용하지 말고 다른 소스를 소개해줘 이 부분으로 사용한 후 가동하고 있지만 -> 기존에 받은 샘플은 XPay로 보입니다. 추후 저희가 해당 깃허브 레포로 샘플을 드려 그쪽으로 사용하고 있다는 것으로 보입니다.
매뉴얼이 없어 에러가 나더라도 어디에서 에러가 나오는지 모르겠습니다 -> docs.tosspayments.com의 API reference(https://docs.tosspayments.com/reference) 에 존재합니다.
코어 API | 토스페이먼츠 개발자센터
토스페이먼츠 API 엔드포인트(Endpoint)와 객체 정보, 파라미터, 요청 및 응답 예제를 살펴보세요.
GitHub
payment-samples/payment-window/php at main · tosspayments/payment-s...
Contribute to tosspayments/payment-samples development by creating an account on GitHub.
저희가 해당 샘플은 개발자 편의를 위해 제공해 드리고 있습니다. 그래서 해당 샘플과 동일하게 연동하는 자세한 가이드는 해당 docs.tosspayments.com 에서 드리고 있습니다.
이 샘플소스에서 결제 성공시 백오피스의 회원 DB의 결제정보를 수정하고 싶은데 <?php if ($isSuccess) { 아래에 쿼리문을 작성해도 되나요?
succes.php 에서요
네 해당 소스는 “샘플” 이지 가이드가 아닙니다.
직접 가맹점에서 커스텀 해서 사용하시라고 제공해 드리는거라 염려 안하셔도 됩니다.
저희는 현재 모듈형태가 아니라 API 호출로 제공해 드리기 때문에 API에 curl을 태우는 코드(해당 샘플에서는 상단 2-31 줄) 만 있으면 결제가 됩니다.
예 알겠습니다. 적용해보고 안되면 다시 연락드릴게요. 처음으로 제대로된 응답을 받게되어 감사합니다.
네, 한가지 첨언해 드리자면 HTML 부분에 있는 php보다 html 상단에 있는 php 부분(31번 줄 이후에 작성)에서 로직 처리를 하시는 것을 추천해 드립니다.
performance 이슈때문에 그렇습니다.
알겠습니다
success.php 파일을 이렇게 수정했는데 괜찮을까요?
문제는 없어 보입니다. 저런 식으로 로직을 생성해 이용해 주세요.
회사에서 충분히 테스트 Key로 테스트한 후 오픈하자 했는데 어쩔수 없이 오픈해서 뒤늦게 맞추고 있습니다
제 의견을 안받아들이고 회사에서 결제 시스템을 오픈해서요
많은 도움 부탁드립니다. 감사합니다.
더 오류나 문의사항 있으시면 연락주세요. 감사합니다.
index.html을 payment.php로 파일명을 고치고 fail.php를 payment_fail.php, success.php를 payment_success.php로 고친 후 payment.php에 다음과 같이 일부 코드를 수정했습니다.
paymentData["공통"] = {
"amount": "<?php echo $pay_amount; ?>",
"orderId": "<?php echo $booking_no; ?>",
"orderName": "<?php echo $order_name; ?>",
"customerName": "<?php echo $user_name; ?>",
"customerEmail": null,
"customerMobilePhone": null,
"successUrl": currentURL + "payment_success.php",
"failUrl": currentURL + "payment_fail.php",
"windowTarget": "iframe",
"taxFreeAmount": null,
"cultureExpense": false
}
그런데 에러가 나오네요
currenctURL +를 삭제하면 될까요?

currentURL + 를 삭제하니 결제하기 버튼이 안먹힙니다 ㅠㅠ
php 개발이 처음음이신가요?
currentURL을 삭제하지말고, successURL을 절대경로로 관리하셔도 됩니다.
네 할 사람이 없어서 제가 하고 있습니다
그럼 위 코드에서 절대 경로로 하려면 어떻게 바꾸면 되나요?
개발 자체가 처음 이신것 같은데, 구글에서 절대경로 검색 해 보시면, 지금 운영하고 있는 서버 쪽 소스 어디를 바라보게 하는지 이해하실수 있을거에요!
window.location 활용 하시면 될것 같아요..
회사가 테스트를 먼저 해보자 한 제 의견을 무시하고 당장 결제 시스템을 가동했기에 요즘 PG 사의 API를 연동하는 것은 어제 처음 해보았습니다. 참고로 저는 수십년 동안 외국에서 살았었구요. 지금 엄청 어려운 상황입니다. 결제 대기잣가 300명 가까이 됩니다. 소스를 보내 드리니 뭐가 잘못 됐는지 검토 수정해주시면 정말 감사하겠습니다.
올려주신 파일은 삭제 했어요..
이곳에 이렇게 파일들 올리시면 안됩니다.
이런 파일 전달이 필요하실 경우에는 미리 말씀 부탁 드려요..
결제 운영에 필요한 API Key 페어가 다 있기 때문에, 악용될 가능성이 있어요..
우선,
"successUrl": currentURL + "https://k-fortune.com/success.php"
이거부터 수정 해주세요..
success.php 를 어디에 두셨나요?
@이실장 님 말씀 처럼, 차라리 풀 주소를 이곳에 넣어 주세요.
예를 들면 아래와 같아요
"successUrl" : "https://k-fortune.com/success.php"
그런데 저희는 success.php 가 어디에 위치 하는지 모르니까, 이건 직접 해결 하셔야 해요..
네 알겠습니다. 제가 처음이라 이 커뮤니케이션 앱도 처음이라 몰랐습니다. 감사합니다.
알려주신대로 successUrl을 고쳤는데 전과 동일한 현상이 나타납니다 ㅠㅠ
혹시 "successUrl" : "https://k-fortune.com/success.php" 이렇게 넣으셨나요?
success.php 위치는 https://k-fortune.com/success.php 이렇게 접근할수 있는건 맞으신가요 ?
"successUrl": currentURL + "success.php",
이렇게만 수정 하신것은 아닌지 확인 해주세요
currentURL 이라는 값을 제거하고, full URL 만 넣어보세요
"successUrl" : "https://k-fortune.com/success.php"
paymentData["공통"] = {
"amount": "",
"orderId": "",
"orderName": "-",
"customerName": "",
"customerEmail": null,
"customerMobilePhone": null,
"successUrl": "https://k-fortune.com/success.php",
"failUrl": "https://k-fortune.com/fail.php",
"windowTarget": "iframe",
"taxFreeAmount": null,
"cultureExpense": false
}
paymentData["공통"] = {
"amount": "",
"orderId": "",
"orderName": "-",
"customerName": "",
"customerEmail": null,
"customerMobilePhone": null,
"successUrl": currentURL + "success.php",
"failUrl": currentURL + "fail.php",
"windowTarget": "iframe",
"taxFreeAmount": null,
"cultureExpense": false
};
이렇게 공통으로 두개가 보여요
기존것 삭제 하고 새로운 것만 남겨주세요
아니면 특정 코드 삭제가 무서우시면, 주석 처리 해보세요
중간 정리 할게요
* 지금 paymentData["공통"] 으로 하나 라인을 더 생성 하신 것으로 보여요. 하나만 남겨두고 나머지는 삭제 해주세요. 동시에, 코드 라인도 맞춰 주시는것이 좋아요.
* "successUrl" : "https://k-fortune.com/success.php"
* 삭제가 무서우시면, 주석처리 해두세요. 주석 처리하면 그 코드는 남아있으면서, 실제 코드에서는 무시하게 됩니다.
* 샘플 그대로 활용하면서 결제만 진행 되도록 구현 하신것 같아요. 거의 다 되었습니다. 위 부분만 확인해서 수정 해보세요.
제가 실수로 중복했네요. 결제 성공했습니다
감사합니다
👍
추가 궁금하신점은 말씀 주세요
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
한가지 더 부탁드립니다
success.php에서 다음 부분을 삭제하면 이런 메시지가 안뜨나요?

<div class="box_section">
<div class="card-body">
<div class="gray">
<b>Response Data :</b>
<pre>
<?php echo trim(json_encode($responseJson,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE)); ?>
</pre>
</div>
</div>
</div>
네
하나하나 테스트를 해보시기 바랍니다.
정말 정말 감사합니다. 저 살았습니다
이 화면을 그대로 쓰시나요...?
아뇨, 불필요한 메시지가 뜨는 것을 삭제할 것이고
백오피스와의 연동도 마무리해야 합니다