2013-04-16 2 views
0

Я написал сценарий для нашего приложения, чтобы позволить пользователям делать подписки на продукт (ежемесячно или ежегодно)Paymill: Сделайте подписку, а затем получите подписки и соответствующие транзакции через client_id (PHP)

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

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

Это мой код:

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

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

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

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

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

ответ

0

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

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

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

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

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

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

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