xmlProc = new xmlProcess ($this->ticket); } /* 주문번호 얻기(단일 상품기준입니다. 여러상품일 경우 아래의 ITEMS와 price에 대한 수정이 필요합니다.) */ public function get_cartNo($item_url,$thumbnail_url,$item_code,$item_name, $order_qty, $price, $shipping_type, $shipping_price=0,$mem_name='',$mem_phone='',$mem_email=''){ $soap_url = "http://www.auction.co.kr/IpayService/Ipay/InsertIpayOrderToLong"; // XML명령을 받을 주소 $orderQuery = ""; $orderQuery .= " "; $orderQuery .= " "; $orderQuery .= ''; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. $eleResult = $this->xmlProc->parseXml($resultXml,'order_proc'); // 결과XML에서 결과노드를 얻는다. if(!$eleResult){ return false; } $requestResult = $eleResult->firstChild->nodeValue; // 결과노드에서 결과값을 얻는다. return $requestResult; } /* 결제정보 얻기,출력 */ public function get_orderInfo1($payNo){ $soap_url = "http://www.auction.co.kr/IpayService/Ipay/GetIpayAccountNumb"; // XML명령을 받을 주소 $orderQuery = ''; $orderQuery .= ' '.$payNo.''; $orderQuery .= ''; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. $eleResult = $this->xmlProc->parseXml($resultXml,'accountNum'); // 결과XML에서 결과노드를 얻는다. if(!$eleResult){return false; } return $eleResult; } public function view_orderInfo1($eleResult){ if(!$eleResult){ echo 'false'; return false; } echo ""; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "';; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "'; echo "
IpayCartNo".$eleResult->getAttribute('IpayCartNo').'
PayNo".$eleResult->getAttribute('PayNo').'
OrderNo".$eleResult->getAttribute('OrderNo').'
AuctionOrderNos".$eleResult->getAttribute('AuctionOrderNos').'
ItemNos".$eleResult->getAttribute('ItemNos').'
ApprNumb".$eleResult->getAttribute('ApprNumb').'
InsDate".$eleResult->getAttribute('InsDate').'
PayDate".$eleResult->getAttribute('PayDate').'
PayPrice".$eleResult->getAttribute('PayPrice').'
DiscountPrice".$eleResult->getAttribute('DiscountPrice').'
ShippingPrice".$eleResult->getAttribute('ShippingPrice').'
Emoney".$eleResult->getAttribute('Emoney').'
PaymentType".$eleResult->getAttribute('PaymentType').'
BankCode".$eleResult->getAttribute('BankCode').'
BankName".$eleResult->getAttribute('BankName').'
AcctNumb".$eleResult->getAttribute('AcctNumb').'
ExpireDate".$eleResult->getAttribute('ExpireDate').'
CardName".$eleResult->getAttribute('CardName').'
CardCode".$eleResult->getAttribute('CardCode').'
NoInterestYN".$eleResult->getAttribute('NoInterestYN').'
CardMonth".$eleResult->getAttribute('CardMonth').'
CardNumb".$eleResult->getAttribute('CardNumb').'
BuyerID".$eleResult->getAttribute('BuyerID').'
BuyerName".$eleResult->getAttribute('BuyerName').'
ServiceUrl".$eleResult->getAttribute('ServiceUrl').'
RedirectUrl".$eleResult->getAttribute('RedirectUrl').'
"; return true; } /* 결제자정보 얻기,출력 */ // 상태와 관계없이 모두 가능 public function get_orderInfo2($payNo){ $soap_url = "http://www.auction.co.kr/IpayService/Ipay/GetIpayPaidOrderList"; // XML명령을 받을 주소 $orderQuery = ""; $orderQuery .= " "; $orderQuery .= " "; $orderQuery .= ""; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. if(!$resultXml){ return 1; } $resultNodeList = $this->xmlProc->parseXml($resultXml,'orderList'); // 결과XML에서 결과노드를 얻는다. return $resultNodeList; } // 배송준비중 or 결제완료 등의 경우만 가능(환불완료 등 x) public function get_orderInfo2_2($startDate,$endDate){ $soap_url = "http://www.auction.co.kr/IpayService/Ipay/GetIpayPaidOrderList"; // XML명령을 받을 주소 $orderQuery = ''; $orderQuery .= ' '; $orderQuery .= ' '; $orderQuery .= ' '; $orderQuery .= ''; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. if(!$resultXml){ return false; } $resultNodeList = $this->xmlProc->parseXml($resultXml,'orderList'); // 결과XML에서 결과노드를 얻는다. return $resultNodeList; } public function view_orderInfo2($resultNodeList){ if(!$resultNodeList){ echo 'false'; return false; } $i=0; while($eleResult = $resultNodeList->item($i)){ echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
CartNo".$CartNo = $eleResult->getAttribute('CartNo')."
PayNo".$PayNo = $eleResult->getAttribute('PayNo')."
OrderNo".$OrderNo = $eleResult->getAttribute('OrderNo')."
CancelYn".$CancelYn = $eleResult->getAttribute('CancelYn')."
ItemNo".$ItemNo = $eleResult->getAttribute('ItemNo')."
ItemCode".$ItemCode = $eleResult->getAttribute('ItemCode')."
ItemName".$ItemName = $eleResult->getAttribute('ItemName')."
AwardQty".$AwardQty = $eleResult->getAttribute('AwardQty')."
AwardAmount".$AwardAmount = $eleResult->getAttribute('AwardAmount')."
BuyerId".$BuyerId = $eleResult->getAttribute('BuyerId')."
BuyerName".$BuyerName = $eleResult->getAttribute('BuyerName')."
DistMobileTel".$DistMobileTel = $eleResult->getAttribute('DistMobileTel')."
DistTel".$DistTel = $eleResult->getAttribute('DistTel')."
OrderDate".$OrderDate = $eleResult->getAttribute('OrderDate')."
DistPostNo".$DistPostNo = $eleResult->getAttribute('DistPostNo')."
DistAddressPost".$DistAddressPost = $eleResult->getAttribute('DistAddressPost')."
DistAddressDetail".$DistAddressDetail = $eleResult->getAttribute('DistAddressDetail')."
VisitReceiptNo".$VisitReceiptNo = $eleResult->getAttribute('VisitReceiptNo')."
OrderStatus".$OrderStatus = $eleResult->getAttribute('OrderStatus')."
GroupOrderSeqno".$GroupOrderSeqno = $eleResult->getAttribute('GroupOrderSeqno')."
RequestOption".$RequestOption = $eleResult->getAttribute('RequestOption')."
DeliveryRemark".$DeliveryRemark = $eleResult->getAttribute('DeliveryRemark')."
DeliveryFee".$DeliveryFee = $eleResult->getAttribute('DeliveryFee')."
DeliveryDelayDay".$DeliveryDelayDay = $eleResult->getAttribute('DeliveryDelayDay')."
DeliveryDelayNotifyDate".$DeliveryDelayNotifyDate = $eleResult->getAttribute('DeliveryDelayNotifyDate')."
"; ++$i; } return true; } /* 주문상태 */ function get_orderStatus($cartNo,$itemNo){ $soap_url = "http://www.auction.co.kr/IpayService/Ipay/GetIpayReceiptStatus"; // XML명령을 받을 주소 $orderQuery = ' '.$cartNo.' '.$itemNo.' '; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. $eleResult = $this->xmlProc->parseXml($resultXml,'receiptStatus'); // 결과XML에서 결과노드를 얻는다. if(!$eleResult){ return false; } $requestResult = $eleResult->firstChild->nodeValue; // 결과노드에서 결과값을 얻는다. return $requestResult; } /* 결제완료상태 */ function get_isPaid($cartNo,$itemNo){ $soap_url = "http://www.auction.co.kr/IpayService/Ipay/GetIpayAgreementStatus"; // XML명령을 받을 주소 $orderQuery = ' '.$cartNo.' '.$itemNo.' '; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. $eleResult = $this->xmlProc->parseXml($resultXml,'agreementStatus'); // 결과XML에서 결과노드를 얻는다. if(!$eleResult){ return false; } $requestResult = $eleResult->nodeValue; // 결과노드에서 결과값을 얻는다. return $requestResult; } /* 결제수단 */ function get_paymentType($cartNo,$itemNo){ $soap_url = "http://www.auction.co.kr/IpayService/Ipay/GetIpaySettlementMeans"; // XML명령을 받을 주소 $orderQuery = ' '.$cartNo.' '.$itemNo.' '; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. $eleResult = $this->xmlProc->parseXml($resultXml,'settlementMeans'); // 결과XML에서 결과노드를 얻는다. if(!$eleResult){ return false; } $requestResult = $eleResult->nodeValue; // 결과노드에서 결과값을 얻는다. return $requestResult; } /* 결제번호 */ function get_payNo($cartNo){ $soap_url = "http://www.auction.co.kr/IpayService/Ipay/GetIpayOrderConfirm"; // XML명령을 받을 주소 $orderQuery = ' '.$cartNo.' '; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. $eleResult = $this->xmlProc->parseXml($resultXml,'orderConfirm'); // 결과XML에서 결과노드를 얻는다. if(!$eleResult){ return false; } $requestResult = $eleResult->firstChild->nodeValue; // 결과노드에서 결과값을 얻는다.; return $requestResult; } /* 판매취소 */ function set_denySell($orderNo,$itemNo){ $sellerId = $this->sellerid; $soap_url = "http://www.auction.co.kr/IpayService/Ipay/IpayDenySell"; // XML명령을 받을 주소 $orderQuery = ''; $orderQuery .= ' '; $orderQuery .= ''; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. $eleResult = $this->xmlProc->parseXml($resultXml,'denySell'); // 결과XML에서 결과노드를 얻는다. if(!$eleResult){ return false; } $requestResult = $eleResult->firstChild->getAttribute('DenySellResponseType'); return $requestResult; } /* 구매결정요청 결과는 string로 'true','false' 성공 시 한번만 'true'이고 재호출 시 'false' */ function set_orderDecisionRequest($orderNo,$itemNo){ $sellerId = $this->sellerid; $soap_url = "http://www.auction.co.kr/IpayService/Ipay/DoIpayOrderDecisionRequest"; $orderQuery = ""; $orderQuery .= " "; $orderQuery .= ""; $resultXml = $this->xmlProc->sendQuery($soap_url,$orderQuery); // 서비스를 호출하여 결과 XML을 얻는다. $eleResult = $this->xmlProc->parseXml($resultXml,'decisionRequest'); // 결과XML에서 결과노드를 얻는다. if(!$eleResult){ return false; } $requestResult = $eleResult->firstChild->getAttribute('Result'); return $requestResult; } } /*---------------------------------------------------- 옥션서버에 curl로 연결하게 한다. xmlProcess 클래스에서 호출된다 ------------------------------------------------------*/ class auctionSession { private $serverUrl = "https://api.auction.co.kr/ArcheSystem/IpayService.asmx"; //실제 운영 서버 주소; private $soapAuction; public function __construct($soapAuction){ $this->soapAuction = $soapAuction; } /** sendHttpRequest Sends a HTTP request to the server for this session Input: $requestBody Output: The HTTP Response as a String */ public function sendHttpRequest($requestBody) { //build auction headers using variables passed via constructor $headers = $this->buildAuctionHeaders(strlen($requestBody)); //initialise a CURL session $connection = curl_init(); //set the server we are using (could be Sandbox or Production server) curl_setopt($connection, CURLOPT_URL, $this->serverUrl); //stop CURL from verifying the peer's certificate curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0); //set the headers using the array of headers curl_setopt($connection, CURLOPT_HTTPHEADER, $headers); //set method as POST curl_setopt($connection, CURLOPT_POST, 1); //set the XML body of the request curl_setopt($connection, CURLOPT_POSTFIELDS, $requestBody); //set it to return the transfer as a string from curl_exec curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1); //Send the Request $response = curl_exec($connection); //close the connection curl_close($connection); //return the response return $response; } private function buildAuctionHeaders($requestBodyLength) { $headers = array ( "Content-Type: text/xml; charset=utf-8", "Content-Length: $requestBodyLength", "SOAPAction: $this->soapAuction" ); return $headers; } } /*---------------------------------------------------- xml명령을 주고 받는 역할을 한다. ------------------------------------------------------*/ class xmlProcess { private $ticket; private $resArr; public function __construct($ticket){ $this->ticket = $ticket; } /* Request SOAP Message를 서버에 요청 */ public function sendQuery($soap_url,$orderQuery){ // Set Request SOAP Message $requestXmlBody = ' '; $requestXmlBody .= ' '; $requestXmlBody .= ' '; $requestXmlBody .= ' '; $requestXmlBody .= ' ' . $this->ticket . ' '; $requestXmlBody .= ' '; $requestXmlBody .= ' '; $requestXmlBody .= ' '; $requestXmlBody .= $orderQuery; $requestXmlBody .= ' '; $requestXmlBody .= ' '; $requestXmlBody = str_replace("&", "&", $requestXmlBody); // Load the XML Document to Print Request SOAP $requestDoc = new DomDocument(); $requestDoc->loadXML($requestXmlBody); /* 디버깅용? // Print Request SOAP echo "* REQUEST SOAP
"; echo htmlentities ($requestDoc->saveXML()); */ $session = new auctionSession($soap_url); //Create a new auction session with all details pulled in from included auctionSession.php $responseXml = $session->sendHttpRequest($requestXmlBody); //send the request and get response return $responseXml; } /* Response SOAP Message를 처리한다. */ public function parseXml($responseXml,$mode){ if(stristr($responseXml, 'HTTP 404') || $responseXml == '') { die('

Error sending request'); } else { //Xml string is parsed and creates a DOM Document object $responseDoc = new DomDocument(); $responseDoc->loadXML($responseXml); /* 디버깅용? // Print Response SOAP echo "

";
			echo "* RESPONSE SOAP
"; echo "
".iconv("UTF-8", "EUC-KR", urldecode (htmlentities ($responseDoc->saveXML(), ENT_NOQUOTES, "UTF-8")) ); echo "
"; */ // Error $eleFaultcode = $responseDoc->getElementsByTagName('faultcode')->item(0); $eleFaultstring = $responseDoc->getElementsByTagName('faultstring')->item(0); switch($mode){ case 'order_proc' : $eleResult = $responseDoc->getElementsByTagName('InsertIpayOrderToLongResult')->item(0); break; case 'order_result' : $eleResult = $responseDoc->getElementsByTagName('IpayResponse')->item(0); break; case 'accountNum' : $eleResult = $responseDoc->getElementsByTagName('GetIpayAccountNumbResult')->item(0); break; case 'orderList' : $eleResult = $responseDoc->getElementsByTagName('GetOrderListResponseT'); break; case 'receiptStatus' : $eleResult = $responseDoc->getElementsByTagName('GetIpayReceiptStatusResponse')->item(0); break; case 'agreementStatus' : $eleResult = $responseDoc->getElementsByTagName('GetIpayAgreementStatusResponse')->item(0); break; case 'orderConfirm' : $eleResult = $responseDoc->getElementsByTagName('GetIpayOrderConfirmResponse')->item(0); break; case 'settlementMeans' : $eleResult = $responseDoc->getElementsByTagName('GetIpaySettlementMeansResponse')->item(0); break; case 'denySell' : // 판매취소 or 판매거부 $eleResult = $responseDoc->getElementsByTagName('IpayDenySellResponse')->item(0); break; case 'decisionRequest' : $eleResult = $responseDoc->getElementsByTagName('DoIpayOrderDecisionRequestResponse')->item(0); default : break; } if ((empty($eleFaultcode)) && (!empty($eleResult))){ return $eleResult; }else{ $this->processError($eleFaultcode, $eleFaultstring); } } return ''; } /** * 에러 처리를 한다. * $eleFaultcode : 오류 코드 메시지 * $eleFaultstring : 오류 메시지 */ private function processError($eleFaultcode, $eleFaultstring){ return false; /* if ($eleFaultcode != null) echo "faultcode : ".iconv("UTF-8", "EUC-KR", urldecode (htmlentities ($eleFaultcode->nodeValue, ENT_NOQUOTES, "UTF-8")))."
"; if ($eleFaultstring != null) echo "faultstring : ".iconv("UTF-8", "EUC-KR", urldecode (htmlentities ($eleFaultstring->nodeValue, ENT_NOQUOTES, "UTF-8")))."
"; */ } } ?>