• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    해결됨

포트원 다른 PG사 결제창 테스트 문제

24.01.31 12:06 작성 24.01.31 12:08 수정 조회수 397

1

안녕하세요. 잘 수강 했습니다. 좋은 강의 감사합니다.

실 서비스 결제를 하는데 많은 도움이 되고 있습니다.

 

다름이 아니라 강의를 참고해 (구)토스페이먼츠는 잘 구현이 되었습니다.

주문 결제 주문목록 등 다 구현이 되었는데요.

 

제가 실제 연동 PG사를 웰컴페이먼츠로 안내 받아. 

테스트에 연동에서 토스페이먼츠나 웰컴페이먼츠를 대표 PG사로 사용 시 결제창이 뜨지 않거나,

 

스크린샷 2024-01-31 오전 11.52.05.png

위와 같은 오류가 발생해 문의 드립니다.

문서를 봐도 다른 게 없는 것 같은데, 왜 안되는지 이유를 잘 모르겠습니다.

 

  • 토스페이먼츠(구) : 결제 잘됨.

  • 토스페이먼츠 : 결제창이 뜨지 않고 바로 주문내역 (결제전) 상태로 이동

  • 월컴페이먼츠 : 결제창 뜨지 않고 위 이미지 처럼 바로 오더체크로 이동 후 오류 발생

 

(404, 'Not Found')
Traceback (most recent call last):
  File "/Users/adver/program/advercoder_ai/mall/models.py", line 184, in update
    self.meta = self.api.find(merchant_uid=self.merchant_uid)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/adver/program/advercoder_ai/env/lib/python3.11/site-packages/iamport/client.py", line 91, in find
    return self.find_by_merchant_uid(merchant_uid)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/adver/program/advercoder_ai/env/lib/python3.11/site-packages/iamport/client.py", line 82, in find_by_merchant_uid
    return self._get(url)
           ^^^^^^^^^^^^^^
  File "/Users/adver/program/advercoder_ai/env/lib/python3.11/site-packages/iamport/client.py", line 61, in _get
    return self.get_response(response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/adver/program/advercoder_ai/env/lib/python3.11/site-packages/iamport/client.py", line 33, in get_response
    raise Iamport.HttpError(response.status_code, response.reason)
iamport.client.Iamport.HttpError: (404, 'Not Found')
Not Found: /mall/orders/73/check/93/

 

이런 상황이다 보니, 어떻게 이것을 풀어가야 할지 고민이 되서 여쭤봅니다.

 

(구)토스페이먼츠와 다른 무언가를 해야 하는 설정이 있을까요?

문서를 봐도 잘 모르겠어서 여쭤 봅니다.

조언해 주시면 감사하겠습니다. 감사합니다!

답변 1

답변을 작성해보세요.

0

안녕하세요.

결제를 시도하는 payment_pay.html 템플릿 내에서 IMP.request_pay 함수에서 두번째 인자로 콜백함수를 지정하는 데요. 이 콜백함수에서는 인자로 포트원 서버 응답객체 response를 전달받습니다.

IMP.request_pay 함수에서 콜백함수는 결제가 성공 혹은 실패되었을 때 호출됩니다. 아마도 어떠한 설정 상의 이슈로 결제가 시도되지 않고 실패 상태로 콜백함수가 호출되어, 콜백함수 내 locaiton.href = "결제 확인 주소" 코드가 수행되어 페이지 전환이 된 듯 보입니다.

location.href 페이지 이동 코드는 주석 처리하시고, 콜백 함수 내에 console.log(response) 코드로 로그를 찍으셔서 그 응답내역을 확인해보시겠어요? 아마도 오류 내역이 확인되실 듯 합니다. 그리고 console.log(props); 로 설정 내용도 같이 출력해보시구요.

결제 페이지에서 브라우저 "페이지 소스보기" 하셔서 포트원 결제 시도에 사용된 IMP.init 및 IMP.request_pay 등의 코드를 복사하시구요. 해당 오류내역과 props 내역도 같이 포트원 측에 문의하시면, 웰컴페이먼츠 등을 사용하기 위한 JS API 인자 지정 방법과 설정에 대해서 피드백을 받으실 수 있으실 듯 합니다.

회신 받으시면 제게도 공유해주시고, 장고 설정으로 보완할 부분이 있으면 같이 고민해보시죠.

화이팅입니다. :-)

박건영님의 프로필

박건영

질문자

2024.01.31

빠른 답변에 너무나도 감사 합니다.

 

{
    "success": false,
    "error_code": "NOT_READY",
    "error_msg": "등록된 사용자 또는 PG 설정 정보가 없거나, 조회 할 수 없습니다"
}

 

응답이 이렇게 오는 것을 보니, payment_props에서 pg를 지정해 줘야 했습니다.

 

    payment_props = {
        "pg": "welcome",
        "merchant_uid": payment.merchant_uid,
        "name": payment.name,
        "amount": payment.desired_amount,
        "buyer_name": payment.buyer_name,
        "buyer_email": payment.buyer_email,
        "buyer_tel": "010-0000-0000",
    }

 

일부 PG사 들은 "pg" 사를 지정해 줘야 하고, 웰컴페이먼츠는 buyer_tel이 필수 였습니다.

https://developers.portone.io/docs/ko/pg/payment-gateway/readme?v=v1
여기에서 각 PG사별 요구 사항을 확인 해야 했습니다.

토스 페이먼츠는

pg: "tosspayments", // 반드시 "tosspayments"임을 명시해주세요.

이러한 내용이 있었습니다.

 

pg사만 잘 지정해 주면 좋을것 같습니다!

 

감사합니다. 페이지 이동을 막고 건너오는 오류메세지를 보면 되는데 자바스크립트가

 

익숙하지 않다보니 생각하지 못했네요!

 

좋은 하루 되세요!