如何在我的应用程序中集成 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 中集成 PayTm 支付

如何在 iOS 应用程序中集成 Recurly 网关 [关闭]

如何在 Android 应用程序中集成 BHIM 应用程序支付网关?

我们如何在 iphone 应用程序中集成支付网关? [关闭]

如何在使用 javascript 框架(如 ExtJs)创建的应用程序中集成支付网关?

如何在 ruby​​ on rails 中集成多个支付网关(多个商家)?