Invalid signature платежный шлюз Fondy

Создаю бота (Python, aiogram) с платной подпиской через платежный шлюз Fondy. Использую принцип проверки статуса платежа, но после отправки запроса получаю:

{
    'response': {
        'error_code': 1014,
        'error_message': 'Invalid signature signature: `8dccc7a9e053c3cdc1efddb13f906bc866239ae6`; response_signature_string: `**********|1396424|85cceedc-e54a-43f5-a9fd-e39dc6f15c1a`',
        'request_id': 'ZKIukrDkwZDz9',
        'response_status': 'failure'
    }
}

Хотя order_id (85cceedc-e54a-43f5-a9fd-e39dc6f15c1a) отображается верно, signature все равно не тот. Помогите пожалуйста найти ошибку. Вот код оплаты.

@dp.message_handler(commands ='FONDY')
async def order_fondy(message: types.Message):
    people_id = message.chat.id
    base = sqlite3.connect('users.db')
    cursor = base.cursor()

    order_id = str(uuid.uuid4())
    print(order_id)
    cursor.execute(f"UPDATE users_id SET  order_id == ? WHERE user_id == ?",
                   (order_id, people_id))
    base.commit()

    def generate_signature( order_id):
        params1 = {

            'merchant_id': '1396424',
            'order_desc': 'demo order',
            'currency': 'USD',
            'amount': '125',
            'order_id': f'{order_id}'
        }
        password = 'test'

        # Формирование списка значений, отсортированных по ключу
        values = []
        for key in sorted(params1.keys()):
            value = params1[key]
            # Пропускаем пустые значения
            if value:
                values.append(str(value))

        # Добавление параметра password со значением 'test' в начало списка значений
        values.insert(0, password)

        # Формирование строки значений, разделенных символом "|"
        signature_string = "|".join(values)
        print(signature_string)
        # Применяем функцию SHA1 к строке и возвращаем результат в формате шестнадцатеричной строки
        signature = hashlib.sha1(signature_string.encode('utf-8')).hexdigest()

        return signature

    signature = generate_signature(order_id)
    print(signature)  # Вывод подписи

    api = Api(merchant_id=1396424,
              secret_key='test')
    checkout = Checkout(api=api)
    data = {
        'order_desc': 'demo order',
        'currency': 'USD',
        'amount': '125',
        'order_id': f'{order_id}'
    }

    payment_url = checkout.url(data).get('checkout_url')

    # Отправка пользователю ссылки на оплату
    await message.reply(f"Для оплаты перейдите по ссылке: {payment_url}")

@dp.callback_query_handler(text='check')
async def check_payment_status(call: CallbackQuery):
    people_id = call.message.chat.id
    connect = sqlite3.connect('users.db')
    cursor = connect.cursor()
    cursor.execute(f"SELECT order_id FROM users_id WHERE user_id = {people_id}")
    result_1 = cursor.fetchone()
    order_id = str(result_1[0])
    print(order_id)
    cursor.execute(f"SELECT payment_id FROM users_id WHERE user_id = {people_id}")
    result_2 = cursor.fetchone()
    signature = str(result_2[0])
    print(signature)
    url = 'https://pay.fondy.eu/api/status/order_id'
    headers = {'Content-Type': 'application/json'}
    data = {
        "request": {
            'currency': 'USD',
            'amount': '125',
            'order_id': f'{order_id}',
            'merchant_id': '1396424',
            'signature': f'{signature}',
            'order_desc': 'demo order',
            "response_url": "https://pay.fondy.eu/responsepage/"
                }
            }

    async with aiohttp.ClientSession() as session:
        async with session.post(url, headers=headers, data=json.dumps(data)) as response:
            response_data = await response.json()
            print(response_data)


            if response.status == 200:
            # Обработка успешного ответа

Ответы (0 шт):