Внутренняя интеграция через 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