我试图填充需要使用php curl发送的SOAP请求的值。我已经使用soap.xml请求设置了一个变量,并获得了所有需要传递的数据。
$shipBody = '<?xml version="1.0" encoding="utf-8"?>
'.$username.'
'.$password.'
'.$carrierName.'
'.$carrierService.'
'.$xml_data->children('itemdatastring')->asXML().'
'.$xml_data->asXML().'
'.$exId.'
'.$parcelId.'
'.$shipDate.'
'.$shipDate.'
https://tools.usps.com/go/TrackConfirmAction?tLabels='.$trackingUrl.'
true
';
我能够创建一个函数来获取所有行项目的sku和qty,但是我很难将返回值传递给$ shipBody变量。这是一个示例订单项;
$myShipment = array (
array(
'sku' => 'BA2222222',
'qty' => '2'
),
array(
'sku' => 'BA111111',
'qty' => '4'
),
);
以下是我目前如何获取订单项的XML。
function array_to_xml( $dataToConvert, $xml_data ) {
foreach( $dataToConvert as $key => $value ) {
if( is_numeric($key) ){
$key = 'items'; //dealing with <0/>.. issues
}
if( is_array($value) ) {
$subnode = $xml_data->addChild($key);
array_to_xml($value, $subnode);
} else {
$xml_data->addChild("$key",htmlspecialchars("$value"));
}
}
}
$orderLineItems = array();
foreach ($myShipment as $orderItem) {
$orderItemSku = $orderItem['sku'];
$orderItemQty = $orderItem['qty'];
$orderLineItems[] = array(
'quantity' => $orderItemQty,
'sku' => $orderItemSku
);
}
$xml_data = new SimpleXMLElement('');
array_to_xml($orderLineItems,$xml_data);
最后,这是完成的文件应该是什么样子;
'.$username.'
'.$password.'
'.$carrierName.'
'.$carrierService.'
2
BA2222222
4
BA111111
'.$exId.'
'.$parcelId.'
'.$shipDate.'
'.$shipDate.'
https://tools.usps.com/go/TrackConfirmAction?tLabels='.$trackingUrl.'
true
任何帮助/指针将非常感激。谢谢