PayPal 付款定义:试用和常规

Posted

技术标签:

【中文标题】PayPal 付款定义:试用和常规【英文标题】:PayPal Payment Definition: Trial & Regular 【发布时间】:2021-02-13 14:33:00 【问题描述】:

有些人可能已经注意到 PayPal 的 SDK 文档至少可以说很差,给开发人员带来了问题。

我目前是关于账单计划payment_definitions

我开发了一个折扣功能,作为回报,它会为用户提供指定金额的折扣。我希望这个折扣只适用于第一个月。在创建付款定义对象时,关于计费计划的糟糕文档让我感到困惑。是否可以同时定义试用和定期付款定义?

请参阅下面的代码,了解我目前正在使用的示例。

        if(Wo_DiscountAvailable($discount))
            // (total-(total/100*percentage))
            $dc_total = ($total-(Wo_DiscountPercentage($discount)/100*$total));
            $tDefinition = new \PayPal\Api\PaymentDefinition();
            $tDefinition->setName('Regular Payments user' . $wo['user']['id'])->setType('TRIAL')
                ->setFrequency($p_type)->setFrequencyInterval('1')
                ->setCycles('1')
                ->setAmount(new \PayPal\Api\Currency(array(
                'value' => $dc_total,
                'currency' => $wo['config']['paypal_currency']
            )));     
            $paymentDefinition = new \PayPal\Api\PaymentDefinition();
            $paymentDefinition->setName('Regular Payments user' . $wo['user']['id'])->setType('REGULAR')
                ->setFrequency($p_type)->setFrequencyInterval('1')
                ->setCycles('47')
                ->setAmount(new \PayPal\Api\Currency(array(
                'value' => $total,
                'currency' => $wo['config']['paypal_currency']
            )));       
         else 
            // Set billing plan definitions
            $paymentDefinition = new \PayPal\Api\PaymentDefinition();
            $paymentDefinition->setName('Regular Payments user' . $wo['user']['id'])->setType('REGULAR')
                ->setFrequency($p_type)->setFrequencyInterval('1')
                ->setCycles('48')
                ->setAmount(new \PayPal\Api\Currency(array(
                'value' => $total,
                'currency' => $wo['config']['paypal_currency']
            )));
        

        if(Wo_DiscountAvailable($discount))
            $plan->setPaymentDefinitions(array(
                $tDefinition, $paymentDefinition
            ));
         else 
            $plan->setPaymentDefinitions(array(
                $paymentDefinition
            ));
        

以上包括函数 Wo_DiscountAvailable 和 Wo_DiscountPercentage - 这两个都有效

如果可以使用,前一个函数返回真或假,折扣返回折扣值。

非常感谢。

【问题讨论】:

【参考方案1】:

如果您使用PayPal-php-SDK 似乎是这种情况,请停止这样做。它是deprecated,它使用的计费计划与Subscriptions API 不兼容,如果您想要集成的话。

目前的订阅 API 没有 SDK;如果您正在进行基于服务器的集成,请使用直接 HTTPS 调用,例如 PHP 的 curl。

如果您想要一个智能订阅按钮来调用您的服务器以进行 createSubscription 和激活,以便您可以在数据库中保存它的记录,这里有一个指南:PayPal Smart Subscribe server side

【讨论】:

以上是关于PayPal 付款定义:试用和常规的主要内容,如果未能解决你的问题,请参考以下文章

Paypal 经常性:立即收取试用金额?

订阅按钮。初始付款而不是试用?

贝宝试用定期付款未开始

付款后修改 PayPal Express Checkout 自定义参数

Paypal 高级付款和 PayFlow 链接与重复付款

计费计划的多次付款定义