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, subscribes_id и все такое: я не получаю их в $subscriptionsObject->get(); Например. У меня ощущение, что я могу получить положительный ответ, но они не спасены? Как я могу это проверить? Или я, может быть, что-то забыл в своем коде?

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

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

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

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


person Laurentius    schedule 16.04.2013    source источник


Ответы (1)


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

2) Вы можете сделать запрос на ПОЛУЧЕНИЕ указанного клиента, который включает в себя все подписки, которые есть у этого клиента. См. это: https://www.paymill.com/de-de/dokumentation/referenz/api-referenz/#client-object

3) Как подсказали в первом пункте, можно создать вебхук :-)

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

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

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

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

person jpkrohling    schedule 11.06.2013