작성
·
169
0
포트원 API를 사용해서 결제를 진행하려고 합니다.
버튼을 클릭하면 해당 값을 받아 결제 창으로 넘기려고 하는데, 결제창이 아예 안 뜨네요
console.log를 통해 const response가 아예 작동하지 않는다는 건 확인했는데(앞뒤로 로깅메세지를 찍으니 앞에 것만 뜹니다) 왜 안되는지는 문서를 봐도 잘 모르겠습니다. 글도 예전의 아임포트 기준으로 쓰여진 게 많아서 답답하네요. 혹시 이유를 아시는 분 계시면 알려주시면 감사하겠습니다.
storeId/channelKey는 임의의 값으로 적어두긴 했는데, 실제로는 모두 발급받은 키를 입력했습니다.
<script src="https://cdn.portone.io/v2/browser-sdk.js"></script>
<script>
const storeId = "임의의 값";
const channelKey ="임의의 값";
async function requestPayment(button){
const response = await PortOne.requestPayment({
storeId: storeId,
channelKey: channelKey,
paymentId: '111111',
orderName: button.value+"원 캐쉬 충전",
totalAmount: button.value,
currency: "CURRENCY_KRW",
payMethod: "CARD",
});
console.log("111");
if(response.code != null){
return alert(response.message);
}
const notified = await fetch(`${SERVER_BASE_URL}/payment/complete`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
paymentId: response.paymentId
}),
});
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
엄송현님의 문제 상황을 듣고 보니, PortOne.requestPayment
함수 호출 시 결제 창이 나타나지 않는 현상이 발생하는 것 같습니다. 이 문제에 대한 해결 방안을 제시하기 전에, 제공하신 코드를 바탕으로 몇 가지 확인해보아야 할 점이 있습니다.
PortOne.requestPayment
함수 호출 전에 PortOne
객체가 올바르게 초기화되었는지 확인해야 합니다. 즉, PortOne
객체의 초기화 코드가 현재 코드 상에 없기 때문에, 이 부분이 제대로 처리되었는지 점검해 볼 필요가 있습니다. 일반적으로 API를 사용하기 전에는 해당 객체를 초기화하는 과정이 필요합니다.
storeId
와 channelKey
가 임의의 값으로 설정되어 있는데, 실제 키값을 사용하고 있음을 언급하셨습니다. 키 값이 올바르게 설정되었음은 확인되었지만, 이외에도 paymentId
, orderName
, totalAmount
등의 파라미터가 올바르게 전달되고 있는지 확인해보시기 바랍니다. 특히 totalAmount
의 경우, 버튼의 value
로부터 값을 받아오고 있는데, 해당 값이 정수 형태로 올바르게 설정되었는지 점검할 필요가 있습니다.
console.log
로 로깅 메시지를 찍어보신 것처럼, PortOne.requestPayment
함수 호출 직전, 직후, 그리고 에러 핸들링 부분에 로그를 추가하여 어느 부분에서 문제가 발생하고 있는지 좀 더 구체적으로 파악해보는 것도 좋은 방법입니다.
마지막으로, 현재 PortOne.requestPayment
함수가 async/await
패턴으로 호출되고 있으므로, 해당 함수를 호출하는 환경에서 async
함수로 정의되어 있는지 확인해보시기 바랍니다. 이는 최상위 레벨에서의 호출을 포함하여, 이벤트 핸들러 등에서도 해당되는 사항입니다.
문제 해결에 도움이 되었기를 바라며, 위의 점검 사항들을 검토해보시고 여전히 문제가 해결되지 않는다면, API를 제공하는 업체의 기술 지원팀에 문의하는 것도 하나의 옵션입니다.