【问题标题】:Paymill: Do a subscription and later get the subscriptions and corresponding transactions via client_id (PHP)Paymill:进行订阅,然后通过 client_id (PHP) 获取订阅和相应的交易
【发布时间】:2013-04-16 08:10:31
【问题描述】:

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

现在我有几个问题在这里或 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 的文档中并没有真正解释这些细节

【问题讨论】:

    标签: php transactions subscription paymill


    【解决方案1】:

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

    2) 您可以请求 GET 指定的客户端,其中包括该客户端拥有的所有订阅。看到这个: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 调用。

    【讨论】:

      猜你喜欢
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 2020-03-06
      相关资源
      最近更新 更多