如何开发NETELLER直接API和PHP?

问题描述:

我工作的NETELLER API直接在网站上,用户可以转账到我们的商家帐户。该API的步骤是:

I am working on the neteller direct api on website, where users can transfer fund to our merchant account. The API steps are:

  1. 在网站上创建表单
  2. 请用户填写表单
  3. 提交表单到NETELLER安全的URL,它返回的XML页面响应元素

我很困惑该怎么办递交表格后的下一个?当我们提出我们得到XML页面的形式,这很好,但现在该怎么办?我需要显示的结果返回给用户,以便提交表单的用户将能够看到一条消息,说:交易完成或基于XML批准价值类似的消息之后。我试图使用jQuery的ajax POST方法,这样我可以得到响应的jQuery的XML对象以及所有的表单提交变为背景,当请求完成后,我可以得到的回应XML对象展现给用户。这是行不通的,因为跨域POST不起作用。 (我读的地方净)那么,什么将是正确的步骤,以提供最佳的用户体验给用户?我们不能显示此XML给用户。所以,想知道在提交表单后,与下一步该怎么工作的?

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 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>

任何人都可以请有关如何完成这件事帮助吗? AJAX或卷曲或如何?

Could anyone please help on how to get this done? AJAX or CURL or how?

我能够得到这个通过卷曲完成。我已经用卷曲的方法张贴到XML中的URL并得到结果,后来由PHP的方法simplexml_load_string解析()

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()

$url = 'https://api.neteller.com/netdirect'

//get the vars from POST request and set an array with all the required vars
$fields = array(
    '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'
);

//open curl connection
$ch = curl_init($url);

//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
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);