//put those data in an array to make the xml below
$xml = '<order>';
$xml.= '<details>';
$xml.= '<id>'.$order_number.'</id>';
$xml.= '<restaurant>_Generic</restaurant>';
$xml.= '<datePlaced>'.date('Y-m-d H:i:s').'</datePlaced>';
$xml.= '<deliveryDate>'.$delivery.'</deliveryDate>';
$xml.= '<totalPrice>'.$total.'</totalPrice>';
$xml.= '<totalTax>'.$total_tax.'</totalTax>';
$xml.= '<totalDiscount>'.$total_discount.'</totalDiscount>';
$xml.= '<deliveryFee>'.$total_shipping.'</deliveryFee>';
$xml.= '<deliveryFeeTaxable>true</deliveryFeeTaxable>';
$xml.= '<tip>0.00</tip>';
$xml.= '<orderType>'.$shipping_method.'</orderType>';
$xml.= '<orderStatus>ProcessedOffline</orderStatus>';
$xml.= '<orderComment>'.$order_comments.'</orderComment>';
$xml.= '</details>';
$xml.= '<customer>';
$xml.= '<billingAddress>';
$xml.= '<firstName>'.$first_name.'</firstName>';
$xml.= '<lastName>'.$last_name.'</lastName>';
$xml.= '<companyName>'.$company.'</companyName>';
$xml.= '<phoneNumber>'.$phone.'</phoneNumber>';
$xml.= '<address1>'.$address_1.'</address1>';
$xml.= '<address1>'.$address_2.'</address1>';
$xml.= '<city>'.$city.'</city>';
$xml.= '<state>'.$state.'</state>';
$xml.= '<zipCode>'.$postcode.'</zipCode>';
$xml.= '</billingAddress>';
$xml.= '<deliveryAddress>';
$xml.= '<firstName>'.$meta['_shipping_first_name'][0].'</firstName>';
$xml.= '<lastName>'.$meta['_shipping_last_name'][0].'</lastName>';
$xml.= '<companyName>'.$meta['_shipping_company'][0].'</companyName>';
$xml.= '<phoneNumber>'.$phone.'</phoneNumber>';
$xml.= '<address1>'.$meta['_shipping_address_1'][0].'</address1>';
$xml.= '<address2 />';
$xml.= '<city>'. $meta['_shipping_city'][0].'</city>';
$xml.= '<state>'. $meta['_shipping_state'][0].'</state>';
$xml.= '<zipCode>'. $meta['_shipping_postcode'][0].'</zipCode>';
$xml.= '</deliveryAddress>';
$xml.= '<carInformation />';
$xml.= '<pickupInformation />';
$xml.= '</customer>';
$xml.= '<items>';
foreach( $order->get_items() as $item_id => $item ) {
$product = $order->get_product_from_item( $item );
$xml.= '<item>';
$xml.= '<plu></plu>';
$xml.= '<title>'.$item['name'].'</title>';
$xml.= '<itemPrice>'.$item['item_meta']['_line_total'][0].'</itemPrice>';
$xml.= '<qty>'.$item['qty'].'</qty>';
$xml.= '<recipient />';
$xml.= '<itemComment />';
$xml.= '<options>';
$xml.= '<option>';
$xml.= '<plu></plu>';
$xml.= '<title>'.$item['size'].'</title>';
$xml.= '<value>'.$item['brand'].'</value>';
$xml.= '<price></price>';
$xml.= '</option>';
$xml.= '</options>';
$xml.='</item>';
}
$xml.= '</items>';
$xml.= '<payment>';
$xml.= '<type>CreditCard</type>';
$xml.= '<cardInformation>';
$xml.= '<nameOnCard>'.$a.'</nameOnCard>';
$xml.= '<cardType />';
//$xml.= '<cardNumber>'.$a.'</cardNumber>';
$xml.= '<cardNumber>'.$a.'</cardNumber>';
$xml.= '<expMonth>'.$a.'</expMonth>';
$xml.= '<expYear>'.$a.'</expYear>';
$xml.= '<gateway>OfflineProcessing</gateway>';
$xml.= '<transactionType />';
$xml.= '<transactionID />';
$xml.= '</cardInformation>';
$xml.= '</payment>';
$xml.= '</order>';
ini_set("soap.wsdl_cache_enabled","0");
ini_set("default_socket_timeout", 100);
$clienturl = 'http://69.73.228.16:8008/weborder/OnlineOrderXmlProcessor.asmx?WSDL'; // live site
$client = new SoapClient($clienturl);
// print_r($xml);
$params = array();
$params["strDocType"] = 'OrderImport';
$params["strXml"] = $xml;
$result = $client->ProcessXML($params);
它不起作用。但是相同的代码用于具有不同URL的dev服务器。 在实时服务器中配置相同,但显示错误。
SOAP-ERROR:解析WSDL:无法从“http://69.73.228.16:8008/weborder/OnlineOrderXmlProcessor.asmx?WSDL”加载:无法加载外部实体“http://69.73.228.16:8008/weborder/OnlineOrderXmlProcessor.asmx?WSDL”
答案 0 :(得分:1)
是的,我得到了解决方案。
禁用CSF防火墙后我的代码正常运行。
您可以通过卷曲检查。
打开SSH并输入:
curl -A '' -4 http://google.com
你会收到回复。
现在通过您的WDSL URL进行检查
如果您收到错误,则应禁用防火墙。