Почему один адрес для зачисления в TON может выглядеть по-разному
В заявке поддержки адрес со страницы оплаты отличается от адреса в кошельке. Чтобы понять, действительно ли получатель другой, декодируйте обе строки.
Отделите получателя от параметров доставки
Запустите пример в проекте с @ton/core. В каждой итерации появится своя строка адреса и значение true. В обеих формах совпадают workchain и идентификатор аккаунта. Признак bounceable помогает кошельку выбрать режим отправки и не создаёт второй аккаунт.
import { Address } from "@ton/core";
const a = Address.parseRaw("0:" + "12".repeat(32));
for (const bounceable of [true, false]) {
const encoded = a.toString({ bounceable, testOnly: false });
console.log(encoded, Address.parseFriendly(encoded).address.equals(a));
}
Сохраните флаги для отправки
Для сверки депозитов сравнивайте разобранные адреса в пределах выбранной сети. Для исходящего платежа учитывайте исходные флаги пользователя, включая признак тестовой сети. Если хранить только нормализованный ключ и строить все платёжные ссылки с параметрами по умолчанию, при повторной отправке можно изменить поведение сообщения.