Общая документация по интеграции с эквайринговой системой ARIASOFT 1.3.4 Help

Внутренняя интеграция через Intent

Раздел предназначен для разработчиков кассового ПО, которые необходимо добавить функциональность проведения эквайринговых операций на Андроид терминале без выполнения интеграции платежного SDK ariasof.pos. При необходимости проведения Эквайринговой операции Кассовое ПО вызывает Платежное ПО с передачей необходимго набора данных в ariasoft.pos. После завершения операции результат и слип возвращается в кассовое ПО.

Для начала работы необходимо наполнить ASAPClient инициализационными данными:

final private String correctCertsPem = "-----BEGIN CERTIFICATE-----\nДанные предоставляются по запросу под NDA\n-----END CERTIFICATE-----\n"; private final String correctPrivateKeyPem = "-----BEGIN PRIVATE KEY-----\n" + Данные предоставляются по запросу под NDA "-----END PRIVATE KEY-----\n"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { ASAPClient.getInstance().enableLog(this); ASAPClient.getInstance().setClientAppPackage("com.ariasoft.asap.app"); ASAPClient.getInstance().setClientAppActivity("com.ariasoft.asap.app.MainActivity"); ASAPClient.getInstance().setCertChain(correctCertsPem); ASAPClient.getInstance().setPrivateKey(correctPrivateKeyPem); } catch (ASAPException e) { toast("ASAPClient error!\n" + e); e.printStackTrace(); } findViewById(R.id.sale_button).setOnClickListener(v -> { String amount = ((EditText) findViewById(R.id.amount_sale_text)).getText().toString(); String trxNumber = ((EditText) findViewById(R.id.trx_number_text)).getText().toString(); if (amount.isEmpty()) return; saleTrx(Integer.parseInt(amount), trxNumber); }); }

Пример операции

/** * Оплата * @param amount * @param trxNumber */ private void saleTrx(final int amount, String trxNumber) { if (isSync()) syncSaleTrx(amount, trxNumber); else asyncSaleTrx(amount, trxNumber); } private void asyncSaleTrx(int amount, String trxNumber) { new Thread(() -> { SaleRequest saleRequest = SaleRequest.getDefault(amount, 643, trxNumber); saleRequest.setCallback(new Request.RequestCallback() { @Override public void onWait(Request.WaitInfo waitInfo) { //todo Log.v(TAG, "saleRequest onWait " + waitInfo); } @Override public void onComplete(Response response) { //todo Log.i(TAG, "saleRequest onComplete " + response); SaleResponse saleResponse = (SaleResponse) response; if (saleResponse != null) { toast( "success = " + saleResponse.isSuccess() + "\n" + "reason = " + saleResponse.getErrorReason() + "\n" + saleResponse.getCurrency() + "" + "\n" + saleResponse.getAmount() + "" + "\n" + saleResponse.getHostDateTime() + "\n" + saleResponse.getReadType() + "" + "\n" + saleResponse.getPan() + "\n" + saleResponse.getRespCode() + "\n" + saleResponse.getUniqTrxNumber() + "\n" + saleResponse.getExtDeviceId() + "\n" + saleResponse.getMerchantId() + "\n" + saleResponse.getTrxStatus() + "\n" + saleResponse.getPrintData() + "\n" + saleResponse.getExtDeviceDateTime()); } } @Override public void onError(Throwable throwable) { //todo Log.i(TAG, "saleRequest onError " + Log.getStackTraceString(throwable)); toast("Sale error!\n" + throwable); } }); try { ASAPClient.getInstance().executeAsync(getApplicationContext(), saleRequest, SaleResponse.class); } catch (ASAPException e) { toast("Sale error!\n" + e); e.printStackTrace(); } }).start(); } private void syncSaleTrx(int amount, String trxNumber) { new Thread(() -> { SaleRequest saleRequest = SaleRequest.getDefault(amount, 643, trxNumber); try { ASAPClient.getInstance().execute(getApplicationContext(), saleRequest, SaleResponse.class); } catch (ASAPException e) { toast("Sale error!\n" + e); e.printStackTrace(); } }).start(); }
Last modified: 17 February 2026