0

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

现在我有几个问题在这里或 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(通过client_id过滤)获取客户端的订阅吗?如果是这样:我怎样才能获得相应的交易(检查他们的状态)?

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

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

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

4

1 回答 1

0

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

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

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

4) 我建议只浏览 Cockpit ( https://app.paymill.com/de-de,无需登录或注册) 并设置如下数据:

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

完成第三步后,“交易”页面上应该会有一笔交易。交易描述将包含类似“Subscription#sub_f6cd00e38309d80e0cad Offer 1”的内容

如果您的代码未生成包含此类描述的事务,则说明有问题,您需要检查代码进行的 HTTP 调用是什么。

于 2013-06-11T17:43:34.023 回答