Skip to content

Instantly share code, notes, and snippets.

@Ineke99
Created February 14, 2021 04:26
Show Gist options
  • Save Ineke99/dfe77075c9ef9b7b318028d7666e2346 to your computer and use it in GitHub Desktop.
Save Ineke99/dfe77075c9ef9b7b318028d7666e2346 to your computer and use it in GitHub Desktop.
SecurePay XML API Interface problem. Thank you Aabir (5 years ago) what looked to me the best sample of an XLM API interface. However I crash on line 77 $(function with an IIS error 405. PHP is know and used to IIS. Java is used on this server as well. SSL2 is installed. The server does have a certificate. Secure pay tells me I have an error som…
<?php
extract($_POST);
$purchaseOrderNo = $_POST['purchaseOrderNo'];
$name = $_POST['name'];
$cardDescription = $_POST['cardDescription'];
$amount = $_POST['amount'];
$cardNumber = $_POST['cardNumber'];
$cvv = $_POST['cvv'];
$expire_month = $_POST['expire_month'];
$expire_year = $_POST['expire_year'];
$expire_year = substr($expire_year, 2); // removing first 2 letter from string
$expiryDate = $expire_month."/".$expire_year;
$cardDescription = ($cardDescription == 1 ? "Visa": "Master");
$amount = $amount.'00';
if(isset($_POST['cardNumber'])) {
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<SecurePayMessage>
<MessageInfo>
<messageID>8af793f9af34bea0cf40f5fb5c630c</messageID>
<messageTimestamp>20041803161306527000+660</messageTimestamp>
<timeoutValue>60</timeoutValue>
<apiVersion>xml-4.2</apiVersion>
</MessageInfo>
<MerchantInfo>
<merchantID>ABC0001</merchantID>
<password>abc123</password>
</MerchantInfo>
<RequestType>Payment</RequestType>
<Payment>
<TxnList count="1">
<Txn ID="1">
<txnType>0</txnType>
<txnSource>0</txnSource>
<amount>'.$amount.'</amount>
<currency>AUD</currency>
<purchaseOrderNo>'.$purchaseOrderNo.'</purchaseOrderNo>
<CreditCardInfo>
<cardNumber>'.$cardNumber.'</cardNumber>
<cvv>'.$cvv.'</cvv>
<expiryDate>'.$expiryDate.'</expiryDate>
<cardDescription>'.$cardDescription.'</cardDescription>
</CreditCardInfo>
<DirectEntryInfo>
<accountName>'.$name.'</accountName>
</DirectEntryInfo>
</Txn>
</TxnList>
</Payment>
</SecurePayMessage>';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://test.api.securepay.com.au/xmlapi/payment");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $xml);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); // Return the HTTP response from the curl_exec function
$response = curl_exec($curl);
curl_close($curl);
header('Content-type: text/xml');
echo $response;
$oXML = new SimpleXMLElement($response);
$responseText[1] = $oXML->Payment[0]->TxnList[0]->Txn[0]->responseText;
$responseText[2] = $oXML->Payment[0]->TxnList[0]->Txn[0]->purchaseOrderNo;
$response = array(
'success' => true,
'msg' => $responseText
);
exit (json_encode($response));
}
?>
<!DOCTYPE html>
<html>
<head>
<title> Test Payment </title>
</head>
<style>
#form-success {border: 1px solid #ccc; background: #f8f8f8; display: none; padding: 10px; width: 320px; }
</style>
<body>
<h3> Payment Form </h3>
<div id="form-success"></div>
<form id="payment_info" method="post">
<input type="hidden" name="purchaseOrderNo" value="ODR1">
<p> <label> Name on Card: </label>
<input type="text" name="name" value="John Doe" required>
</p>
<p> <label> Select card type: </label>
<select name="cardDescription" required>
<option value=" "> Select... </option>
<option value="1" selected> Visa </option>
<option value="2"> Master </option>
</select>
</p>
<p> <label> Amount: </label>
<input type="text" name="amount" value="200" required>
</p>
<p> <label> Card No: </label>
<input type="text" name="cardNumber" value="4444333322221111" required>
</p>
<p> <label> CVN (or CVV): </label>
<input type="text" name="cvv" value="111" required>
</p>
<p> <label> Expires: </label>
<select name="expire_month" required>
<option value=" "> Select... </option>
<option value="01"> 1 - January </option>
<option value="02"> 2 - February </option>
<option value="03"> 3 - March </option>
<option value="04" selected> 4 - April </option>
<option value="05"> 5 - May </option>
<option value="06"> 6 - June </option>
<option value="07"> 7 - July </option>
<option value="08"> 8 - August </option>
<option value="09"> 9 - September </option>
<option value="10"> 10 - October </option>
<option value="11"> 11 - November </option>
<option value="12"> 12 - December </option>
</select>
<select name="expire_year" required>
<option value="2021" selected> 2021 </option>
<?php $year = '2021'
echo $year
?>
</select>
</p>
<p><input type="submit" value="Submit"> </p>
</form>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(function(){
var form = $('#payment_info');
form.on('submit', function(e){
e.preventDefault();
data = form.serialize();
$.ajax({
url: "./process.php",
type: "POST",
dataType: "json",
data: data,
success: function(rt){
if(rt && rt.success == true) {
$("#form-success").text(rt.msg[1][0]).css('display', 'block');
if(rt.msg[1][0] == "Approved"){
$("#payment_info")[0].reset();
}
} else {
$("#form-success").html("Some thing went wrong! ").css('color', 'red');
}
}
});
})
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment