Как расположить платёжный аргумент ARC-4 в группе Algorand
Метод с аргументом pay получает платёж по его позиции в атомарной группе. Если передать ID транзакции как обычный аргумент приложения, структура вызова изменится.
Поставьте платёж непосредственно перед вызовом
На схеме после двух других элементов группы идут нужный платёж и вызов. Транзакционный аргумент не занимает позицию в ApplicationArgs. При объединении нескольких методов сохраняйте его положение относительно вызова.
Method: reserve(pay,uint64)void
group index 2 Payment to the reservation application
group index 3 Application call
ApplicationArgs[0] = method selector
ApplicationArgs[1] = encoded uint64 reservation ID
Проверьте содержимое платежа внутри приложения
У соседнего платежа могут быть неверный получатель, недостаточная сумма или неожиданный отправитель. Сверьте поля с заказом, а close и rekey — с правилами подписания. Переместите правильный платёж на одну позицию раньше в тесте: контракт не должен засчитать постороннюю транзакцию на его месте.