如何在我的应用程序中集成 ATOM 支付网关?
How do I integrate the ATOM payment gateway in my app?
我是 Android 的新手。
我想知道如何在我的应用程序中集成 ATOM 支付网关 移动结帐页面?
我想要它,以便用户填写他的信用卡详细信息并在线支付。
如果我使用其他支付网关,例如 Paytm 或 Payu,它们会提供 SDK,但 Atom 不会
如有任何帮助,我们将不胜感激
根据this,他们没有提供java and/or android SDK。
您仍然可以单击 "contact us" 按钮(在网页底部)并直接询问他们是否为 java/android 提供任何 SDK。
更新:Android SDK 现在由 ATOM 支付网关提供。点击this 获取相同的。
商家如何与 atom 在线支付网关集成?
- 商家首先需要注册atom在线支付网关-atom Paynetz。
- 一旦客户想要向商家付款,商家就会向 atom Paynetz 发送 EPI 请求。
- EPI 请求有助于通过 Paynetz 在客户和商家之间转移资金。
- Paynetz 平台验证商家并在成功时用 XML 有效负载进行响应。
- 根据 XML 中的参数,商家站点必须通过解析 XML 响应向 Paynetz 发送新的 EPI 请求。
- 将在 Paynetz 系统上显示为商家批准的银行列表以供选择,该系统将重定向到客户。
- 客户然后选择 he/she 希望通过其进行付款的银行。
- EPI 将客户重定向到相应银行的网上银行界面。客户现在可以完成交易了。
PHP ATOM 集成代码:
1.Create一个表格
<?php
if ($testmode)
{
$url = ‘http://203.114.240.77/paynetz/epi/fts';// test bed URL
$port = 80;
$atom_prod_id = “NSE”;
}
else
{
$url = ‘https://payment.atomtech.in/paynetz/epi/fts';//live URL
$port = 443;
$atom_prod_id = “ESDS”;
}
// code to generate token
$param = “&login=”.$userid.”&pass=”.$password.”&ttype=NBFundTransfer&prodid=”.$atom_prod_id.”&amt=”.$amount.”&txncurr=INR&txnscamt=0&clientcode=”.$clientcode.”&txnid=”.$invoiceid.”&date=”.$today.”&custacc=12345″;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_PORT , $port);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
$returnData = curl_exec($ch);
// Check if any error occured
if(curl_errno($ch))
{
echo ‘Curl error: ‘ . curl_error($ch);
}
curl_close($ch);
$xmlObj = new SimpleXMLElement($returnData);
$final_url = $xmlObj->MERCHANT->RESPONSE->url;
// eof code to generate token
// code to generate form action
$param = “”;
$param .= “&ttype=NBFundTransfer”;
$param .= “&tempTxnId=”.$xmlObj->MERCHANT->RESPONSE->param[1];
$param .= “&token=”.$xmlObj->MERCHANT->RESPONSE->param[2];
$param .= “&txnStage=1″;
$url = $url.”?”.$param;
// eof code to generate form action
?>
<form action='<?php echo $url?>’ method=’post’>
<input type=’submit’ value=’Pay Now’ name=’btn_pay’ />
</form>
步骤 2. 处理响应
<?php
// log post data
$orgipn = ”;
foreach ($_POST as $key => $value)
{
$orgipn .= (” . $key . ‘ => ‘ . $value . ‘
‘);
}
// eof log post data
if($_POST[‘f_code’]==”Ok”) // atom status
{
$invoiceid = $_POST[‘mer_txn’];
$amount = $_POST[‘amt’];
$transid = $_POST[‘mmp_txn’];
// add your transaction
}
?>
有可用的付费扩展和 codes 可用的免费扩展。
希望这对您有所帮助!
更新: Android ATOM支付网关现在提供SDK。Click this获取各种平台的SDK。
以前的方法
在支付按钮点击时调用此异步任务
private class StartPayment extends AsyncTask<String, Void, String> {
String Atom2Request;
@Override
protected String doInBackground(String... params) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String CurrDateTime = sdf.format(new Date()).toString();
vVenderURL = "https://paynetzuat.atomtech.in/paynetz/epi/fts?login=160&pass=Test@123&ttype=NBFundTransfer&prodid=NSE&amt=50&txncurr=INR&txnscamt=0&clientcode=TkFWSU4%3d&txnid=123&date=03/07/2015&custacc=1234567890&udf1=Customer&udf2=rajtufan@gmail.com&udf3=8485835654&udf4=pune&ru=http://example.webservice/response.aspx?";
Log.d("Vvendor URL", vVenderURL);
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(vVenderURL); // getting XML
Document doc = parser.getXMLElement(xml); // getting DOM element
Log.d("XML URL", xml);
NodeList nList = doc.getElementsByTagName(KEY_RESPONSE);
for (int tempN = 0; tempN < nList.getLength(); tempN++) {
Node nNode = nList.item(tempN);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println("URL : " + eElement.getElementsByTagName("url").item(0).getChildNodes().item(0).getNodeValue());
xmlURL = eElement.getElementsByTagName("url").item(0).getChildNodes().item(0).getNodeValue();
NodeList aList = eElement.getElementsByTagName("param");
String vParamName;
for (int atrCnt = 0; atrCnt < aList.getLength(); atrCnt++) {
vParamName = aList.item(atrCnt).getAttributes().getNamedItem("name").getNodeValue();
System.out.println("<br>paramName : : " + vParamName);
if (vParamName.equals("ttype")) {
xmlttype = aList.item(atrCnt).getChildNodes().item(0).getNodeValue();
} else if (vParamName.equals("tempTxnId")) {
xmltempTxnId = aList.item(atrCnt).getChildNodes().item(0).getNodeValue();
} else if (vParamName.equals("token")) {
xmltoken = aList.item(atrCnt).getChildNodes().item(0).getNodeValue();
} else if (vParamName.equals("txnStage")) {
xmltxnStage = aList.item(atrCnt).getChildNodes().item(0).getNodeValue();
}
}
Log.d("XML URL", xmlURL);
Log.d("XML TRANS TYPE", xmlttype);
Log.d("tempTxnId : ", xmltempTxnId);
Log.d("param : token :", xmltoken);
Log.d("param : txnStage : ", xmltxnStage);
}
}//for
Atom2Request = xmlURL + "?ttype=" + xmlttype + "&tempTxnId=" + xmltempTxnId + "&token=" + xmltoken + "&txnStage=" + xmltxnStage;
Atom2Request = Atom2Request.replace(" ", "%20");
Log.d("ATOM 2nd Request URl", Atom2Request);
return Atom2Request;
}
@Override
protected void onPostExecute(String result) {
if (pDialog != null) {
pDialog.dismiss();
Intent intent = new Intent(Recharge_Activity.this, WebContent.class);
intent.putExtra(KEY_ATOM2REQUEST, result);
startActivityForResult(intent, 3);
}
}
@Override
protected void onPreExecute() {
pDialog.setMessage("Processing Request...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
super.onPreExecute();
}
}
当我们收到来自网页的响应时,我们 形成一个 url 并且 将 转移到
WebContent.class
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebContent extends Activity {
private static final String TAG = "WebContent";
SharedPreferences sp;
static Context mContext;
public static final String KEY_ATOM2REQUEST = "Atom2Request";
String Atom2Request;
Intent intent;
boolean loadingFinished = true;
boolean redirect = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webviewrecharge);
// Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
mContext = this;
Bundle extras = getIntent().getExtras();
if (extras != null)
Atom2Request = extras.getString(KEY_ATOM2REQUEST);
Log.d("ATOM2Request webview", Atom2Request);
WebView webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new MyWebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.loadUrl(Atom2Request);
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
if (!loadingFinished) {
redirect = true;
}
loadingFinished = false;
view.loadUrl(urlNewString);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap facIcon) {
loadingFinished = false;
//SHOW LOADING IF IT ISNT ALREADY VISIBLE
Log.w(TAG, "Loading");
}
@Override
public void onPageFinished(WebView view, String url) {
if (!redirect) {
loadingFinished = true;
}
if (loadingFinished && !redirect) {
//HIDE LOADING IT HAS FINISHED
Log.w(TAG, "Finish Loading");
} else {
redirect = false;
}
}
}
public class WebAppInterface {
Context mContext;
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void onResponse(String reponseText) {
Intent returnIntent = new Intent();
returnIntent.putExtra("Result", reponseText);
setResult(RESULT_OK, returnIntent);
finish();
}
}
}
//在 vVendorURl 你需要一个 redirect url 来从 ATOM 并将响应发送到 android Mobile
把这段代码放在redirect url
里面
//reponseText 是从 ATOM 接收到的文本,可以或否
在 vVendorUrl 中你必须传递一个 return url..在服务器中创建一个页面..然后把这个 java 脚本 url.
里面的代码
<script type="text/javascript">
function showAndroidToast(reponseText) {
Android.onResponse(reponseText);
}
现在atom提供各种平台的SDK。你可以从它的网站下载这个
atomtech
我是 Android 的新手。
我想知道如何在我的应用程序中集成 ATOM 支付网关 移动结帐页面?
我想要它,以便用户填写他的信用卡详细信息并在线支付。
如果我使用其他支付网关,例如 Paytm 或 Payu,它们会提供 SDK,但 Atom 不会
如有任何帮助,我们将不胜感激
根据this,他们没有提供java and/or android SDK。 您仍然可以单击 "contact us" 按钮(在网页底部)并直接询问他们是否为 java/android 提供任何 SDK。
更新:Android SDK 现在由 ATOM 支付网关提供。点击this 获取相同的。
商家如何与 atom 在线支付网关集成?
- 商家首先需要注册atom在线支付网关-atom Paynetz。
- 一旦客户想要向商家付款,商家就会向 atom Paynetz 发送 EPI 请求。
- EPI 请求有助于通过 Paynetz 在客户和商家之间转移资金。
- Paynetz 平台验证商家并在成功时用 XML 有效负载进行响应。
- 根据 XML 中的参数,商家站点必须通过解析 XML 响应向 Paynetz 发送新的 EPI 请求。
- 将在 Paynetz 系统上显示为商家批准的银行列表以供选择,该系统将重定向到客户。
- 客户然后选择 he/she 希望通过其进行付款的银行。
- EPI 将客户重定向到相应银行的网上银行界面。客户现在可以完成交易了。
PHP ATOM 集成代码:
1.Create一个表格
<?php
if ($testmode)
{
$url = ‘http://203.114.240.77/paynetz/epi/fts';// test bed URL
$port = 80;
$atom_prod_id = “NSE”;
}
else
{
$url = ‘https://payment.atomtech.in/paynetz/epi/fts';//live URL
$port = 443;
$atom_prod_id = “ESDS”;
}
// code to generate token
$param = “&login=”.$userid.”&pass=”.$password.”&ttype=NBFundTransfer&prodid=”.$atom_prod_id.”&amt=”.$amount.”&txncurr=INR&txnscamt=0&clientcode=”.$clientcode.”&txnid=”.$invoiceid.”&date=”.$today.”&custacc=12345″;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_PORT , $port);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
$returnData = curl_exec($ch);
// Check if any error occured
if(curl_errno($ch))
{
echo ‘Curl error: ‘ . curl_error($ch);
}
curl_close($ch);
$xmlObj = new SimpleXMLElement($returnData);
$final_url = $xmlObj->MERCHANT->RESPONSE->url;
// eof code to generate token
// code to generate form action
$param = “”;
$param .= “&ttype=NBFundTransfer”;
$param .= “&tempTxnId=”.$xmlObj->MERCHANT->RESPONSE->param[1];
$param .= “&token=”.$xmlObj->MERCHANT->RESPONSE->param[2];
$param .= “&txnStage=1″;
$url = $url.”?”.$param;
// eof code to generate form action
?>
<form action='<?php echo $url?>’ method=’post’>
<input type=’submit’ value=’Pay Now’ name=’btn_pay’ />
</form>
步骤 2. 处理响应
<?php
// log post data
$orgipn = ”;
foreach ($_POST as $key => $value)
{
$orgipn .= (” . $key . ‘ => ‘ . $value . ‘
‘);
}
// eof log post data
if($_POST[‘f_code’]==”Ok”) // atom status
{
$invoiceid = $_POST[‘mer_txn’];
$amount = $_POST[‘amt’];
$transid = $_POST[‘mmp_txn’];
// add your transaction
}
?>
有可用的付费扩展和 codes 可用的免费扩展。
希望这对您有所帮助!
更新: Android ATOM支付网关现在提供SDK。Click this获取各种平台的SDK。
以前的方法
在支付按钮点击时调用此异步任务
private class StartPayment extends AsyncTask<String, Void, String> {
String Atom2Request;
@Override
protected String doInBackground(String... params) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String CurrDateTime = sdf.format(new Date()).toString();
vVenderURL = "https://paynetzuat.atomtech.in/paynetz/epi/fts?login=160&pass=Test@123&ttype=NBFundTransfer&prodid=NSE&amt=50&txncurr=INR&txnscamt=0&clientcode=TkFWSU4%3d&txnid=123&date=03/07/2015&custacc=1234567890&udf1=Customer&udf2=rajtufan@gmail.com&udf3=8485835654&udf4=pune&ru=http://example.webservice/response.aspx?";
Log.d("Vvendor URL", vVenderURL);
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(vVenderURL); // getting XML
Document doc = parser.getXMLElement(xml); // getting DOM element
Log.d("XML URL", xml);
NodeList nList = doc.getElementsByTagName(KEY_RESPONSE);
for (int tempN = 0; tempN < nList.getLength(); tempN++) {
Node nNode = nList.item(tempN);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println("URL : " + eElement.getElementsByTagName("url").item(0).getChildNodes().item(0).getNodeValue());
xmlURL = eElement.getElementsByTagName("url").item(0).getChildNodes().item(0).getNodeValue();
NodeList aList = eElement.getElementsByTagName("param");
String vParamName;
for (int atrCnt = 0; atrCnt < aList.getLength(); atrCnt++) {
vParamName = aList.item(atrCnt).getAttributes().getNamedItem("name").getNodeValue();
System.out.println("<br>paramName : : " + vParamName);
if (vParamName.equals("ttype")) {
xmlttype = aList.item(atrCnt).getChildNodes().item(0).getNodeValue();
} else if (vParamName.equals("tempTxnId")) {
xmltempTxnId = aList.item(atrCnt).getChildNodes().item(0).getNodeValue();
} else if (vParamName.equals("token")) {
xmltoken = aList.item(atrCnt).getChildNodes().item(0).getNodeValue();
} else if (vParamName.equals("txnStage")) {
xmltxnStage = aList.item(atrCnt).getChildNodes().item(0).getNodeValue();
}
}
Log.d("XML URL", xmlURL);
Log.d("XML TRANS TYPE", xmlttype);
Log.d("tempTxnId : ", xmltempTxnId);
Log.d("param : token :", xmltoken);
Log.d("param : txnStage : ", xmltxnStage);
}
}//for
Atom2Request = xmlURL + "?ttype=" + xmlttype + "&tempTxnId=" + xmltempTxnId + "&token=" + xmltoken + "&txnStage=" + xmltxnStage;
Atom2Request = Atom2Request.replace(" ", "%20");
Log.d("ATOM 2nd Request URl", Atom2Request);
return Atom2Request;
}
@Override
protected void onPostExecute(String result) {
if (pDialog != null) {
pDialog.dismiss();
Intent intent = new Intent(Recharge_Activity.this, WebContent.class);
intent.putExtra(KEY_ATOM2REQUEST, result);
startActivityForResult(intent, 3);
}
}
@Override
protected void onPreExecute() {
pDialog.setMessage("Processing Request...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
super.onPreExecute();
}
}
当我们收到来自网页的响应时,我们 形成一个 url 并且 将 转移到
WebContent.class
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebContent extends Activity {
private static final String TAG = "WebContent";
SharedPreferences sp;
static Context mContext;
public static final String KEY_ATOM2REQUEST = "Atom2Request";
String Atom2Request;
Intent intent;
boolean loadingFinished = true;
boolean redirect = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webviewrecharge);
// Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
mContext = this;
Bundle extras = getIntent().getExtras();
if (extras != null)
Atom2Request = extras.getString(KEY_ATOM2REQUEST);
Log.d("ATOM2Request webview", Atom2Request);
WebView webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new MyWebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.loadUrl(Atom2Request);
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
if (!loadingFinished) {
redirect = true;
}
loadingFinished = false;
view.loadUrl(urlNewString);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap facIcon) {
loadingFinished = false;
//SHOW LOADING IF IT ISNT ALREADY VISIBLE
Log.w(TAG, "Loading");
}
@Override
public void onPageFinished(WebView view, String url) {
if (!redirect) {
loadingFinished = true;
}
if (loadingFinished && !redirect) {
//HIDE LOADING IT HAS FINISHED
Log.w(TAG, "Finish Loading");
} else {
redirect = false;
}
}
}
public class WebAppInterface {
Context mContext;
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void onResponse(String reponseText) {
Intent returnIntent = new Intent();
returnIntent.putExtra("Result", reponseText);
setResult(RESULT_OK, returnIntent);
finish();
}
}
}
//在 vVendorURl 你需要一个 redirect url 来从 ATOM 并将响应发送到 android Mobile
把这段代码放在redirect url
里面//reponseText 是从 ATOM 接收到的文本,可以或否
在 vVendorUrl 中你必须传递一个 return url..在服务器中创建一个页面..然后把这个 java 脚本 url.
里面的代码<script type="text/javascript">
function showAndroidToast(reponseText) {
Android.onResponse(reponseText);
}
现在atom提供各种平台的SDK。你可以从它的网站下载这个 atomtech