Отмена обратной передачи с сообщением об ошибке

Я интегрирую Google Кошелек с моего сайта, чтобы купить и создать новую учетную запись пользователя.

В моем постбэке (php), я создаю учетную запись.

Если создание аккаунта успешный, Я отвечаю на Google с 200 OK и orderId завершить покупку. Это отлично работает.

Вот моя проблема:
Если создание аккаунта неудачный, Я хотел бы отменить покупку и сообщить пользователю Зачем это было отменено.

Я не видел, чтобы кто-нибудь обсуждал, как это сделать.

В настоящее время я просто die() или же exit() страница обратной передачи, которая фактически отменяет покупку (так как нет 200 или orderId echoред). Будет ли Google ждать 10 секунд или отменить сразу?

Это фактически не говорит пользователю, почему это было отменено.

Как я могу сказать пользователю, почему покупка была отменена ?? — как предупредить их с сообщением об ошибке
Это вообще возможно? Изменить данные продавца, чтобы клиент обработал их при ошибке? Как?

Спасибо!

0

Решение

ИМХО — скорее всего, это будет похоже на последний шаг проверки на стороне сервера, как правило, на успех (см. № 6 на диаграмме).

В этом случае на отказ , используя идентификатор Другой чем идентификатор заказа Google — например, что-то в sellerData поле так как вы не получите один (идентификатор заказа).

Таким образом, это означает, что вы будете отслеживать «все типы заказов» (также как отслеживание «неудачных или заброшенных корзин») и проверять обратный вызов (сбой).

Hth …


Обновить:

В случае неудачи (или успеха в этом отношении), вы получите свой оригинал sellerData как показано здесь. Чтобы вы могли:

  • добавить «идентификатор корзины» (уникально для ваше приложение)
  • при сбое обратного вызова, запросите у вашего сервера этот «идентификатор корзины»
  • и проверьте его «статус» (это может быть пользовательское / конкретное сообщение об ошибке)
  • отобразите это в пользовательском интерфейсе, чтобы ваш пользователь получил более дружественное / более конкретное сообщение (по вашему усмотрению) …

Примечание: обратный вызов сбоя также будет вызван, если пользователь просто закроет окно (не обязательно проходить / продолжать транзакцию). Таким образом, вы можете «фильтровать», когда вызывать ваш сервер — например, POSTBACK_ERROR основанный на выше и не должен делать это для всех случаев (отладка, хотя, я не пробовал).

Добавлено примечание: это зависит от вашего определения «создание учетной записи не было успешным» — если это означает «любой» случай (включая ошибку сервера на вашем конце, и вам не нужно различать), то, возможно, идентификатор проверки сервера / корзины является не нужно (вы можете просто отключить POSTBACK_ERROR)

Hth …


Обновление 2

Если ваш вариант использования требует от вас различать причины «создание учетной записи не удалось» (какое-то деловое правило). В противном случае, если таковые имеются / все, вы, вероятно, могли бы справиться с этим, проверив тип ошибки в отказ response и не надо ничего этого делать …

генерируется cartId случайно?

Не так много «случайных», но уникальных

Если это так, я могу передать его как параметр запроса GET, который я делаю в случае успеха.

Исходя из вашего ОП / вопроса, не знаете, что это будет значить для успеха. Если я понял ваш вопрос, вы искали способ лучше общаться со своими пользователями на неудачи …..

Если вы имели в виду последний шаг для проверки на успех, Вы должны использовать идентификатор заказа Google.

Второй вопрос: в случае сбоя сервер помещает orderId в таблицу, потому что Google отправляет эту информацию на сервер. Но клиент никогда не получает ответ -> orderId при ошибке (только при успехе) ??

Да, при «сбоях», включая ваш выбор «отменить» на основе какого-то бизнес-правила и неправильного ответа (например, ошибка HTTP вместо 200 / OK), вы не получите идентификатор заказа в обратный вызов сбоя. Google будет отменить приказ

Важное замечание: Если вы укажете URL для обратной передачи, ваш сервер должен ответить быстро и правильно к сообщениям HTTP POST, которые Google отправляет для каждой транзакции. В противном случае транзакция будет отменена.

Ваш обработчик ошибок будет вызван, и это будет, когда вы будете использовать уникальный идентификатор корзины — вы используете это, чтобы «идентифицировать» «корзину» / «заказ», который вы выбрали для «отмены» (вместо идентификатора заказа Google)

Надеюсь, я вас не смущаю …. просто подбрасываю идеи / с …

0

Другие решения

Других решений пока нет …