Как интегрировать платежный шлюз ATOM в моем приложении?

Я новичок в Android.
Я хочу знать, как я могу интегрировать страницу мобильного отслеживания шлюза ATOM в моем приложении?

Я хочу, чтобы пользователь заполнил данные своей кредитной карты и оплатил он-лайн.

Если я использую другие платежные шлюзы, такие как Paytm или Payu, они предоставляют SDK, но Atom не

Любая помощь будет оценена

Ответ 1

Обновление: Android SDK теперь предоставляется шлюзом для платежей ATOM. Нажмите здесь, чтобы получить SDK для различных платформы.

Как мы знаем ATOM Dosen't Предоставить SDK После многих resarch я нашел решение

Вызовите эту асинтезу в Кнопка оплаты нажмите

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&[email protected]&ttype=NBFundTransfer&prodid=NSE&amt=50&txncurr=INR&txnscamt=0&clientcode=TkFWSU4%3d&txnid=123&date=03/07/2015&custacc=1234567890&udf1=Customer&[email protected]&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 вам нужен URL-адрес перенаправления, чтобы получить запрос от ATOM и отправить ответ на android Mobile. >

Просто поместите этот код внутри перенаправления URL

//reponseText - это текст, полученный frm ATOM, который находится в порядке или нет

в vVendorUrl вам нужно передать URL-адрес возврата.. сделайте страницу на сервере.. и поставьте этот код java script внутри URL-адреса.

<script type="text/javascript">
 function showAndroidToast(reponseText) {
 Android.onResponse(reponseText);
 }

Ответ 2

Согласно this, java и/или SDK для Android не предоставляются. Вы по-прежнему можете нажать кнопку "Связаться с нами" (в нижней части веб-страницы) и задать им прямую погоду, чтобы они предоставили любой SDK для java/android или нет.

Обновление: Android SDK теперь предоставляется шлюзом платежей ATOM.Click this, чтобы получить то же самое.

Ответ 3

Теперь атом предоставляет SDK для различных платформ. Вы можете скачать это с этого сайта atomtech

Ответ 4

Как интегрируется Merchant с атомарным онлайн-шлюзом?

  • Сначала торговцу необходимо зарегистрироваться с помощью атома Online Payment Gateway-atom Paynetz.
  • Как только клиент хочет сделать платеж продавцу, продавец отправляет запрос EPI на атом Paynetz.
  • Запрос EPI облегчает перевод средств между клиентом и торговцем через Paynetz.
  • Платформа Paynetz подтверждает успешность торговца и отвечает на полезную нагрузку XML.
  • На основе параметров в XML сайт продавца должен отправить новый запрос EPI в Paynetz, проанализировав ответ XML.
  • Список банков, одобренных для продавца, будет отображаться для выбора в системе 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

}
?>

Доступны расширения, которые оплачиваются, а также бесплатные, чьи коды доступны.

Надеюсь, что это было полезно!