21 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
네 알겠습니다. 지금 다른 작업하고 있어서 나중에 다시 메시지 드리겠습니다.
네~ 기다리겠습니다
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
@화상영어고객지원
결제진행 완료 후 결과 값입니다.
하지만 실제 결제는 이루어지지 않습니다.
index.php?pp=enroll_confirm_card_result
&pay_method=CARD&user_id=cnet21&total_amount=129000&orderId=MC4yMDUwMzc0NTA3MTI5&paymentKey=lslc720250523121222lDyK0&amount=129000
<script src="https://js.tosspayments.com/v2/standard"></script>
<script>
const amount = {
currency: "KRW",
value: <?=$total_amount?>,
};
let selectedPaymentMethod = "CARD";
function selectPaymentMethod(method) {
if (selectedPaymentMethod != null) {
document.getElementById(selectedPaymentMethod).style.backgroundColor = "#ffffff";
}
selectedPaymentMethod = method;
document.getElementById(selectedPaymentMethod).style.backgroundColor = "rgb(229 239 255)";
}
// ------ SDK 초기화 ------
const clientKey = "toss_key";
const customerKey = generateRandomString();
const tossPayments = TossPayments(clientKey);
const user_id= $('#user_id').val();
const pwho= $('#pwho').val();
const total_amount= $('#total_amount').val();
async function requestPayment() {
switch (selectedPaymentMethod) {
case "CARD": await payment.requestPayment({ method: "CARD", // 카드 및 간편결제 amount, orderId: generateRandomString(), orderName: "화상영어", successUrl: window.location.origin + "/index.php?pp=enroll_confirm_card_result&pay_method="+selectedPaymentMethod+"&user_id="+user_id+"&total_amount="+total_amount, // 결제 요청이 성공하면 리다이렉트되는 URL failUrl: window.location.origin + "/index.php?pp=enroll_card_fail", // 결제 요청이 실패하면 리다이렉트되는 URL customerEmail: "<?=$member['mb_email']?>", customerName: "<?=$member['mb_name']?>", // 가상계좌 안내, 퀵계좌이체 휴대폰 번호 자동 완성에 사용되는 값입니다. 필요하다면 주석을 해제해 주세요. customerMobilePhone: "<?=cleanPhoneNumber($member['mb_hp'])?>", card: { useEscrow: false, flowMode: "DEFAULT", useCardPoint: false, useAppCardOnly: false, }, }); } orderId=MC4yMDUwMzc0NTA3MTI5&paymentKey=lslc720250523121222lDyK0&amount=129000 이렇게 값을 가지고 오는데 toss 쪽에서 실제로 승인이 안되는거 같은데 뭐가 문제일까요.. 아..그리고 successUrl 페이지로 잘 넘어옵니다. toss_key 는 개월수에 따라 불러오게 되어있고요.. if ($mon >= 1 && $mon <=2 ) { $toss_mid = "lslc7wdnne"; $toss_key = "live_ck_P9BRQmyarY5DObR0wpxarJ07KzLN"; } elseif ($mon >= 3 && $mon < 7) { $toss_mid = "lslct3mceh"; $toss_key = "live_ck_eqRGgYO1r5qLwB92e0QnrQnN2Eya"; } elseif ($mon >= 6 && $mon < 13) { $toss_mid = "lslcu8bchx"; $toss_key = "live_ck_BX7zk2yd8y24q5nMzR1E3x9POLqK"; } elseif ($mon > 13) { $toss_mid = "lslc0g85nf"; $toss_key = "live_ck_yL0qZ4G1VOv2g79XljoB3oWb2MQY";
} else { $toss_key = ''; $toss_mid = ''; }
case "CARD": await payment.requestPayment({ method: "CARD", // 카드 및 간편결제 amount, orderId: generateRandomString(), orderName: "화상영어", successUrl: window.location.origin + "/index.php?pp=enroll_confirm_card_result&pay_method="+selectedPaymentMethod+"&user_id="+user_id+"&total_amount="+total_amount, // 결제 요청이 성공하면 리다이렉트되는 URL failUrl: window.location.origin + "/index.php?pp=enroll_card_fail", // 결제 요청이 실패하면 리다이렉트되는 URL customerEmail: "<?=$member['mb_email']?>", customerName: "<?=$member['mb_name']?>", // 가상계좌 안내, 퀵계좌이체 휴대폰 번호 자동 완성에 사용되는 값입니다. 필요하다면 주석을 해제해 주세요. customerMobilePhone: "<?=cleanPhoneNumber($member['mb_hp'])?>", card: { useEscrow: false, flowMode: "DEFAULT", useCardPoint: false, useAppCardOnly: false, }, }); } orderId=MC4yMDUwMzc0NTA3MTI5&paymentKey=lslc720250523121222lDyK0&amount=129000 이렇게 값을 가지고 오는데 toss 쪽에서 실제로 승인이 안되는거 같은데 뭐가 문제일까요.. 아..그리고 successUrl 페이지로 잘 넘어옵니다. toss_key 는 개월수에 따라 불러오게 되어있고요.. if ($mon >= 1 && $mon <=2 ) { $toss_mid = "lslc7wdnne"; $toss_key = "live_ck_P9BRQmyarY5DObR0wpxarJ07KzLN"; } elseif ($mon >= 3 && $mon < 7) { $toss_mid = "lslct3mceh"; $toss_key = "live_ck_eqRGgYO1r5qLwB92e0QnrQnN2Eya"; } elseif ($mon >= 6 && $mon < 13) { $toss_mid = "lslcu8bchx"; $toss_key = "live_ck_BX7zk2yd8y24q5nMzR1E3x9POLqK"; } elseif ($mon > 13) { $toss_mid = "lslc0g85nf"; $toss_key = "live_ck_yL0qZ4G1VOv2g79XljoB3oWb2MQY";
} else { $toss_key = ''; $toss_mid = ''; }
successUrl 에서 값을 받으신후에 승인 API 를 호출해야 최종 결제가 됩니다.
SDK v1 을 사용하는 코드이지만 successURL 이후에 처리는 동일하니까 샘플 참고해보세요.
GitHub
tosspayments-sample-v1/payment/payment-window/php at main · tosspa...
토스페이먼츠 SDK v1 샘플 프로젝트입니다. . Contribute to tosspayments/tosspayments-sample-v1 development by creating an account on GitHub.
아..그럼 위젯하고 api 사용의 장단점이 뭔가요?
장단점이 아니라 둘다 쓰셔야 합니다.
결제창 -> successURL 이동 -> 승인 API 호출 -> 결제 완료 순으로 진행됩니다.
네 가능한데 이미 V2 로 연동하신것 같으니
보내드린 곳에서 success.php 파일만 보시면 됩니다.
알겠습니다. 일단 success.php 를 보내주신 링크를 보고 진행해보고 안되면 다시 메시지 드리겠습니다.
감사합니당..
successUrl: window.location.origin + "/index.php?
여기주소도 success.php 로 바꾸시고 저희 코드 참고해서 구현하시면 될겁니다.
아..index.php 로 갔서 페이지별로 로딩 되게 해놓아서요..
* 갔다가
head와 tail 을 이용해서요..
네 그럼 그렇게 처리하시면 될것 같아요.
넵
$secretKey = 'test_sk_zXLkKEypNArWmo50nX3lmeaxYG5R';
이건 반드시 넣어야하는거죠?
네 실제 계약하신 키를 넣어야 합니다.
네..
MID 를 4개 쓰시기 때문에 결제창 호출하신 MID 에 맞춰서 secretkey 도 변경해주셔야 해요.
네 변경해서 결제 되는거 확인했습니다.
감사합니다.