【问题标题】:How do I integrate the ATOM payment gateway in my app?如何在我的应用程序中集成 ATOM 支付网关?
【发布时间】:2015-09-05 08:13:12
【问题描述】:

我是 Android 新手。
我想知道如何在我的应用程序中集成 ATOM 支付网关 移动结帐页面?

我想要它,以便用户填写他的信用卡详细信息并在线支付。

如果我使用其他支付网关,例如 Paytm 或 Payu,它们会提供 SDK,但 Atom 没有

任何帮助将不胜感激

【问题讨论】:

  • 我也有同样的问题 AFAIK,Atom 不提供任何移动 SDK。它是一个基于 Web 的网关。那么有没有办法在android的webview中实现这个?还有什么是使用的回调方法(例如 Oauth)。我不是专业人士,不知道从哪里开始。请帮忙。

标签: android payment-gateway


【解决方案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 在线支付网关集成?

  1. 商家首先需要注册 atom 在线支付网关-atom Paynetz。
  2. 一旦客户想要向商家付款,商家就会向 atom Paynetz 发送 EPI 请求。
  3. EPI 请求有助于客户和商家之间通过 Paynetz 进行资金转移。
  4. Paynetz 平台验证商家并在成功时使用 XML 有效负载进行响应。
  5. 根据 XML 中的参数,商家站点必须通过解析 XML 响应向 Paynetz 发送新的 EPI 请求。
  6. Paynetz 系统将显示批准商家的银行列表以供选择,该系统将重定向给客户。
  7. 然后客户选择他/她希望通过其进行付款的银行。
  8. 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 可用的免费扩展程序。

希望这有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2011-11-30
    • 2018-04-23
    • 2016-10-30
    • 2018-10-25
    • 2010-11-28
    相关资源
    最近更新 更多