Paymill:订阅并稍后通过client_id(PHP)获取订阅和相应的交易

时间:2013-04-16 08:10:32

标签: php transactions subscription paymill

我为我们的应用程序编写了一个脚本,允许用户订阅产品(每月或每年)

现在我有一些我在这里或paymill文档中找不到的问题:

1st:当我为拥有所有必要信息的用户创建订阅时,如何确定订阅是否成功?是否没有初始交易或仅在间隔之后进行交易?例如:

这是我的代码:

        $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的客户端订阅(按客户端ID过滤)?如果是这样的话:我怎样才能得到相应的交易(检查他们的状态)?

3.问题:如果对于订阅,我将如何测试未来的付款验证是否有效?我的意思是,据我所知,我们必须检查我们的网站,如果已经付款并且成功,如果我们选择1个月的间隔,我们可以说每个月。我们如何验证这一点?

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

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

1 个答案:

答案 0 :(得分:0)

1)如果您尚未指定试用期,则Paymill将在您创建订阅后立即执行交易。此交易具有“订阅#....”的描述并具有状态(关闭为“成功”)。您可以在驾驶舱中通过在那里创建一些测试数据来测试此行为。如果您指定了试用期,则在进行交易后获得反馈的唯一方法是使用webhooks。您可以订阅“subscription.succeeded”和“subscription.failed”事件。

2)您可以发出请求以获取指定的客户端,其中包括此客户端具有的所有订阅。请参阅: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调用。