如何在我的应用程序中集成 ATOM 支付网关?
Posted
技术标签:
【中文标题】如何在我的应用程序中集成 ATOM 支付网关?【英文标题】:How do I integrate the ATOM payment gateway in my app? 【发布时间】:2015-09-05 08:13:12 【问题描述】:我是 android 新手。 我想知道如何在我的应用程序中集成 ATOM 支付网关 移动结帐页面?
我想要它,以便用户填写他的信用卡详细信息并在线支付。
如果我使用其他支付网关,例如 Paytm 或 Payu,它们会提供 SDK,但 Atom 没有
任何帮助将不胜感激
【问题讨论】:
我也有同样的问题 AFAIK,Atom 不提供任何移动 SDK。它是一个基于 Web 的网关。那么有没有办法在android的webview中实现这个?还有什么是使用的回调方法(例如 Oauth)。我不是专业人士,不知道从哪里开始。请帮忙。 【参考方案1】:根据this,他们没有提供java和/或android SDK。 您仍然可以点击“联系我们”按钮(在网页底部)并直接询问他们是否提供任何适用于 java/android 的 SDK。
更新:Android SDK 现在由 ATOM 支付网关提供。点击this 获取相同的内容。
【讨论】:
现在,给定的链接提供了不同平台的SDK,包括java和Android。你应该更新你的答案 感谢 mate.Updated。【参考方案2】:更新: Android SDK 现已由 ATOM 支付网关提供。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
只需将此代码放入重定向网址
//reponseText 是从 ATOM 接收到的文本,是 Okay 还是 No
在 vVendorUrl 中,您必须传递一个返回 url..在服务器中创建一个页面..并将这个 java 脚本代码放入 url。
<script type="text/javascript">
function showAndroidToast(reponseText)
Android.onResponse(reponseText);
【讨论】:
我正在使用您的代码付款。但无法得到原子的响应。你在这里提到了javascript代码。我不知道我将如何使用它。请帮助 该javascript代码可以帮助您从服务器获取响应..将该代码放入网页中..并将其保存在实时服务器中..in Vvendor url 最后一个参数是 ru 放入该服务器 url ru..就是这样 我可以得到你的电子邮件 ID 或电话号码吗?这将是一个很大的帮助。 我已将您的代码保存在服务器中并重定向到 vVendorURI。但没有得到任何东西。仅处理页面... 在浏览器中检查您的 vVendor url 是否返回任何 xml ...并且检查 Atom2Request 是否形成 url【参考方案3】:现在 atom 提供各种平台的 SDK。你可以从它的网站下载这个 atomtech
【讨论】:
我无法在我的参考文献中添加 .jar 文件【参考方案4】:商家如何与 atom 在线支付网关集成?
-
商家首先需要注册 atom 在线支付网关-atom Paynetz。
一旦客户想要向商家付款,商家就会向 atom Paynetz 发送 EPI 请求。
EPI 请求有助于客户和商家之间通过 Paynetz 进行资金转移。
Paynetz 平台验证商家并在成功时使用 XML 有效负载进行响应。
根据 XML 中的参数,商家站点必须通过解析 XML 响应向 Paynetz 发送新的 EPI 请求。
Paynetz 系统将显示批准商家的银行列表以供选择,该系统将重定向给客户。
然后客户选择他/她希望通过其进行付款的银行。
EPI 将客户重定向到相应银行的网上银行界面。客户现在可以完成交易。
PHP 用于 ATOM 集成的代码:
1.创建表单
<?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 可用的免费扩展程序。
希望这有帮助!
【讨论】:
以上是关于如何在我的应用程序中集成 ATOM 支付网关?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 应用程序中集成 Recurly 网关 [关闭]
如何在 Android 应用程序中集成 BHIM 应用程序支付网关?
我们如何在 iphone 应用程序中集成支付网关? [关闭]