Полосатые веб-хуки выполняются до обновления соответствующих данных - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь получить веб-крючок Stripe для события payment_succeeded в подписке.Я хочу убедиться, что оплата прошла успешно, прежде чем я изменю данные на моем сервере, которые указывают на подписку Stripe.

Это выглядит так:

stripe_response = @purchase_service.charge_stripe
purchase = @purchase_service.create_purchases(stripe_response)

Итак, в первой строке мой purchase_service - это полоса зарядки.Во второй строке я создаю новую запись Subscription и использую ответ Stripe для установки stripe_subscription_id на новую запись.

Моя проблема в том, что как только заряд Stripe проходит, половинавремя, когда наступает событие invoice.payment_succeeded для подписки Stripe до того, как в записи подписки моего сервера будет установлено значение stripe_subscription_id.Так что в моем контроллере webhooks, когда я пытаюсь найти свою подписку по stripe_subscription_id, она еще не была установлена.

Я попытался обернуть его в блок начала / восстановления и повторить попытку, если не удается найти подписку.Но все, что делает, это делает действие покупки более продолжительным.Поэтому я предполагаю, что это означает, что действие webhook прерывает действие моего контроллера и обрабатывается в том же потоке выполнения?(поправьте меня, если я ошибаюсь)

Если это так, как лучше всего убедиться, что действие webhook запускается отдельно?Я попытался запустить его в новом потоке, но все, что он делает - работает отдельно с теми же данными, что и при создании нового потока.Я знаю, что это, вероятно, параллелизм 101, но я никогда не тратил время на слишком глубокое погружение.Это то, что я могу исправить во время выполнения?Или мне нужно перенастроить мой сервер?(Пума)

...