해결된 질문
작성
·
115
답변 3
1
안녕하세요, 인프런 AI 인턴입니다. 김지환님.
포트원 결제 후 받은 imp_uid
값을 API에 전송하려고 하시는데, 404 에러가 발생하는 문제에 대해 해결 방법을 알려드리겠습니다.
해당 문제와 관련하여 도움이 될 수 있는 유사한 질문들을 찾아 제공해드립니다.
일반 결제 연동 테스트할때 IMP 가 없습니다 에러가 발생합니다
이 답변에선 다음과 같은 내용을 다룹니다:
에러가 뜨네요 수강 강의 내용에도 전체 내용이 없어서 안되네요 전체 코드는 제공이 안되나요??
스키마와 리졸버 이름 불일치 문제에 대한 해결 방법
useQuery로 fechBoard
데이터를 콘솔로 제대로 찍히게 하고 오류를 해결하는 자세한 방법
404 에러는 보통 클라이언트가 요청한 자원(URL)을 서버에서 찾을 수 없을 때 발생합니다. 아래 몇 가지 가능성을 점검해 보세요:
createPointTransactionOfLoading
API의 경로가 정확한지 확인합니다. 잘못된 경로일 경우 404 에러가 발생합니다.createPointTransactionOfLoading
API의 문서나 강의 자료를 참고해서 요청 형식이나 파라미터가 올바른지 확인합니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
해당 사항을 모두 확인하였는데 여전히 404 에러뜹니다. 강의에서 나온거처럼 포트원 테스트 결제로 하고있는데, 테스트 결제로 받은 impUid는 404 에러 뜨는걸까요 ? GraphQL API 문제 페이지에서 createPointTransactionOfLoading
API 호출해봐도 404 에러뜹니다. 저의 코드를 보고 답변을 해주시면 감사하겠습니다.
PointModal.index.tsx
const onClickAddPoint = () => {
const IMP = window.IMP
IMP.init('imp31236121')
IMP.request_pay(
{
pg: 'kakaopay',
pay_method: 'card',
merchant_uid: `payment-${new Date().getTime()}`, // 주문 고유 번호
name: '마우스',
amount: selectedPoint,
buyer_email: 'admin@joonggomarket.com',
buyer_name: '김지환',
buyer_tel: '010-5838-5146',
buyer_addr: '경기도 용인시 기흥구',
buyer_postcode: '01181',
m_redirect_url: 'http://localhost:3000/markets', // 모바일에서는 결제시, 페이지 주소가 바뀜. 따라서, 결제 끝나고 돌아갈 주소 입력해야함
},
async function (response: any) {
console.log(response)
const { success, imp_uid } = response
if (success) {
await createPointTransactionOfLoading(imp_uid)
} else {
Modal.error({ content: '카카오페이 결제를 정상적으로 처리하지 못하였습니다.' })
}
}
)
}
useMutationCreatePointTransactionOfLoading.tsx
import { gql, useMutation } from '@apollo/client'
import { Modal } from 'antd'
import type {
IMutation,
IMutationCreatePointTransactionOfLoadingArgs,
} from 'src/commons/types/generated/types'
import { useRouter } from 'next/router'
import { FETCH_USER_LOGGEDIN } from '../../quires/user/useQueryFetchUserLoggedIn'
export const CREATE_POINT_TRANSACTION_OF_LOADING = gql`
mutation createPointTransactionOfLoading($impUid: ID!) {
createPointTransactionOfLoading(impUid: $impUid) {
_id
amount
}
}
`
export const useMutationCreatePointTransactionOfLoading = () => {
const router = useRouter()
const [createPointTransactionOfLoadingMutation, { loading }] = useMutation<
Pick<IMutation, 'createPointTransactionOfLoading'>,
IMutationCreatePointTransactionOfLoadingArgs
>(CREATE_POINT_TRANSACTION_OF_LOADING)
const createPointTransactionOfLoading = async (
impUid: IMutationCreatePointTransactionOfLoadingArgs['impUid']
): Promise<void> => {
try {
const result = await createPointTransactionOfLoadingMutation({
variables: {
impUid,
},
refetchQueries: [
{
query: FETCH_USER_LOGGEDIN,
},
],
})
Modal.success({
content: `${new Intl.NumberFormat('en-US').format(result?.data.createPointTransactionOfLoading.amount)}원 포인트 충전이 완료되었습니다.`,
})
} catch (error) {
if (error instanceof Error) Modal.error({ content: error.message })
}
}
return { createPointTransactionOfLoading, loading }
}
0
안녕하세요! 지환님!
아래 초무님께서 답변해 주신 것처럼 학습자료의 포트원 key를 사용해 주세요!
실제로 백엔드에서는 코드캠프 계정으로 포트원에 가입하여 인증 절차를 받아야 합니다.
따라서, 이와 관련하여 코드캠프 계정에 등록된 key는 1개 뿐이랍니다!
답변을 주신 초무님 감사드립니다!^^
덕분에 문제를 해결하였습니다 !! 감사드려요 !!