Paymill:进行订阅,然后通过client_id (PHP)获取订阅和相应的事务


Paymill: Do a subscription and later get the subscriptions and corresponding transactions via 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和一切:我没有得到他们在$subscriptionsObject->get();为例。我有一种感觉,我可能会得到一个积极的回应,但他们并没有得救?我如何验证这一点呢?还是我在代码中忘记了什么?

2。问:我可以只使用client_id(按client_id筛选)获取客户端的订阅吗?如果是这样,那么我如何获得相应的事务(以检查其状态)?

3。问:我如何测试,如果订阅,未来的付款验证将工作?我的意思是,据我所知,我们必须在我们的网站上检查,如果付款已经完成并且是成功的,假设每个月如果我们选择一个月的间隔。我们如何验证这一点呢?

4。考虑事务:根据文档:与订阅关联的事务在其描述字段中具有订阅ID。但我不能在$transactionsObject->get()中找到任何这些情况;知道我做错了什么吗?

如果有人能给我指出正确的方向,甚至给我一个示例代码,我会很高兴,因为我确实发现,这些细节并没有真正在paymill

的文档中解释

1)如果您没有指定试用期,那么Paymill将在您创建订阅后立即执行交易。此事务的描述为"订阅#....",并具有状态(关闭表示"成功")。您可以在驾驶舱上通过创建一些测试数据来测试这种行为。如果您指定了试用期,那么在交易完成后获得反馈的唯一方法就是使用webhook。你可以订阅"订阅"。"成功"answers"订阅"。失败"事件。

2)您可以请求GET一个指定的客户端,其中包括该客户端的所有订阅。参见:https://www.paymill.com/de-de/dokumentation/referenz/api-referenz/#client-object

3)正如第一点所暗示的,你可以创建一个webhook:-)

4)我建议只是浏览到驾驶舱(https://app.paymill.com/de-de,不需要登录或注册),并像这样设置数据:

  • 优惠1,无试用期,42欧元
  • 客户端1,具有有效的付款方式(使用4111 1111 1111 1111信用卡号码)
  • 客户1对报价1的订阅

完成第三步后,"事务"页面上应该有一个事务。事务的描述将包含类似于"订阅#sub_f6cd00e38309d80e0cad报价1"的内容

如果你的代码没有生成一个包含这样描述的事务,那么就有问题了,你需要检查你的代码所做的HTTP调用是什么。