Когда я создаю сессию, данные о заполненной форме храню у себя на сайте, в базе данных, а когда проходит оплата, сохраняю информацию в другой таблице, и это здорово.
Проблема, с которой я столкнулся, заключается в том, что я не знаю, как связать информацию об успешном платеже с сеансом, который его сгенерировал.
Связывание этих данных необходимо для я, потому что я хочу отслеживать, какие сеансы на самом деле приводят к успешным платежам, чтобы я мог анализировать работу пользовательского интерфейса, отслеживать коэффициенты конверсии и анализировать факторы, которые приводят к прекращению сеанса оформления заказа.
В некоторых случаях эти вещи легко связать. Например, если сгенерирован только один сеанс и один успешный платеж, связанный с данным электронным письмом в определенный период времени, я могу просто связать их. Проблема в том, что я хочу иметь возможность справиться с (вероятно распространенным) сценарием, когда человек создает несколько сеансов и прекращает их. В этом сценарии я не могу связать платеж с самым последним сеансом, связанным с электронным письмом, поскольку возможно, что один клиент создаст два сеанса, но завершит платеж в первом, созданном ранее сеансе.
Я не могу понять, как получить доступ к session_id из объекта Payment_intent, который возвращается в мой вебхук. Некоторые мысли, которые у меня были о том, как это возможно сделать, включают в себя:
- Прослушивание какого-либо другого события в моем сценарии веб-перехватчика, которое может произойти, что, возможно, позволило бы мне свяжите две записи.
- Передача метаданных в сеанс, например уникально сгенерированного идентификатора, а затем доступ к этим же метаданным из объекта Payment_intent. Однако, прочитав документацию Stripe, я не могу понять, как работают метаданные, и даже передаются ли метаданные из сеанса в объект pay_intent (в документации это явно не указано и не объяснено, а тот факт, что session_id не передается, заставляет меня интересно, будут ли метаданные переданы вообще). Я бы предпочел не использовать это решение, поскольку оно потребовало бы дополнительного шага по созданию уникального идентификатора перед созданием сеанса, что потребовало бы дополнительной работы с моей стороны, а также сделало бы мой код более сложным и потребовало бы больше усилий. вызовы базы данных и другие потенциальные шаги, которые могут пойти не так (сейчас я генерирую сеанс, а затем сохраняю информацию в ответ на успешное создание сеанса), но я мог бы с этим мириться, если действительно нет лучших вариантов.
Если вы дадите мне пример кода, я бы предпочел увидеть его на PHP, если это возможно, но вам вообще не нужно показывать мне какой-либо код; просто дать мне абстрактное или общее представление о том, как это сделать, было бы достаточно, и я мог бы придумать детали кодирования самостоятельно.
Подробнее здесь: https://stackoverflow.com/questions/699 ... d-a-paymen
Мобильная версия