Initial import: Carteasy Shop (Dev-Stand)

This commit is contained in:
Thomas Bartelt
2026-04-20 01:03:43 +02:00
commit d504f8a05d
3845 changed files with 761050 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
<?php
/**
* Removes invalid characters from xml string.
**/
function stripInvalidXml($value) {
$ret = "";
$current;
if (empty($value)) {
return $ret;
}
$length = strlen($value);
for ($i=0; $i < $length; $i++) {
$current = ord($value{$i});
if (($current == 0x9) ||
($current == 0xA) ||
($current == 0xD) ||
(($current >= 0x20) && ($current <= 0xD7FF)) ||
(($current >= 0xE000) && ($current <= 0xFFFD)) ||
(($current >= 0x10000) && ($current <= 0x10FFFF))) {
$ret .= chr($current);
} else {
$ret .= " ";
}
}
return $ret;
}
/**
* Removes all invalid characters in xml string, e.g. & replaces with &amp; , < replaces with &lt; ....
**/
function normalizeXML($data) {
$LT = '<';
$GT = '>';
$res = "";
//remove all invalid xml characters
$data = stripInvalidXml($data);
$lastTagName = "";
for ($startIndex = 0; $startIndex < strlen($data); ) {
if ($data[$startIndex] == $LT) {
// parse tag name
$tagStart = $startIndex;
$tagEnd = strpos($data, $GT, $tagStart);
$tagName = trim(substr($data, $tagStart + 1, $tagEnd - $tagStart - 1));
//$tagName = htmlspecialchars_decode($tagName);
//$tagName = htmlspecialchars($tagName);
$lastTagName = $tagName;
$tag = $LT . $tagName . $GT;
$res = $res . $tag;
$startIndex = $tagEnd + 1;
} else {
// parse value
$endTag = $LT . "/" . $lastTagName . $GT;
$valueStart = $startIndex;
$valueEnd = strpos($data, $endTag, $valueStart);
$startNextTag = strpos($data, $LT, $valueStart);
if ($valueEnd === false) {
$valueEnd = $startNextTag;
}
if ($startNextTag < $valueEnd) {
$valueEnd = $startNextTag;
}
$value = trim(substr($data, $valueStart, $valueEnd - $valueStart));
$value = htmlspecialchars_decode($value);
$value = htmlspecialchars($value);
$res = $res . $value;
$startIndex = $valueEnd;
}
}
return $res;
}
/* EOF */
@@ -0,0 +1,681 @@
<?php
class paymorrowOrderResponse {
/**
* @var dateTime
*/
public $responseTimestamp; // dateTime
/**
* @var responsePaymorrowOrder
*/
public $responsePaymorrowOrder; // responsePaymorrowOrder
/**
* @var codeTypes
*/
public $responseResultCode; // codeTypes
/**
* @var string
*/
public $responseResultURL; // string
/**
* @var responseErrorType
*/
public $responseError; // responseErrorType
}
class responsePaymorrowOrder {
/**
* @var boolean
*/
public $paymorrowOrderRequestModified; // boolean
/**
* @var paymorrowOrderRequestType
*/
public $paymorrowOrderRequest; // paymorrowOrderRequestType
}
class paymorrow {
/**
* @var paymorrowOrderRequestType
*/
public $paymorrowOrderRequest; // paymorrowOrderRequestType
}
class paymorrowOrderRequestType {
/**
* @var stringType50
*/
public $requestMerchantId; // stringType50
/**
* @var stringType50
*/
public $requestId; // stringType50
/**
* @var dateTime
*/
public $requestTimestamp; // dateTime
/**
* @var languageType
*/
public $requestLanguageCode; // languageType
/**
* @var orderType
*/
public $order; // orderType
/**
* @var requestMerchantUrlType
*/
public $requestMerchantUrls; // requestMerchantUrlType
}
class orderType {
/**
* @var stringType50
*/
public $orderId; // stringType50
/**
* @var dateTime
*/
public $orderTimestamp; // dateTime
/**
* @var int
*/
public $orderShoppingDuration; // int
/**
* @var int
*/
public $orderCheckoutDuration; // int
/**
* @var stringType50
*/
public $orderSalesChannelId; // stringType50
/**
* @var customerType
*/
public $orderCustomer; // customerType
/**
* @var addressType
*/
public $orderShippingAddress; // addressType
/**
* @var orderShipmentDetailType
*/
public $orderShipmentDetails; // orderShipmentDetailType
/**
* @var date
*/
public $orderExpectedDeliveryDate; // date
/**
* @var decimal
*/
public $orderAmountNet; // decimal
/**
* @var orderAmountVatType
*/
public $orderAmountVAT; // orderAmountVatType
/**
* @var decimal
*/
public $orderAmountVATTotal; // decimal
/**
* @var decimal
*/
public $orderAmountGross; // decimal
/**
* @var currencyType
*/
public $orderCurrencyCode; // currencyType
/**
* @var orderItems
*/
public $orderItems; // orderItems
}
class orderItems {
/**
* @var orderItemType
*/
public $orderItem; // orderItemType
}
class customerType {
/**
* @var stringType50
*/
public $customerId; // stringType50
/**
* @var stringType50
*/
public $customerGroupId; // stringType50
/**
* @var languageType
*/
public $customerPreferredLanguage; // languageType
/**
* @var string
*/
public $customerIPAddress; // string
/**
* @var customerPersonalDetailsType
*/
public $customerPersonalDetails; // customerPersonalDetailsType
/**
* @var addressType
*/
public $customerAddress; // addressType
/**
* @var customerHistoryType
*/
public $customerHistory; // customerHistoryType
/**
* @var customerTypes
*/
public $orderCustomerType; // customerTypes
}
class customerPersonalDetailsType {
/**
* @var salutationTypes
*/
public $customerSalutation; // salutationTypes
/**
* @var stringType50
*/
public $customerNamePrefix; // stringType50
/**
* @var stringType50
*/
public $customerGivenName; // stringType50
/**
* @var stringType50
*/
public $customerMiddleName; // stringType50
/**
* @var stringType50
*/
public $customerSurname; // stringType50
/**
* @var stringType50
*/
public $customerNameSuffix; // stringType50
/**
* @var stringType50
*/
public $customerOrganizationName; // stringType50
/**
* @var stringType50
*/
public $customerPhoneNo; // stringType50
/**
* @var stringType50
*/
public $customerFaxNo; // stringType50
/**
* @var stringType50
*/
public $customerMobileNo; // stringType50
/**
* @var stringType320
*/
public $customerEmail; // stringType320
/**
* @var stringType50
*/
public $customerGender; // stringType50
/**
* @var date
*/
public $customerDateOfBirth; // date
}
class addressType {
/**
* @var stringType50
*/
public $addressContact; // stringType50
/**
* @var stringType50
*/
public $addressOrganizationName; // stringType50
/**
* @var stringType50
*/
public $addressDepartment; // stringType50
/**
* @var stringType50
*/
public $addressBuilding; // stringType50
/**
* @var stringType50
*/
public $addressStreet; // stringType50
/**
* @var stringType10
*/
public $addressHouseNo; // stringType10
/**
* @var stringType20
*/
public $addressPostalCode; // stringType20
/**
* @var stringType50
*/
public $addressLocality; // stringType50
/**
* @var stringType50
*/
public $addressProvince; // stringType50
/**
* @var stringType50
*/
public $addressCountryCode; // stringType50
}
class customerHistoryType {
/**
* @var dateTime
*/
public $customerSince; // dateTime
/**
* @var customerOrdersType
*/
public $customerOrders; // customerOrdersType
}
class customerOrdersType {
/**
* @var customerOrderType
*/
public $customerFirstOrder; // customerOrderType
/**
* @var customerOrderType
*/
public $customerLastOrder; // customerOrderType
/**
* @var totalOrderType
*/
public $customerOrdersLast7Days; // totalOrderType
/**
* @var totalOrderType
*/
public $customerOrdersLast30Days; // totalOrderType
/**
* @var totalOrderType
*/
public $customerOrdersLast180Days; // totalOrderType
/**
* @var totalOrderType
*/
public $customerOrdersEver; // totalOrderType
}
class customerOrderType {
/**
* @var dateTime
*/
public $orderDate; // dateTime
/**
* @var decimal
*/
public $orderTotalAmount; // decimal
/**
* @var decimal
*/
public $orderPaidAmount; // decimal
/**
* @var stringType10
*/
public $orderPaymentMethod; // stringType10
/**
* @var orderPaymentStatusType
*/
public $orderPaymentStatus; // orderPaymentStatusType
}
class totalOrderType {
/**
* @var int
*/
public $totalNoOfCustomerOrders; // int
/**
* @var decimal
*/
public $totalAmountOfCustomerOrders; // decimal
/**
* @var decimal
*/
public $totalAmountOfCustomerOrdersPaid; // decimal
}
class orderShipmentDetailType {
/**
* @var stringType255
*/
public $shipmentProvider; // stringType255
/**
* @var stringType255
*/
public $shipmentMethod; // stringType255
}
class orderAmountVatType {
/**
* @var orderVatRate
*/
public $orderVatRate; // orderVatRate
}
class orderVatRate {
/**
* @var decimal
*/
public $orderVatAmount; // decimal
/**
* @var decimal
*/
public $vatRate; // decimal
}
class orderItemType {
/**
* @var stringType50
*/
public $itemId; // stringType50
/**
* @var decimal
*/
public $itemQuantity; // decimal
/**
* @var stringType50
*/
public $itemUOM; // stringType50
/**
* @var stringType50
*/
public $itemArticleId; // stringType50
/**
* @var stringType255
*/
public $itemDescription; // stringType255
/**
* @var stringType255
*/
public $itemCategory; // stringType255
/**
* @var decimal
*/
public $itemUnitPrice; // decimal
/**
* @var currencyType
*/
public $itemCurrencyCode; // currencyType
/**
* @var decimal
*/
public $itemVatRate; // decimal
/**
* @var decimal
*/
public $itemExtendedAmount; // decimal
/**
* @var boolean
*/
public $itemAmountInclusiveVAT; // boolean
/**
* @var stringType255
*/
public $itemComments; // stringType255
}
class requestMerchantUrlType {
/**
* @var string
*/
public $merchantSuccessUrl; // string
/**
* @var string
*/
public $merchantErrorUrl; // string
/**
* @var string
*/
public $merchantPaymentMethodChangeUrl; // string
/**
* @var string
*/
public $merchantNotificationUrl; // string
}
class paymorrowResponse {
/**
* @var paymorrowOrderResponse
*/
public $paymorrowOrderResponse; // paymorrowOrderResponse
}
class responseErrorType {
/**
* @var responseErrorTypes
*/
public $responseErrorType; // responseErrorTypes
/**
* @var int
*/
public $responseErrorNo; // int
/**
* @var string
*/
public $responseErrorMessage; // string
}
class languageType {
}
class salutationTypes {
}
class customerTypes {
}
class currencyType {
}
class codeTypes {
}
class responseErrorTypes {
}
class orderPaymentStatusType {
}
class stringType10 {
}
class stringType20 {
}
class stringType50 {
}
class stringType255 {
}
class stringType320 {
}
/**
* PaymorrowService class
*
*
*
* @author {author}
* @copyright {copyright}
* @package {package}
*/
class PaymorrowService extends SoapClient {
private static $classmap = array(
'paymorrowOrderResponse' => 'paymorrowOrderResponse',
'responsePaymorrowOrder' => 'responsePaymorrowOrder',
'paymorrow' => 'paymorrow',
'paymorrowOrderRequestType' => 'paymorrowOrderRequestType',
'orderType' => 'orderType',
'orderItems' => 'orderItems',
'customerType' => 'customerType',
'customerPersonalDetailsType' => 'customerPersonalDetailsType',
'addressType' => 'addressType',
'customerHistoryType' => 'customerHistoryType',
'customerOrdersType' => 'customerOrdersType',
'customerOrderType' => 'customerOrderType',
'totalOrderType' => 'totalOrderType',
'orderShipmentDetailType' => 'orderShipmentDetailType',
'orderAmountVatType' => 'orderAmountVatType',
'orderVatRate' => 'orderVatRate',
'orderItemType' => 'orderItemType',
'requestMerchantUrlType' => 'requestMerchantUrlType',
'paymorrowResponse' => 'paymorrowResponse',
'responseErrorType' => 'responseErrorType',
'languageType' => 'languageType',
'salutationTypes' => 'salutationTypes',
'customerTypes' => 'customerTypes',
'currencyType' => 'currencyType',
'codeTypes' => 'codeTypes',
'responseErrorTypes' => 'responseErrorTypes',
'orderPaymentStatusType' => 'orderPaymentStatusType',
'stringType10' => 'stringType10',
'stringType20' => 'stringType20',
'stringType50' => 'stringType50',
'stringType255' => 'stringType255',
'stringType320' => 'stringType320',
);
public function PaymorrowService($wsdl = "PaymorrowService.wsdl", $options = array()) {
foreach(self::$classmap as $key => $value) {
if(!isset($options['classmap'][$key])) {
$options['classmap'][$key] = $value;
}
}
parent::__construct($wsdl, $options);
}
/**
* @param paymorrow $parameters
* @return paymorrowResponse
**/
public function paymorrow(paymorrow $parameters) {
$header = new SoapHeader('http://paymorrow.com/integration/paymorrowservice',
'signature',
'997f4684314a30db4c3849ab7b26b376');
$this->__setSoapHeaders($header);
return $this->__soapCall('paymorrow', array($parameters), array(
'uri' => 'http://paymorrow.com/integration/paymorrowservice',
'soapaction' => ''));
}
}
/* EOF */
+343
View File
@@ -0,0 +1,343 @@
<?php
/**
* this method will create the Node in DOM tree with the given nodeName and Parent Node.
**/
function appendIfNotNull($testField, $nodeName,$nodeData, $parentNode, $nodeType, $attInd, $namespaceInd=false) {
global $soapBody;
$newNode=null;
#$nodeName == 'vatRate' OR $nodeName == 'orderVatAmount' OR $nodeName == 'itemVatRate'
if(!empty($testField) || $testField === 0) {
if(!$attInd) {
if($namespaceInd) {
$newNode = $soapBody->createElementNS('http://paymorrow.com/integration/paymorrowservice',$nodeName);
//'http://paymorrow.com/integration/paymorrowservice',
} else {
$newNode = $soapBody->createElement($nodeName);
}
$parentNode->appendChild($newNode);
}
// For parent nodes, Parent nodes not need to have text node.
if($nodeType == "0") {
// return $newNode;
} else {
if($attInd) {
// If current Element needs to append as Attribute.
$attrNode = $soapBody->createAttribute($nodeName);
$parentNode->appendChild($attrNode);
$attrVal = $soapBody->createTextNode($nodeData);
$attrNode->appendChild($attrVal);
} else {
// add the text node to newly created node.
$newNode->appendChild($soapBody->createTextNode($nodeData));
}
}
}
// return newly created node.
return $newNode;
} // end appendIfNotNull
/**
* This function return the node data(Only data for first index)
**/
function getNodeValueByTagName($node, $nodeName) {
$tagList = $node->getElementsByTagName($nodeName);
if($tagList != null && $tagList->item(0)) {
return $tagList->item(0)->nodeValue;
}
} // end getNodeValueByTagName
/**
* return the Node value, if node is not null in DOM tree.
**/
function getIfNotNull($resp, $nodeName) {
$tagList = $resp->getElementsByTagName($nodeName);
if ($tagList && $tagList->item(0)) {
return $tagList->item(0)->nodeValue;
}
return null;
} // end getIfNotNull
/**
* This method takes the xml as String and then creates the PaymorrowOrderResponse from the
* XML String(A part of response which sent by Paymorrow Server ).
**/
function preparePaymorrowResponse($res) {
$paymorrowOrderResponse = new paymorrowOrderResponse();
try {
// Ignore the HTTP related items, only SOAP Part is required.
$pos = strpos($res, '<?xml');
$respSoap = substr($res,$pos,strlen($res));
// Create DOM Document out of SOAP Message.
$paymorrowResp = new DOMDocument();
$paymorrowResp->loadXML($respSoap);
//print $paymorrowResp->saveXML();
// Set all the elements from the XML to Object.
$request = new PaymorrowOrderRequestType(); //t.XMLtoObject("");
$request->requestMerchantId = getIfNotNull($paymorrowResp, "requestMerchantId");
$request->requestId = getIfNotNull($paymorrowResp, "requestId");
$request->requestTimestamp = getIfNotNull($paymorrowResp, "requestTimestamp");
$request->requestLanguageCode = getIfNotNull($paymorrowResp, "requestLanguageCode");
$requestMerchantUrls = new RequestMerchantUrlType();
$requestMerchantUrls->merchantSuccessUrl = getIfNotNull($paymorrowResp, "merchantSuccessUrl");
$requestMerchantUrls->merchantErrorUrl = getIfNotNull($paymorrowResp, "merchantErrorUrl");
$requestMerchantUrls->merchantPaymentMethodChangeUrl = getIfNotNull($paymorrowResp, "merchantPaymentMethodChangeUrl");
$requestMerchantUrls->merchantNotificationUrl = getIfNotNull($paymorrowResp, "merchantNotificationUrl");
$request->requestMerchantUrls = $requestMerchantUrls;
//Create Order Type
$order = new OrderType();
$order->orderId = getIfNotNull($paymorrowResp, "orderId");
$order->orderTimestamp = getIfNotNull($paymorrowResp, "orderTimestamp");
$order->orderShoppingDuration = getIfNotNull($paymorrowResp, "orderShoppingDuration");
$order->orderCheckoutDuration = getIfNotNull($paymorrowResp, "orderCheckoutDuration");
$order->orderSalesChannelId = getIfNotNull($paymorrowResp, "orderSalesChannelId");
//Create Customer for the order
$customer = new CustomerType();
$customer->customerId = getIfNotNull($paymorrowResp, "customerId");
$customer->customerGroupId = getIfNotNull($paymorrowResp, "customerGroupId");
$customer->customerPreferredLanguage = getIfNotNull($paymorrowResp, "customerPreferredLanguage");
$customer->customerIPAddress = getIfNotNull($paymorrowResp, "customerIPAddress");
$customer->orderCustomerType = getIfNotNull($paymorrowResp, "orderCustomerType");
// Set the customer personal details
$customerPersonalDetails = new CustomerPersonalDetailsType();
$customerPersonalDetails->customerSalutation = getIfNotNull($paymorrowResp, "customerSalutation");
$customerPersonalDetails->customerNamePrefix = getIfNotNull($paymorrowResp, "customerNamePrefix");
$customerPersonalDetails->customerGivenName = getIfNotNull($paymorrowResp, "customerGivenName");
$customerPersonalDetails->customerMiddleName = getIfNotNull($paymorrowResp, "customerMiddleName");
$customerPersonalDetails->customerSurname = getIfNotNull($paymorrowResp, "customerSurname");
$customerPersonalDetails->customerNameSuffix = getIfNotNull($paymorrowResp, "customerNameSuffix");
$customerPersonalDetails->customerOrganizationName = getIfNotNull($paymorrowResp, "customerOrganizationName");
$customerPersonalDetails->customerPhoneNo = getIfNotNull($paymorrowResp, "customerPhoneNo");
$customerPersonalDetails->customerFaxNo = getIfNotNull($paymorrowResp, "customerFaxNo");
$customerPersonalDetails->customerMobileNo = getIfNotNull($paymorrowResp, "customerMobileNo");
$customerPersonalDetails->customerEmail = getIfNotNull($paymorrowResp, "customerEmail");
$customerPersonalDetails->customerGender = getIfNotNull($paymorrowResp, "customerGender");
$customerPersonalDetails->customerDateOfBirth = getIfNotNull($paymorrowResp, "customerDateOfBirth");
$customerAddress = new AddressType();
$customerAddress->addressContact = getIfNotNull($paymorrowResp, "addressContact");
$customerAddress->addressOrganizationName = getIfNotNull($paymorrowResp, "addressOrganizationName");
$customerAddress->addressDepartment = getIfNotNull($paymorrowResp, "addressDepartment");
$customerAddress->addressBuilding = getIfNotNull($paymorrowResp, "addressBuilding");
$customerAddress->addressStreet = getIfNotNull($paymorrowResp, "addressStreet");
$customerAddress->addressHouseNo = getIfNotNull($paymorrowResp, "addressHouseNo");
$customerAddress->addressPostalCode = getIfNotNull($paymorrowResp, "addressPostalCode");
$customerAddress->addressLocality = getIfNotNull($paymorrowResp, "addressLocality");
$customerAddress->addressProvince = getIfNotNull($paymorrowResp, "addressProvince");
$customerAddress->addressCountryCode = getIfNotNull($paymorrowResp, "addressCountryCode");
$customer->customerAddress = $customerAddress;
//Set Customer History
// Set for first order
// Set for Last order
// Set orders for 7,30,180 and Forever days
$customerHistory = getIfNotNull($paymorrowResp, "customerHistory");
if($customerHistory != null) {
$customerLastOrder = new customerOrderType();
$customerFirstOrder = new customerOrderType();
$customerHistory = new customerHistoryType();
$customerHistory->customerSince = getIfNotNull($paymorrowResp, "customerSince");
$customerOrderType = getIfNotNull($paymorrowResp, "customerOrders");
if($customerOrderType != null ) {
$customerOrderType = new customerOrdersType();
$customerFirstOrder->orderDate = getIfNotNull($paymorrowResp, "orderDate");
$customerFirstOrder->orderTotalAmount = getIfNotNull($paymorrowResp, "orderTotalAmount");
$customerFirstOrder->orderPaidAmount = getIfNotNull($paymorrowResp, "orderPaidAmount");
$customerFirstOrder->orderPaymentMethod = getIfNotNull($paymorrowResp, "orderPaymentMethod");
$customerFirstOrder->orderPaymentStatus = getIfNotNull($paymorrowResp, "orderPaymentStatus");
$customerLastOrder->orderDate = getIfNotNull($paymorrowResp, "orderDate");
$customerLastOrder->orderTotalAmount = getIfNotNull($paymorrowResp, "orderTotalAmount");
$customerLastOrder->orderPaidAmount = getIfNotNull($paymorrowResp, "orderPaidAmount");
$customerLastOrder->orderPaymentMethod = getIfNotNull($paymorrowResp, "orderPaymentMethod");
$customerLastOrder->orderPaymentStatus = getIfNotNull($paymorrowResp, "orderPaymentStatus");
$last7Orders = $paymorrowResp->getElementsByTagName("customerOrdersLast7Days");
$customerOrdersLast7Days = new totalOrderType();
if((!empty($last7Orders)) && $last7Orders!=null && $last7Orders->length>0) {
$last7OrdersNode = $last7Orders->item(0);
$last7OrdersChilds = $last7OrdersNode->childNodes;
$customerOrdersLast7Days->totalNoOfCustomerOrders = $last7OrdersChilds->item(0)->nodeValue;
$customerOrdersLast7Days->totalAmountOfCustomerOrders = $last7OrdersChilds->item(1)->nodeValue;
$customerOrdersLast7Days->totalAmountOfCustomerOrdersPaid = $last7OrdersChilds->item(2)->nodeValue;
}
$last30Orders = $paymorrowResp->getElementsByTagName("customerOrdersLast30Days");
$customerOrdersLast30Days = new totalOrderType();
if((!empty($last30Orders)) && $last30Orders!=null && $last30Orders->length>0) {
$last30OrdersNode = $last30Orders->item(0);
$last30OrdersChilds = $last30OrdersNode->childNodes;
$customerOrdersLast30Days->totalNoOfCustomerOrders = $last30OrdersChilds->item(0)->nodeValue;
$customerOrdersLast30Days->totalAmountOfCustomerOrders = $last30OrdersChilds->item(1)->nodeValue;
$customerOrdersLast30Days->totalAmountOfCustomerOrdersPaid = $last30OrdersChilds->item(2)->nodeValue;
}
$last180Orders = $paymorrowResp->getElementsByTagName("customerOrdersLast180Days");
$customerOrdersLast180Days = new totalOrderType();
if((!empty($last180Orders)) && $last180Orders!=null && $last180Orders->length>0) {
$last180OrdersNode = $last180Orders->item(0);
$last180OrdersChilds = $last180OrdersNode->childNodes;
$customerOrdersLast180Days->totalNoOfCustomerOrders = $last180OrdersChilds->item(0)->nodeValue;
$customerOrdersLast180Days->totalAmountOfCustomerOrders = $last180OrdersChilds->item(1)->nodeValue;
$customerOrdersLast180Days->totalAmountOfCustomerOrdersPaid = $last180OrdersChilds->item(2)->nodeValue;
}
$ordersEver = $paymorrowResp->getElementsByTagName("customerOrdersEver");
$customerOrdersEver = new totalOrderType();
if((!empty($ordersEver)) && $ordersEver!=null && $ordersEver->length>0) {
$ordersNode = $ordersEver->item(0);
$ordersEverChilds = $ordersNode->childNodes;
$customerOrdersEver->totalNoOfCustomerOrders = $ordersEverChilds->item(0)->nodeValue;
$customerOrdersEver->totalAmountOfCustomerOrders = $ordersEverChilds->item(1)->nodeValue;
$customerOrdersEver->totalAmountOfCustomerOrdersPaid = $ordersEverChilds->item(2)->nodeValue;
}
$customerOrderType->customerFirstOrder = $customerFirstOrder;
$customerOrderType->customerLastOrder = $customerLastOrder;
$customerOrderType->customerOrdersLast7Days = $customerOrdersLast7Days;
$customerOrderType->customerOrdersLast30Days = $customerOrdersLast30Days;
$customerOrderType->customerOrdersLast180Days = $customerOrdersLast180Days;
$customerOrderType->customerOrdersEver = $customerOrdersEver;
$customerHistory->customerOrders = $customerOrderType;
}
}
$customer->customerHistory = $customerHistory;
// History Ends
//Set shipment address
$addressShipmentType = new AddressType();
$addressShipmentType->addressContact = getIfNotNull($paymorrowResp, "addressContact");
$addressShipmentType->addressOrganizationName = getIfNotNull($paymorrowResp, "addressOrganizationName");
$addressShipmentType->addressDepartment = getIfNotNull($paymorrowResp, "addressDepartment");
$addressShipmentType->addressBuilding = getIfNotNull($paymorrowResp, "addressBuilding");
$addressShipmentType->addressStreet = getIfNotNull($paymorrowResp, "addressStreet");
$addressShipmentType->addressHouseNo = getIfNotNull($paymorrowResp, "addressHouseNo");
$addressShipmentType->addressPostalCode = getIfNotNull($paymorrowResp, "addressPostalCode");
$addressShipmentType->addressLocality = getIfNotNull($paymorrowResp, "addressLocality");
$addressShipmentType->addressProvince = getIfNotNull($paymorrowResp, "addressProvince");
$addressShipmentType->addressCountryCode = getIfNotNull($paymorrowResp, "addressCountryCode");
$order->orderShippingAddress = $addressShipmentType;
$orderShipmentDetails = new OrderShipmentDetailType();
$orderShipmentDetails->shipmentMethod = getIfNotNull($paymorrowResp, "shipmentMethod");
$orderShipmentDetails->shipmentProvider = getIfNotNull($paymorrowResp, "shipmentProvider");
$order->orderShipmentDetails = $orderShipmentDetails;
$order->orderExpectedDeliveryDate = getIfNotNull($paymorrowResp, "orderExpectedDeliveryDate");
$order->orderAmountNet = getIfNotNull($paymorrowResp, "orderAmountNet");
$orderAmountVAT = new orderAmountVatType();
$domNodeList = $paymorrowResp->getElementsByTagName('orderVatRate');
// Set VAT for the order
$orderAmountVATArray = new ArrayObject();
$i= 0;
for($i;$i<$domNodeList->length; $i++) {
$vatNode = $domNodeList->item($i);
$vatAmount = $vatNode->nodeValue;
foreach ($vatNode->attributes as $attrNode) {
$vatRate=$attrNode->value;
}
$orderVatRateType = new orderVatRate();
$orderVatRateType->orderVatAmount = $vatAmount;
$orderVatRateType->orderVatRate = $vatRate;
//put in Array
$orderAmountVATArray[$i] = $orderVatRateType;
}
$orderAmountVAT->orderVatRate = $orderAmountVATArray;
$order->orderAmountVAT = $orderAmountVAT;
$order->orderAmountVATTotal = getIfNotNull($paymorrowResp, "orderAmountVATTotal");
$order->orderAmountGross = getIfNotNull($paymorrowResp, "orderAmountGross");
$order->orderCurrencyCode = getIfNotNull($paymorrowResp, "orderCurrencyCode");
//loop
$orderItemsList = $paymorrowResp->getElementsByTagName('orderItem');
// Set order items
$orderItemsArray = new ArrayObject();
$i= 0;
for($i;$i<$orderItemsList->length; $i++) {
$nodeOrderItem = $orderItemsList->item($i);
$orderItems = new OrderItemType();
$orderItems->itemId = getNodeValueByTagName($nodeOrderItem,'itemId');
$orderItems->itemQuantity = getNodeValueByTagName($nodeOrderItem,'itemQuantity');
$orderItems->itemUOM = getNodeValueByTagName($nodeOrderItem,'ItemUOM');
$orderItems->itemArticleId = getNodeValueByTagName($nodeOrderItem,'itemArticleId');
$orderItems->itemDescription = getNodeValueByTagName($nodeOrderItem,'itemDescription');
$orderItems->itemCategory = getNodeValueByTagName($nodeOrderItem,'itemCategory');
$orderItems->itemUnitPrice = getNodeValueByTagName($nodeOrderItem,'itemUnitPrice');
$orderItems->itemCurrencyCode = getNodeValueByTagName($nodeOrderItem,'itemCurrencyCode');
$orderItems->itemVatRate = getNodeValueByTagName($nodeOrderItem,'itemVatRate');
$orderItems->itemExtendedAmount = getNodeValueByTagName($nodeOrderItem,'itemExtendedAmount');
$orderItems->itemAmountInclusiveVAT = getNodeValueByTagName($nodeOrderItem,'itemAmountInclusiveVAT');
$orderItems->itemComments = getNodeValueByTagName($nodeOrderItem,'itemComments');
$orderItemsArray[$i] = $orderItems;
}
$order->orderItems = $orderItemsArray;
$customer->customerPersonalDetails = $customerPersonalDetails;
$order->orderCustomer = $customer;
$request->order = $order;
$responsePaymorrowOrder = new responsePaymorrowOrder();
$responsePaymorrowOrder->paymorrowOrderRequestModified = getIfNotNull($paymorrowResp, "paymorrowOrderRequestModified");
$responsePaymorrowOrder->paymorrowOrderRequest = $request;
$paymorrowOrderResponse->responsePaymorrowOrder = $responsePaymorrowOrder;
$paymorrowOrderResponse->responseTimestamp = getIfNotNull($paymorrowResp, "responseTimestamp");
$paymorrowOrderResponse->responseResultCode = getIfNotNull($paymorrowResp, "responseResultCode");
$paymorrowOrderResponse->responseResultURL = getIfNotNull($paymorrowResp, "responseResultURL");
// Set response Error (if any)
$responseError = getIfNotNull($paymorrowResp, "responseError");
if(!empty ($responseError)) {
$respError = new responseErrorType();
$respError->responseErrorType = getIfNotNull($paymorrowResp, "responseErrorType");
$respError->responseErrorNo = getIfNotNull($paymorrowResp, "responseErrorNo");
$respError->responseErrorMessage = getIfNotNull($paymorrowResp, "responseErrorMessage");
$paymorrowOrderResponse->responseError = $respError;
}
} catch (Exception $e) {
$e->getTraceAsString();
$paymorrowOrderResponse = null;
}
return $paymorrowOrderResponse;
} // end preparePaymorrowResponse
/* EOF */
+62
View File
@@ -0,0 +1,62 @@
<?php
function sendHTTP($reqBody, $host, $port, $wsPath) {
$res = "";
flush();
try {
//Paymorrow Server URL
if (!$host) {
// FOR DEV
$host = "test.paymorrow.net";
}
if (!$port) {
$port = 443;
}
if (!$wsPath) {
// DEFERRED
//$wsPath = '/perth/services/PaymorrowDeferredConfirmationService.Paymorrow';
// DIRECT / IS THE DEFAULT
$wsPath = "/perth/services/PaymorrowService.Paymorrow";
}
// HTTP Protocol settings for sending request
$req = "POST ".$wsPath." HTTP/1.1\r\n"
."Host: $host\r\n"
."Content-Type: text/xml\r\n"
."Content-Length: ".strlen($reqBody)."\r\n"
."Connection: close\r\n\r\n"
.$reqBody;
flush();
if (!($fp = fsockopen("ssl://".$host, $port, $errNo, $errStr))) {
//echo "Cannot open:".$errStr;
flush();
return false;
}
//data placed on Stream
fwrite($fp, $req, strlen($req));
//Read data from Stream
while($data = fread($fp, 32768)) {
$res.=$data;
}
fclose($fp) ;
flush();
} catch (Exception $e) {
//echo $e->getMessage();
}
flush();
return $res;
}
/* EOF */
+263
View File
@@ -0,0 +1,263 @@
<?php
$soapBody = new DOMDocument('1.0', 'UTF-8');
//PHP proxy classes
require_once 'PaymorrowServiceClasses.inc.php';
//require for send the HTTP request to Server
require_once 'communication.php';
// Util Functions for handling Paymorrow request/response.
require_once 'UtilFunctions.php';
// Functions for final normalize of xml string (remove invalid characters)
require_once 'NormalizeXML.php';
/**
* This method takes the Paymorrow Order Request object and Authorization Key
* and sends it to Paymorrow Server as soap message.
* URL and Protocol needs to adjust according to envoirnment.
**/
function sendRequestToPaymorrow($paymorrowOrderRequest, $authorizationKey) {
global $soapBody;
$soapBodyEle = $soapBody->createElement("S:Body");
$soapBody->appendChild($soapBodyEle);
$paymorrowEle = $soapBody->createElement("paymorrow");
$soapBodyEle->appendChild($paymorrowEle);
$orderRequestEle = appendIfNotNull("notempty",'paymorrowOrderRequest',null,$paymorrowEle, "1",false);
$merchantIdEle = appendIfNotNull($paymorrowOrderRequest->requestMerchantId, "requestMerchantId", $paymorrowOrderRequest->requestMerchantId,$orderRequestEle, "1", false);
$requestIdEle = appendIfNotNull($paymorrowOrderRequest->requestId, "requestId", $paymorrowOrderRequest->requestId,$orderRequestEle, "1", false);
$requestTimestampEle = appendIfNotNull($paymorrowOrderRequest->requestTimestamp,"requestTimestamp",$paymorrowOrderRequest->requestTimestamp,$orderRequestEle, "1", false);
$requestLanguageCodeEle = appendIfNotNull($paymorrowOrderRequest->requestLanguageCode,"requestLanguageCode",$paymorrowOrderRequest->requestLanguageCode,$orderRequestEle, "1", false);
$orderEle = appendIfNotNull($paymorrowOrderRequest->order,"order",$paymorrowOrderRequest->order,$orderRequestEle, "0", false);
$orderIdEle = appendIfNotNull($paymorrowOrderRequest->order->orderId,"orderId",$paymorrowOrderRequest->order->orderId,$orderEle, "1", false);
$orderTimestampEle = appendIfNotNull($paymorrowOrderRequest->order->orderTimestamp,"orderTimestamp",$paymorrowOrderRequest->order->orderTimestamp,$orderEle, "1", false);
$orderShoppingDurationEle = appendIfNotNull($paymorrowOrderRequest->order->orderShoppingDuration,"orderShoppingDuration",$paymorrowOrderRequest->order->orderShoppingDuration,$orderEle, "1", false);
$orderCheckoutDurationEle = appendIfNotNull($paymorrowOrderRequest->order->orderCheckoutDuration,"orderCheckoutDuration",$paymorrowOrderRequest->order->orderCheckoutDuration,$orderEle, "1", false);
$orderCustomerEle = appendIfNotNull($paymorrowOrderRequest->order->orderCustomer,"orderCustomer",$paymorrowOrderRequest->order->orderCustomer,$orderEle, "0", false);
$customerTypeEle = appendIfNotNull($paymorrowOrderRequest->order->orderCustomer->orderCustomerType,"orderCustomerType",$paymorrowOrderRequest->order->orderCustomer->orderCustomerType,$orderCustomerEle, "1", true);
$orderCustomerIdEle = appendIfNotNull($paymorrowOrderRequest->order->orderCustomer->customerId,"customerId",$paymorrowOrderRequest->order->orderCustomer->customerId,$orderCustomerEle, "1", false);
$customerGroupIdEle = appendIfNotNull($paymorrowOrderRequest->order->orderCustomer->customerGroupId,"customerGroupId",$paymorrowOrderRequest->order->orderCustomer->customerGroupId,$orderCustomerEle, "1", false);
$customerPreferredLanguageEle = appendIfNotNull($paymorrowOrderRequest->order->orderCustomer->customerPreferredLanguage,"customerPreferredLanguage",$paymorrowOrderRequest->order->orderCustomer->customerPreferredLanguage,$orderCustomerEle, "1", false);
$customerIPAddressEle = appendIfNotNull($paymorrowOrderRequest->order->orderCustomer->customerIPAddress,"customerIPAddress",$paymorrowOrderRequest->order->orderCustomer->customerIPAddress,$orderCustomerEle, "1", false);
$customerPersonalDetails = $paymorrowOrderRequest->order->orderCustomer->customerPersonalDetails;
$customerPersonalDetailsEle = appendIfNotNull($customerPersonalDetails,"customerPersonalDetails",$customerPersonalDetails,$orderCustomerEle, "0", false);
appendIfNotNull($customerPersonalDetails->customerSalutation,"customerSalutation",$customerPersonalDetails->customerSalutation,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerNamePrefix,"customerNamePrefix",$customerPersonalDetails->customerNamePrefix,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerGivenName,"customerGivenName",$customerPersonalDetails->customerGivenName,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerMiddleName,"customerMiddleName",$customerPersonalDetails->customerMiddleName,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerSurname,"customerSurname",$customerPersonalDetails->customerSurname,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerNameSuffix,"customerNameSuffix",$customerPersonalDetails->customerNameSuffix,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerOrganizationName,"customerOrganizationName",$customerPersonalDetails->customerOrganizationName,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerPhoneNo,"customerPhoneNo",$customerPersonalDetails->customerPhoneNo,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerFaxNo,"customerFaxNo",$customerPersonalDetails->customerFaxNo,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerMobileNo,"customerMobileNo",$customerPersonalDetails->customerMobileNo,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerEmail,"customerEmail",$customerPersonalDetails->customerEmail,$customerPersonalDetailsEle, "1", false);
appendIfNotNull($customerPersonalDetails->customerGender,"customerGender",$customerPersonalDetails->customerGender,$customerPersonalDetailsEle, "1",false);
appendIfNotNull($customerPersonalDetails->customerDateOfBirth,"customerDateOfBirth",$customerPersonalDetails->customerDateOfBirth,$customerPersonalDetailsEle, "1", false);
$orderCustomerAddress = $paymorrowOrderRequest->order->orderCustomer->customerAddress;
$orderCustomerAddressEle = appendIfNotNull($orderCustomerAddress,"customerAddress",$orderCustomerAddress,$orderCustomerEle, "0", false);
appendIfNotNull($orderCustomerAddress->addressContact,"addressContact",$orderCustomerAddress->addressContact,$orderCustomerAddressEle, "1", false);
appendIfNotNull($orderCustomerAddress->addressOrganizationName,"addressOrganizationName",$orderCustomerAddress->addressOrganizationName,$orderCustomerAddressEle, "1", false);
appendIfNotNull($orderCustomerAddress->addressDepartment,"addressDepartment",$orderCustomerAddress->addressDepartment,$orderCustomerAddressEle, "1", false);
appendIfNotNull($orderCustomerAddress->addressBuilding,"addressBuilding",$orderCustomerAddress->addressBuilding,$orderCustomerAddressEle, "1", false);
appendIfNotNull($orderCustomerAddress->addressStreet,"addressStreet",$orderCustomerAddress->addressStreet,$orderCustomerAddressEle, "1", false);
appendIfNotNull($orderCustomerAddress->addressHouseNo,"addressHouseNo",$orderCustomerAddress->addressHouseNo,$orderCustomerAddressEle, "1", false);
appendIfNotNull($orderCustomerAddress->addressPostalCode,"addressPostalCode",$orderCustomerAddress->addressPostalCode,$orderCustomerAddressEle, "1", false);
appendIfNotNull($orderCustomerAddress->addressLocality,"addressLocality",$orderCustomerAddress->addressLocality,$orderCustomerAddressEle, "1", false);
appendIfNotNull($orderCustomerAddress->addressProvince,"addressProvince",$orderCustomerAddress->addressProvince,$orderCustomerAddressEle, "1", false);
appendIfNotNull($orderCustomerAddress->addressCountryCode,"addressCountryCode",$orderCustomerAddress->addressCountryCode,$orderCustomerAddressEle, "1", false);
//Set Customer History
$customerHistory = $paymorrowOrderRequest->order->orderCustomer->customerHistory;
if($customerHistory != null) {
$customerHistoryEle = appendIfNotNull($customerHistory,"customerHistory",$customerHistory,$orderCustomerEle, "0", false);
appendIfNotNull($customerHistory->customerSince,"customerSince",$customerHistory->customerSince,$customerHistoryEle, "1", false);
$customerOrderType =$customerHistory->customerOrders;
if($customerOrderType != null ) {
$customerOrderTypeEle = appendIfNotNull($customerOrderType,"customerOrders",$customerOrderType,$customerHistoryEle, "0", false);
$customerFirstOrder = $customerOrderType->customerFirstOrder;
if($customerFirstOrder != null) {
$customerFirstOrderEle = appendIfNotNull($customerFirstOrder,"customerFirstOrder",$customerFirstOrder,$customerOrderTypeEle, "0", false);
appendIfNotNull($customerFirstOrder->orderDate,"orderDate",$customerFirstOrder->orderDate,$customerFirstOrderEle, "1", false);
appendIfNotNull($customerFirstOrder->orderTotalAmount,"orderTotalAmount",$customerFirstOrder->orderTotalAmount,$customerFirstOrderEle, "1", false);
appendIfNotNull($customerFirstOrder->orderPaidAmount,"orderPaidAmount",$customerFirstOrder->orderPaidAmount,$customerFirstOrderEle, "1", false);
appendIfNotNull($customerFirstOrder->orderPaymentMethod,"orderPaymentMethod",$customerFirstOrder->orderPaymentMethod,$customerFirstOrderEle, "1", false);
appendIfNotNull($customerFirstOrder->orderPaymentStatus,"orderPaymentStatus",$customerFirstOrder->orderPaymentStatus,$customerFirstOrderEle, "1", false);
}
$customerLastOrder = $customerOrderType->customerLastOrder;
if($customerLastOrder != null) {
$customerLastOrderEle = appendIfNotNull($customerLastOrder,"customerLastOrder",$customerLastOrder,$customerOrderTypeEle, "0", false);
appendIfNotNull($customerLastOrder->orderDate,"orderDate",$customerLastOrder->orderDate,$customerLastOrderEle, "1", false);
appendIfNotNull($customerLastOrder->orderTotalAmount,"orderTotalAmount",$customerLastOrder->orderTotalAmount,$customerLastOrderEle, "1", false);
appendIfNotNull($customerLastOrder->orderPaidAmount,"orderPaidAmount",$customerLastOrder->orderPaidAmount,$customerLastOrderEle, "1", false);
appendIfNotNull($customerLastOrder->orderPaymentMethod,"orderPaymentMethod",$customerLastOrder->orderPaymentMethod,$customerLastOrderEle, "1", false);
appendIfNotNull($customerLastOrder->orderPaymentStatus,"orderPaymentStatus",$customerLastOrder->orderPaymentStatus,$customerLastOrderEle, "1", false);
}
$customerOrdersLast7Days = $customerOrderType->customerOrdersLast7Days;
if($customerOrdersLast7Days != null) {
$customerOrdersLast7DaysEle = appendIfNotNull($customerOrdersLast7Days,"customerOrdersLast7Days",$customerOrdersLast7Days,$customerOrderTypeEle, "0", false);
appendIfNotNull($customerOrdersLast7Days->totalNoOfCustomerOrders,"totalNoOfCustomerOrders",$customerOrdersLast7Days->totalNoOfCustomerOrders,$customerOrdersLast7DaysEle, "1", false);
appendIfNotNull($customerOrdersLast7Days->totalAmountOfCustomerOrders,"totalAmountOfCustomerOrders",$customerOrdersLast7Days->totalAmountOfCustomerOrders,$customerOrdersLast7DaysEle, "1", false);
appendIfNotNull($customerOrdersLast7Days->totalAmountOfCustomerOrdersPaid,"totalAmountOfCustomerOrdersPaid",$customerOrdersLast7Days->totalAmountOfCustomerOrdersPaid,$customerOrdersLast7DaysEle, "1", false);
}
$customerOrdersLast30Days = $customerOrderType->customerOrdersLast30Days;
if($customerOrdersLast30Days != null) {
$customerOrdersLast30DaysEle = appendIfNotNull($customerOrdersLast30Days,"customerOrdersLast30Days",$customerOrdersLast30Days,$customerOrderTypeEle, "0", false);
appendIfNotNull($customerOrdersLast30Days->totalNoOfCustomerOrders,"totalNoOfCustomerOrders",$customerOrdersLast30Days->totalNoOfCustomerOrders,$customerOrdersLast30DaysEle, "1", false);
appendIfNotNull($customerOrdersLast30Days->totalAmountOfCustomerOrders,"totalAmountOfCustomerOrders",$customerOrdersLast30Days->totalAmountOfCustomerOrders,$customerOrdersLast30DaysEle, "1", false);
appendIfNotNull($customerOrdersLast30Days->totalAmountOfCustomerOrdersPaid,"totalAmountOfCustomerOrdersPaid",$customerOrdersLast30Days->totalAmountOfCustomerOrdersPaid,$customerOrdersLast30DaysEle, "1", false);
}
$customerOrdersLast180Days = $customerOrderType->customerOrdersLast180Days;
if($customerOrdersLast180Days != null) {
$customerOrdersLast180DaysEle = appendIfNotNull($customerOrdersLast180Days,"customerOrdersLast180Days",$customerOrdersLast180Days,$customerOrderTypeEle, "0", false);
appendIfNotNull($customerOrdersLast180Days->totalNoOfCustomerOrders,"totalNoOfCustomerOrders",$customerOrdersLast180Days->totalNoOfCustomerOrders,$customerOrdersLast180DaysEle, "1", false);
appendIfNotNull($customerOrdersLast180Days->totalAmountOfCustomerOrders,"totalAmountOfCustomerOrders",$customerOrdersLast180Days->totalAmountOfCustomerOrders,$customerOrdersLast180DaysEle, "1", false);
appendIfNotNull($customerOrdersLast180Days->totalAmountOfCustomerOrdersPaid,"totalAmountOfCustomerOrdersPaid",$customerOrdersLast180Days->totalAmountOfCustomerOrdersPaid,$customerOrdersLast180DaysEle, "1", false);
}
$customerOrdersForEver = $customerOrderType->customerOrdersEver;
if($customerOrdersForEver != null) {
$customerOrdersForEverEle = appendIfNotNull($customerOrdersForEver,"customerOrdersEver",$customerOrdersForEver,$customerOrderTypeEle, "0", false);
appendIfNotNull($customerOrdersForEver->totalNoOfCustomerOrders,"totalNoOfCustomerOrders",$customerOrdersForEver->totalNoOfCustomerOrders,$customerOrdersForEverEle, "1", false);
appendIfNotNull($customerOrdersForEver->totalAmountOfCustomerOrders,"totalAmountOfCustomerOrders",$customerOrdersForEver->totalAmountOfCustomerOrders,$customerOrdersForEverEle, "1", false);
appendIfNotNull($customerOrdersForEver->totalAmountOfCustomerOrdersPaid,"totalAmountOfCustomerOrdersPaid",$customerOrdersForEver->totalAmountOfCustomerOrdersPaid,$customerOrdersForEverEle, "1", false);
}
}
}
// History Ends
$addressShipmentType = $paymorrowOrderRequest->order->orderShippingAddress;
$addressShipmentTypeEle = appendIfNotNull($addressShipmentType,"orderShippingAddress",$addressShipmentType,$orderEle, "0",false);
appendIfNotNull($addressShipmentType->addressContact,"addressContact",$addressShipmentType->addressContact,$addressShipmentTypeEle, "1", false);
appendIfNotNull($addressShipmentType->addressOrganizationName,"addressOrganizationName",$addressShipmentType->addressOrganizationName,$addressShipmentTypeEle, "1", false);
appendIfNotNull($addressShipmentType->addressDepartment,"addressDepartment",$addressShipmentType->addressDepartment,$addressShipmentTypeEle, "1", false);
appendIfNotNull($addressShipmentType->addressBuilding,"addressBuilding",$addressShipmentType->addressBuilding,$addressShipmentTypeEle, "1", false);
appendIfNotNull($addressShipmentType->addressStreet,"addressStreet",$addressShipmentType->addressStreet,$addressShipmentTypeEle, "1", false);
appendIfNotNull($addressShipmentType->addressHouseNo,"addressHouseNo",$addressShipmentType->addressHouseNo,$addressShipmentTypeEle, "1", false);
appendIfNotNull($addressShipmentType->addressPostalCode,"addressPostalCode",$addressShipmentType->addressPostalCode,$addressShipmentTypeEle, "1", false);
appendIfNotNull($addressShipmentType->addressLocality,"addressLocality",$addressShipmentType->addressLocality,$addressShipmentTypeEle, "1", false);
appendIfNotNull($addressShipmentType->addressProvince,"addressProvince",$addressShipmentType->addressProvince,$addressShipmentTypeEle, "1", false);
appendIfNotNull($addressShipmentType->addressCountryCode,"addressCountryCode",$addressShipmentType->addressCountryCode,$addressShipmentTypeEle, "1", false);
$orderShipmentDetails = $paymorrowOrderRequest->order->orderShipmentDetails;
$orderShipmentDetailsEle = appendIfNotNull($orderShipmentDetails,"orderShipmentDetails",$orderShipmentDetails,$orderEle, "0", false);
appendIfNotNull($orderShipmentDetails->shipmentProvider,"shipmentProvider",$orderShipmentDetails->shipmentProvider,$orderShipmentDetailsEle, "1", false);
appendIfNotNull($orderShipmentDetails->shipmentMethod,"shipmentMethod",$orderShipmentDetails->shipmentMethod,$orderShipmentDetailsEle, "1", false);
$order = $paymorrowOrderRequest->order;
appendIfNotNull($order->orderExpectedDeliveryDate,"orderExpectedDeliveryDate",$order->orderExpectedDeliveryDate,$orderEle, "1", false);
appendIfNotNull($order->orderAmountNet,"orderAmountNet",$order->orderAmountNet,$orderEle, "1", false);
$orderAmountVAT = $order->orderAmountVAT;
$orderAmountVATEle = appendIfNotNull($orderAmountVAT,"orderAmountVAT",$orderAmountVAT,$orderEle, "0", false);
$orderVATAmountsArray = $orderAmountVAT->orderVatRate;
// Loop and Get data
foreach ($orderVATAmountsArray as $orderVatRates) {
$orderVatRatesEle = appendIfNotNull($orderVatRates,"orderVatRate",$orderVatRates,$orderAmountVATEle, "0", false);
appendIfNotNull($orderVatRates->vatRate,"vatRate",$orderVatRates->vatRate,$orderVatRatesEle, "1", true);
appendIfNotNull($orderVatRates->orderVatAmount,"orderVatAmount",$orderVatRates->orderVatAmount,$orderVatRatesEle, "1", false);
}
appendIfNotNull($order->orderAmountVATTotal,"orderAmountVATTotal",$order->orderAmountVATTotal,$orderEle, "1", false);
appendIfNotNull($order->orderAmountGross,"orderAmountGross",$order->orderAmountGross,$orderEle, "1", false);
appendIfNotNull($order->orderCurrencyCode,"orderCurrencyCode",$order->orderCurrencyCode,$orderEle, "1", false);
$orderItemsArray = $order->orderItems;
$orderItemsEle = appendIfNotNull($orderItemsArray,"orderItems",$orderItemsArray,$orderEle, "0", false);
foreach ($orderItemsArray as $orderItem) {
$orderItemEle = appendIfNotNull($orderItem,"orderItem",$orderItem,$orderItemsEle, "0", false);
appendIfNotNull($orderItem->itemId,"itemId",$orderItem->itemId,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemQuantity,"itemQuantity",$orderItem->itemQuantity,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemUOM,"itemUOM",$orderItem->itemUOM,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemArticleId,"itemArticleId",$orderItem->itemArticleId,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemDescription,"itemDescription",$orderItem->itemDescription,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemCategory,"itemCategory",$orderItem->itemCategory,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemUnitPrice,"itemUnitPrice",$orderItem->itemUnitPrice,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemCurrencyCode,"itemCurrencyCode",$orderItem->itemCurrencyCode,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemVatRate,"itemVatRate",$orderItem->itemVatRate,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemExtendedAmount,"itemExtendedAmount",$orderItem->itemExtendedAmount,$orderItemEle, "1", false);
$amtVatInc = "" ;
if($orderItem->itemAmountInclusiveVAT == 1){
$amtVatInc = "true";
} else {
$amtVatInc = "false";
}
appendIfNotNull($orderItem->itemAmountInclusiveVAT,"itemAmountInclusiveVAT",$amtVatInc,$orderItemEle, "1", false);
appendIfNotNull($orderItem->itemComments,"itemComments",$orderItem->itemComments,$orderItemEle, "1", false);
}
$requestMerchantUrls = $paymorrowOrderRequest->requestMerchantUrls;
$requestMerchantUrlsEle = appendIfNotNull($requestMerchantUrls,"requestMerchantUrls",$requestMerchantUrls,$orderRequestEle, "0", false);
appendIfNotNull($requestMerchantUrls->merchantSuccessUrl,"merchantSuccessUrl",$requestMerchantUrls->merchantSuccessUrl,$requestMerchantUrlsEle, "1", false);
appendIfNotNull($requestMerchantUrls->merchantErrorUrl,"merchantErrorUrl",$requestMerchantUrls->merchantErrorUrl,$requestMerchantUrlsEle, "1", false);
appendIfNotNull($requestMerchantUrls->merchantPaymentMethodChangeUrl,"merchantPaymentMethodChangeUrl",$requestMerchantUrls->merchantPaymentMethodChangeUrl,$requestMerchantUrlsEle, "1", false);
appendIfNotNull($requestMerchantUrls->merchantNotificationUrl,"merchantNotificationUrl",$requestMerchantUrls->merchantNotificationUrl,$requestMerchantUrlsEle, "1", false);
//--------------------
// Make SOAP Message
// invoke web service
//--------------------
$soapEnvStart = "<?xml version=\"1.0\"?><S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">";
$soapEnvEnd = "</S:Envelope>";
$soapBody->normalize();
$body = $soapBody->saveXML();
$body = $body."";
$body = substr($body, strpos($body, '"?>')+3);
$body = str_replace("<paymorrowOrderRequest>", "<ns2:paymorrowOrderRequest>", $body);
$body = str_replace("</paymorrowOrderRequest>", "</ns2:paymorrowOrderRequest>", $body);
$body = str_replace("<paymorrow>", "<ns2:paymorrow xmlns:ns2=\"http://paymorrow.com/integration/paymorrowservice\">", $body);
$body = str_replace("</paymorrow>", "</ns2:paymorrow>", $body);
$pos1 = strpos($body, '<ns2:paymorrow');
$tempreqBody = substr($body, $pos1);
$pos1 = strpos($tempreqBody, '</ns2:paymorrow>');
$tempreqBody = substr($tempreqBody, 0, $pos1 + strlen('</ns2:paymorrow>'));
// removes invalid characters from xml
$tempreqBody = normalizeXML($tempreqBody);
$messageSignature = sha1($tempreqBody . $authorizationKey); // create Data signature for soap Header.
$soapHeader = "<S:Header><S:messageSignature S:mustUnderstand=\"0\">".$messageSignature."</S:messageSignature></S:Header>";
// Complete request
$reqBody = $soapEnvStart . $soapHeader . $body . $soapEnvEnd;
$res = sendHTTP($reqBody);
if($res == "") {
return null;
}
return preparePaymorrowResponse($res);
}
/* EOF */