Google Wallet: хранение идентификаторов заказов в базе данных с помощью PHP

При создании подписки я регистрирую orderID который создается в базе данных, намереваясь ссылаться на него позже для обработки отмены postback, Моя отмена postback кажется, никогда не работает, однако.

мой postback сохраняет первоначальный заказ при его создании, а затем пытается отозвать его при отмене и обновить базу данных, но orderID немного отличается и не может обновиться должным образом.

Это orderID который был сохранен непосредственно из декодированного JWT в базе данных:

GWDG_S.886160e8-49b6-4f92-b485-9787c4cb4c06.0..0

Это orderID который отправляется в соответствии с firebug в консоли при отмене подписки:

GWDG_S.886160e8-49b6-4f92-b485-9787c4cb4c06.0.

Это orderID который отправляется по электронной почте пользователю, отменяющему подписку:

GWDG_S.886160e8-49b6-4f92-b485-9787c4cb4c06

Я не уверен, что здесь происходит. Как мне вести учет этих изменений?

Любой вклад приветствуется! Спасибо!

2 ответа

Решение

Не могу воспроизвести... в моей песочнице:

Покупка по подписке

На тестовой веб-странице:

окно предупреждения javscript


Кошелек песочницы покупателя:

покупатель кошелек песочница


Данные обратной передачи

Это отладочное письмо, которое я отправляю себе, показывая покупку и последующие отмены обратной передачи


скриншот электронной почты


Покупатели получают квитанции с "увеличивающимся" номером транзакции, который вы видите (если только я не исправлен Googler) каждый раз, когда их подписка продлевается -

например, 5-го обновления [...]6a6c4.0..5


Пример отмены обратной передачи за период времени:

длительная отмена подписки

Похоже, вам нужно нормализовать orderID до последнего формата. Для этого конкретного случая подойдет следующее регулярное выражение.

preg_match('([^\.]+\.[^\.])\.', $orderID, $matches);
$orderID = $matches[1];
Другие вопросы по тегам