이니시스 모바일 연동에 대한 고찰&썰풀이
간단하게 결론만 말씀드리면, 이니시스 결제연동은 최악입니다.
메뉴얼부터 시작해서, 기술지원까지 모두 최악입니다.
괜히 UPLUS 가 좋은게 아니에요~
메뉴얼이 너무 부실하고, 메뉴얼대로 해도 안되요 -_-;
심지어는 샘플 소스가 의미가 없습니다...
자 그럼 무엇때문에 이러는지 썰풀이 들어갑니다.
웹사이트의 모바일결제를 연동(카드)하던중,
P_NEXT_URL : 결제완료후 리다이렉트될 URL
P_NOTI_URL : 결제완료후 DB처리 해야할 URL
이라고 명시되어 있습니다.
결론을 말씀드리면 P_NOTI_URL 쓸데없습니다. 오로지 P_NEXT_URL 로 처리해야 합니다.
아무리 결제를 해도, 결제가 안될뿐더러, P_NEXT_URL 에는 P_STATUS 값이 정상적으로 00 이 떨어졌는데, 결제가 실제로 이루어지지 않았습니다.
그리고 P_NOTI_URL 에는 들어오지도 않았습니다.
그래서 구글링을 막 패대기한 결과 아래와 같이 처리하였습니다.
P_NEXT_URL 에서 POST 로 전송받은 값중에 P_REQ_URL 이라는 값이 있는데,
이 P_REQ_URL 주소로 P_MID 와 P_TID 를 전송하면, 실결제가 이루어진다.
그리고 리턴받은 값으로 DB처리를 하면 된다.
입니다.
P_NEXT_URL 의 소스코드 첨부합니다.
if($_POST['P_STATUS'] === '00')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_POST['P_REQ_URL']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'P_MID=상점의MID&P_TID='.$_POST['P_TID']) ; // 여기 수정
$result = curl_exec($ch);
echo "result = {$result}<br>";
/*
result = P_STATUS=00
&P_AUTH_DT=20190722142216
&P_AUTH_NO=17878219
&P_RMESG1=성공적으로 처리 하였습니다.
&P_RMESG2=00
&P_TID=INIMX_CARD20190722142216295264
&P_FN_CD1=14
&P_AMT=10&P_TYPE=CARD
&P_UNAME=
&P_MID=상점MIT
&P_OID=1563772737592
&P_NOTI=1563772737592&P_NEXT_URL=NEXT_URL
&P_MNAME=룸인코리아&P_NOTEURL=
&P_CARD_MEMBER_NUM=
&P_CARD_NUM=461954000387
&P_CARD_ISSUER_CODE=26
&P_CARD_PURCHASE_CODE=14
&P_CARD_PRTC_CODE=1
&P_CARD_INTEREST=0
&P_CARD_CHECKFLAG=1
&P_CARD_ISSUER_NAME=
&P_CARD_PURCHASE_NAME=
&P_FN_NM=신한카드
&P_MERCHANT_RESERVED=dXNlcG9pbnQ9MCY%3D
&P_CARD_APPLPRICE=10
*/
curl_close($ch);
}
이니시스는 개발자와 시간을 투여하여서라도 메뉴얼과 소스코드의 정리가 요구됩니다.