Единственная другая библиотека, о которой я знаю, pyAmazon, который является предшественником pyaws. Если Вы знакомы с Amazon API (или готовы стать так), Вы могли, вероятно, соединить что-то сами с ZSI.
Как насчет более социального решения вместо технического? Почему бы не сделать абсолютно очевидным, что билет будет разблокирован, если вы будете слишком долго ждать?
Все платежные шлюзы будут выполнять обратную передачу, чтобы сообщить вам (например) ссылку на платеж и т. Д. Большинство также отправит обратно информацию об авторизации / аутентификации, такую как результаты проверки CSC / CVV2, чтобы вы ( продавец) имеет последнее слово в принятии платежа или нет.
При получении обратной передачи вы должны иметь возможность проверить, заблокирован ли билет, и, если нет, то произвести отмену платежа через платежный шлюз для отмены платежа. Затем вам нужно отобразить сообщение «извините, истекло время ожидания, попробуйте еще раз»
. Если шлюз не поддерживает функцию стиля «мгновенного реверсирования», то он, по крайней мере, будет поддерживать некоторую «недействительную» функциональность, при которой средства никогда не будут фактически снято с карты клиента, и блокировка авторизации автоматически отключается (обычно через два дня, хотя на некоторых картах это может занять больше времени). Для (надеюсь, небольшого) количества транзакций с тайм-аутом это может быть приемлемо. Было бы целесообразно отслеживать, сколько времени ожидания транзакций, чтобы время ожидания можно было отрегулировать.
В качестве альтернативы, если билет больше не заблокирован (и снова, если шлюз поддерживает это), отправьте обратно платеж возврата.
Вполне вероятно, что вы сможете не использовать страницу входа внешнего платежного шлюза и делать то, что вы пытаетесь сделать.
Paypal и многие другие процессоры имеют прямой путь интеграции веб-сервисов. Это означает, что вы собираете платежную информацию на своей странице, она отправляется на ваш сервер, вы делаете вызов веб-службы и получаете немедленный ответ от процессора. (Я не помню, как PayPal называет продукт, который это делает, но раньше он назывался PayFlow Pro и был куплен у Verisign.)
Таким образом, вы не блокируете билеты, когда они помещаются в корзину. Ваш рабочий процесс будет выглядеть следующим образом:
Таким образом, вы не блокируете билеты, когда они помещаются в корзину. Ваш рабочий процесс будет выглядеть следующим образом:
Таким образом, вы не блокируете билеты, когда они помещаются в корзину. Ваш рабочий процесс будет выглядеть следующим образом:
Нет необходимости обрабатывать тайм-ауты блокировки. Они заблокированы только на время, достаточное для подтверждения действительного платежа.
Вы не спрашивали о решении проблемы, одновременно предотвращая раскрытие PCI. Поскольку вы, вероятно, спросите:
Существуют процессоры, которые позволяют встроить сбор информации о платеже на вашу собственную страницу. Есть такие, которые позволяют получить «жетон» для замены номера карты, чтобы ваш сервер никогда не получал номер карты. Затем токен можно использовать при вызове веб-службы на стороне сервера. Вы получаете то, что вам нужно, и вам не нужно решать проблемы PCI, связанные с получением номеров карт.
Я думаю, вам не следует блокировать билет, если кто-то кладет его в свою тележку, как в те 5 минут. вы можете в конечном итоге отогнать нескольких других клиентов ...
Я предлагаю вам разрешить каждому добавить билет в свою корзину, если только кто-то на самом деле не произведет оплату и не купит его. Теперь, когда другие продолжат оформление заказа, просто высветите сообщение «Извините, вы опоздали ... Билет продан !!!» и билет должен быть удален из их корзины.
Таким образом, билет не будет заблокирован для ваших клиентов, и все равно не возникнет сценария, когда два человека будут платить за один и тот же билет.