Комбинированная оплата

Редактировать

Продажа, возврат без чека, покупка, возврат покупки без чека и чеки коррекции

Чтобы реализовать комбинированную оплату в своём приложении для перечисленных чеков выполните:

  1. В манифесте приложения, добавьте разрешение:

    <uses-permission android:name="ru.evotor.permission.COMBINED"/>
    
  2. Создайте службу, которая будет обрабатывать комбинированные платежи. Например, .CombinedPaymentService.

    Служба .CombinedPaymentService наследуется от класса IntegrationService.java. Для обработки события используйте класс PaymentDelegatorEventProcessor.kt. Пример сервиса:

     class CombinedPaymentService : IntegrationService() 	{
          override fun createProcessors(): 	MutableMap<String, ActionProcessor> = 	mutableMapOf(
              Pair(
                  PaymentDelegatorEvent.NAME_ACTION,
                  object 	: PaymentDelegatorEventProcessor() {
                      override 	fun call(
                          action: 	String,
                          event: 	PaymentDelegatorEvent,
                          callback: 	Callback
                      ) 	{
                          callback.startActivity(
                              Intent(this@CombinedPaymentService, 	MainActivity::class.java)
                                  .putExtra(MainActivity.KEY_RECEIPT_UUID, 	event.receiptUuid)
                          )
                      }
                  }
              )
          )
      }
    
  3. В манифесте приложения, в intent-filter службы укажите событие, которое будет её запускать:

    <intent-filter>
        <action android:name="evo.v2.receipt.sell.payment.COMBINED" />
    </intent-filter>
    
  4. Чтобы получить данные всех приложений, которые позволяют оплачивать чек, используйте метод getAllPaymentPerformers класса PaymentPerformerApi.kt. Метод возвращает список объектов PaymentPerformer.kt.

Возврат по чеку и возврат покупки по чеку

В версии EvotorPOS 8.10.0 для перечисленных чеков добавлена возможность вызывать activity своего приложения, чтобы при комбинированной оплате управлять распределением сумм по способам оплаты. Раньше приложение EvotorPOS само распределяло суммы и не вызывало внешнее приложение.

Чтобы добавить эту функцию в своё приложение, дополните шаги, выполненные в предыдущем разделе, следующими действиями:

  1. В манифесте приложения, в intent-filter службы добавьте событие, которое будет её запускать evo.v2.receipt.payback.payment.COMBINED:

    <intent-filter>
        <action android:name="evo.v2.receipt.sell.payment.COMBINED" />
        <action android:name="evo.v2.receipt.payback.payment.COMBINED" />
    </intent-filter>
    
  2. В созданную ранее службу добавьте новый обработчик события PaybackPaymentDelegatorEvent. Пример сервиса:

    class CombinedPaymentService: IntegrationService() {
        override fun createProcessors(): MutableMap < String, ActionProcessor > =
            mutableMapOf(Pair(PaybackPaymentDelegatorEvent.NAME_ACTION, object: PaybackPaymentDelegatorEventPrxocessor() {
                override fun call(action: String, event: PaybackPaymentDelegatorEvent, callback: Callback) {
                    callback.startActivity(Intent(this @CombinedPaymentService,  MainActivity::class.java).putExtra(MainActivity.KEY_RECEIPT_UUID, event.receiptUuid).putExtra(MainActivity.KEY_AVAILABLE_PAYBACK_SUM, event.availablePaybackSum))
                }
            }))
    }
    

    Объект PaybackPaymentDelegatorEvent содержит в себе uuid чека возврата и доступные для возврата суммы в виде списка объектов PaymentDelegatorPaybackData. Каждый из них содержит paymentPerformer и максимальную доступную сумму возврата.

Результаты

После обработки событий, служба .CombinedPaymentService должна вернуть один из результатов: