I need to create payment module for opencart. The problem how to build xml output in php to post it to remote leasing server url: https://ecredit.leasing.com/eshop_test/UBLOnline.aspx?eshopdata=?
using post method. I trying to build this xml:
<?xml version="1.0" encoding="UTF-8"?>
<ContractRequest xmlns="http://e-credit.ubl.lt/eshop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://e-credit.ubl.lt/eshop http://e-credit.leasing.com/eshop/contractrequest.xsd">
<SaleLogin>test</SaleLogin>
<SaleConditionID>111</SaleConditionID>
<Person>
<FirstName>John</FirstName>
<LastName>Jones</LastName>
</Person>
<Communication>
<StreetOrVillage>First</StreetOrVillage>
<City>New York</City>
<PostCode>21212</PostCode>
<Phone>+100000000</Phone>
<Email>john@mymail.com</Email>
</Communication>
<ContractDetails>
<CreditAmount>617.60</CreditAmount>
<CreditCurrency>USD</CreditCurrency>
</ContractDetails>
<OrderedItemsDetail>
<Item>
<Name>1 x HP 250 G5 UMA Celeron N3060 15.6 HD SVA, 1 x HP 15-r101na 15.6 HD Brightview flat (B), </Name>
<Amount>2pcs.</Amount>
<Price>617.60</Price>
<Currency>USD</Currency>
</Item>
</OrderedItemsDetail>
</ContractRequest>
I have tried create xml like this:
$XmlString = '<?xml version="1.0" encoding="UTF-8" ?>';
$XmlString .= '<ContractRequest
xmlns="http://e-credit.ubl.lt/eshop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://e-credit.ubl.com/eshop http://e-credit.leasing.com/eshop/contractrequest.xsd">';
$XmlString .= '<SaleLogin>' . $data['SaleLogin'] . '</SaleLogin>';
$XmlString .= '<SaleConditionID>' . $data['SaleConditionID'] . '</SaleConditionID>';
$XmlString .= '<Person>';
$XmlString .= '<FirstName>' . $data['first_name'] . '</FirstName>';
$XmlString .= '<LastName>' . $data['last_name'] . '</LastName>';
$XmlString .= '</Person>';
$XmlString .= '<Communication>';
$XmlString .= '<StreetOrVillage>' . $data['street'] . '</StreetOrVillage>';
$XmlString .= '<City>' . $data['city'] . '</City>';
$XmlString .= '<PostCode>' . $data['postcode'] . '</PostCode>';
$XmlString .= '<Phone>' . $data['telephone'] . '</Phone>';
$XmlString .= '<Email>' . $data['email'] . '</Email>';
$XmlString .= '</Communication>';
$XmlString .= '<ContractDetails>';
$XmlString .= '<CreditAmount>' . $data['amount'] . '</CreditAmount>';
$XmlString .= '<CreditCurrency>' . $data['currency'] . '</CreditCurrency>';
$XmlString .= '</ContractDetails>';
$XmlString .= '<OrderedItemsDetail>';
$XmlString .= '<Item>';
$XmlString .= '<Name>' . $data['description'] . '</Name>';
$XmlString .= '<Amount>' . $data['products_amount'] . '</Amount>';
$XmlString .= '<Price>' . $data['amount'] . '</Price>';
$XmlString .= '<Currency>' .$data['currency'] . '</Currency>';
$XmlString .= '</Item>';
$XmlString .= '</OrderedItemsDetail>';
$XmlString .= '</ContractRequest>';
and after :
$url = https://ecredit.leasing.com/eshop_test/UBLOnline.aspx?eshopdata=?;
$header = array();
$header[] = 'Content-Type: text/xml';
$header[] = 'Content-Length: ' . strlen($XmlString);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, &url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $XmlString);
///////////////////////
$response = curl_exec($ch);
curl_close($ch);
$XmlString = simplexml_load_string($response);
//create object to use as json
$json = array();
$json['redirect'] = $this->url->link('checkout/success', '', true);
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
but this does not work... sad.... what i miss?
how to create properly xml request and post it to url?