Немедленно создайте первую транзакцию для подписки Paymill

Итак, мы внедрили подписки Paymill в наше приложение. Проблема в том, что после того, как пользователь отправляет информацию о своей кредитной карте и мы создаем подписку на сервере, первая транзакция не выполняется немедленно. Только через несколько минут мы получаем первый веб-хук «subscription.succeeded», обозначающий первую транзакцию. Он выполняет свою работу, но как мы можем получить первую транзакцию одновременно с созданием подписки? Через преавторизацию?

Дело в том, что ни на веб-сайте Paymill, ни в документации по API не так много информации о таких случаях использования.


person Bogdan Zurac    schedule 04.04.2015    source источник


Ответы (1)


Вы правы, Webhook не позволяет вам получить мгновенный ответ на ваш вызов API.

Однако вы можете получить мгновенный ответ, создав транзакцию:

curl https://api.paymill.com/v2.1/transactions \
-u <YOUR_PRIVATE_KEY>: \
-d "amount=4200" \
-d "currency=EUR" \
-d "payment=<CLIENT_PAYMENT>" \
-d "client=<YOUR_CLIENT>" \
-d "description=Transaction"

Ответ на транзакцию мгновенно возвращается на ваш сервер, что позволяет вам без промедления информировать своего клиента.

Если транзакция прошла успешно, вы также хотите списать средства со своего клиента в будущем, создав подписку:

curl https://api.paymill.com/v2.1/subscriptions \
-u <YOUR_PRIVATE_KEY>: \
-d "client=<YOUR_CLIENT>" \
-d "payment=<CLIENT_PAYMENT>" \
-d "amount=4200" \
-d "currency=EUR" \
-d "interval=1 week,monday" \
-d "name=Example Subscription" \
-d "period_of_validity=2 YEAR" \
-d "start_at=<SUBSCRIPTION_STARTING_DATE"

Параметр start_at должен содержать дату начала подписки (в будущем):

текущая_дата + интервал_подписки (например, 1 неделя)

Если этот параметр не установлен, вы будете списывать средства с кредитной карты вашего клиента дважды в один и тот же день!

person Nicolas Dieumegarde    schedule 07.04.2015
comment
Понял. Не думал об этом таким образом. Большое спасибо за вашу идею. Если что-то не получится, я вернусь к вам. Но я почти уверен, что так и будет. Добрый день! - person Bogdan Zurac; 07.04.2015
comment
Причина, по которой это необходимо сделать, заключается в том, что вызов API создания подписки уже возвращает ответ на создание объекта вашей подписки (а не транзакцию). Второй ответ на предстоящий вызов транзакции, сделанный PAYMILL, может быть возвращен только Webhook, поскольку он не инициируется вашим сервером. Надеюсь, это поможет. Добрый день! - person Nicolas Dieumegarde; 08.04.2015