Reputation: 303
I am working on the neteller direct api on website, where users can transfer fund to our merchant account. The API steps are:
I am confused about what to do next after submitting the form? When we submit the form we get xml page, that's fine but now what to do? I need to show the result back to the user so after submitting the form user would be able to see a message that saying "Transaction Done" or something similar message based upon the XML approval value. I tried by using jQuery ajax POST method so that I can receive response in jQuery XML object and all the form submission goes in background and when request completed I can get the response xml object to show to the user. This is not working because of cross domain POST does not work. (I read somewhere on net) So what will be the correct steps to provide optimal user experience to users? We cannot show this xml to users. So want to know how to work with next step after submitting the form?
Form example:
<form method="post" action="https://api.neteller.com/netdirect">
<input type="text" name="version" value=" 4.1">
<input type="text" name="amount" size="10" value="0.02" maxlength="10">
<input type="text" name="currency" value="USD" size="10" maxlength="3">
<input type="text" name="net_account" size="20" maxlength="100">
<input type="text" name="secure_id" size="10" maxlength="6">
<input type="hidden" name="merchant_id" value="">
<input type="hidden" name="merch_key" value="">
<input type="hidden" name="merch_transid" value="" maxlength="50">
<input type="hidden" name="language_code" value="EN">
<input type="hidden" name="merch_name" value="">
<input type="hidden" name="merch_account" value="" maxlength="50">
<input type="hidden" name="custom_1" value="test123" maxlength="50">
<input type="hidden" name="custom_2" value="test123" maxlength="50">
<input type="hidden" name="custom_3" value="test123" maxlength="50">
<button type="submit" name="submit">Make Transfer</button>
Could anyone please help on how to get this done? AJAX or CURL or how?
Upvotes: 3
Views: 4981
Reputation: 303
I was able to get this done via CURL. I have used curl method to post to the url and getting result in xml which later parsed by the php method simplexml_load_string()
// open curl connection
$ch = curl_init('https://api.neteller.com/netdirect');
// get the vars from POST request and add them as POST fields
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'version' => $_POST['version'],
'amount' => urlencode($_POST['amount']),
'currency' => $_POST['currency'],
'net_account' => urlencode($_POST['net_account']),
'secure_id' => urlencode($_POST['secure_id']),
'merchant_id' => urlencode($_POST['merchant_id']),
'merch_key' => urlencode($_POST['merch_key']),
'merch_transid' => urlencode($_POST['merch_transid']),
'language_code' => $_POST['language_code'],
'merch_name' => urlencode($_POST['merch_name']),
'merch_account' => urlencode($_POST['merch_account']),
'custom_1' => urlencode($_POST['custom_1']),
'custom_2' => urlencode($_POST['custom_2']),
'custom_3' => urlencode($_POST['custom_3']),
'button' => 'Make Transfer'
]));
// set other curl options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
// execute post
$output = curl_exec($ch);
$info = curl_getinfo($ch);
$error = '';
$approval = '';
// check if curl request processed or not
if(($output == false) or ($output == '')) {
$curlerror = curl_error($ch);
$error = 'Server Error. ';
} else {
$response = simplexml_load_string($output);
$approval = $response->approval;
}
// close curl connection
curl_close($ch);
Upvotes: 3
Reputation: 31
you dont send the request to neteller, but to your server and than you send the request from your server to neteller
-- This way it goes to your server
function netellerPayment(){
$.ajax({
async: false,
type: "POST",
url: "http://localhost/neteller/notification.php",
data: $("#netellerform").serialize(),
success: function(data){
}
})
}
$(function() {
$('#submitneteller').click(function( event ){
event.preventDefault();
netellerPayment();
})
})
-- Now php on your server
$urltopost = "https://api.neteller.com/netdirect";
$data = $_POST;
$urltopost = "https://api.neteller.com/netdirect";
$ch = curl_init ($urltopost);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$returndata = curl_exec ($ch);
$xml = new DOMDocument ( '1.0', 'utf-8' );
$xml->preserveWhiteSpace = false;
$xml->loadXML ( $returndata );
$errors = $xml->getElementsByTagName( 'error' );
foreach ($errors as $error) {
echo $error->nodeValue;
}
Upvotes: 1