Paymill: сделать подписку, а затем получить подписки и соответствующие транзакции через client_id (PHP)

Я написал сценарий для нашего приложения, чтобы пользователи могли подписываться на продукт (ежемесячно или ежегодно).

Теперь у меня есть несколько вопросов, которые я не могу найти ни здесь, ни в документации Paymill:

1-й: Когда я создаю подписку для пользователя со всей необходимой информацией, как я могу узнать, была ли подписка успешной? Не существует начальной транзакции или транзакции выполняются только ПОСЛЕ интервала? Например:

Это мой код:

        $description = $_POST['client-email'];
        $email = $_POST['client-email'];
        $clientsObject = new Services_Paymill_Clients(PAYMILL_API_KEY, PAYMILL_API_HOST);
        $client        = $clientsObject->create(array(
            'email'       => $email,
            'description' => $description
            ));

        $params = array(
            'token' => 'justatesttokenthatiputhere',
            'client' => $client['id']
        );

        $paymentsObject = new Services_Paymill_Payments(PAYMILL_API_KEY, PAYMILL_API_HOST);

        $creditcard = $paymentsObject->create($params);
        //die("Amount: ".$_POST['card-amount-int']." Domain: ".$subdomain);
        $params = array(
            'amount'   => $_POST['card-amount-int'],       // E.g. "4200" for 42.00 EUR
            'currency' => 'EUR',        // ISO 4217 
            'interval' => '1 '.$_POST['interval-selected'],      // Options: "week", "month" and "year"
            'name'     => $_POST['clientId']
        );


        $offersObject  = new Services_Paymill_Offers(PAYMILL_API_KEY, PAYMILL_API_HOST);
        $offer         = $offersObject->create($params);

        //die(print_r($offer));

        $params = array(
            'client'   => $client['id'],
            'offer'    => $offer['id'],
            'payment'  => $creditcard['id']
        );
        //die(print_r($offer));
        $subscriptionsObject = new Services_Paymill_Subscriptions(PAYMILL_API_KEY, PAYMILL_API_HOST);
        $subscription        = $subscriptionsObject->create($params);

        $clients = $clientsObject->getOne($client['id']);

        $transactions = $transactionsObject->get();

        $subscriptions = $subscriptionsObject->get();

У меня такое ощущение, что например client_id, subscriptions_id и все: я не получаю их в $subscriptionObject->get(); например. У меня такое ощущение, что я могу получить положительный ответ, но что они не спасены? Как я могу это проверить? Или я что-то забыл в своем коде?

2.Вопрос: Могу ли я получить подписки клиента только с client_id (фильтр по client_id)? И если так: как я могу получить соответствующие транзакции (чтобы проверить их статус)?

3. Вопрос: Как я могу проверить, будет ли работать проверка будущей оплаты для подписки? Я имею в виду, насколько я понял, мы должны проверять на нашем сайте, был ли платеж произведен и был успешным, скажем, каждый месяц, если мы выбираем интервал 1 месяц. Как мы можем это проверить?

4.Рассматривая транзакции: Согласно документации: Транзакции, связанные с подпиской, имеют идентификатор подписки в поле описания. Но я не могу найти ни одного из этих случаев в $ TransactionsObject->get(); Есть идеи, что я делаю не так?

Я был бы рад, если бы кто-то указал мне верное направление или даже дал мне пример кода, как я нахожу, что эти детали на самом деле не объясняются в документации Paymill

1 ответ

1) Если вы не указали пробный период, Paymill выполнит транзакцию, как только вы создадите подписку. Эта транзакция имеет описание "Subscription#...." и имеет статус (закрыт как "успешный"). Вы можете проверить это поведение в кабине, создав там некоторые тестовые данные. Если вы указали пробный период, единственный способ получить обратную связь после совершения транзакции - использовать веб-хуки. Вы можете подписаться на события "subscription.succeeded" и "subscription.failed".

2) Вы можете сделать запрос на получение указанного клиента, который включает в себя все подписки, которые есть у этого клиента. Смотрите это: https://www.paymill.com/de-de/dokumentation/referenz/api-referenz/

3) Как указано в первом пункте, вы можете создать веб-крючок:-)

4) Я бы предложил просто зайти в кокпит ( https://app.paymill.com/de-de, не нужно входить в систему или зарегистрироваться) и настроить данные следующим образом:

  • Предложение 1, без пробного периода, 42 EUR
  • Клиент 1, с допустимым методом оплаты (используйте номер кредитной карты 4111 1111 1111 1111)
  • Подписка для клиента 1 на предложение 1

После завершения третьего шага на странице "Транзакции" должна быть сделка. Описание транзакции будет содержать что-то вроде этого "Subscription#sub_f6cd00e38309d80e0cad Offer 1"

Если ваш код не генерирует транзакцию, которая содержит подобное описание, значит, что-то не так, и вам нужно проверить, какие HTTP-вызовы выполняются вашим кодом.

Другие вопросы по тегам