PayPal php 产品试用期「建议收藏」

PayPal php 产品试用期

大家好,又见面了,我是全栈君。

一.提供试用期

使用试用期,使订户可以在常规计费周期开始之前以免费或打折的价格试用您的产品。试用期结束后,订阅的常规计费期开始。每个计划最多可以有两个试用期。

以下样本请求显示了如何提供试用期。创建计划时,请使用这些示例来调整代码。

 

示例:音乐服务

本示例设置具有以下特征的试用期:

  • 第一个月$ 0。
  • 试用期后每月15美元。
curl -v –X POST https://api-m.sandbox.paypal.com/v1/billing/plans \
-H "Accept: application/json" \
-H "Authorization: Bearer <Access-Token>" \
-H "Content-Type: application/json" \
-H "PayPal-Request-Id: PLAN-18062020-002" \
-d '{
     "name": "Premium Music Plus",
    "description": "A premium plan with music download feature",
    "product_id": "PROD-5RN21878H3527870P",
    "billing_cycles": [
        {
            "frequency": {
                "interval_unit": "MONTH",
                "interval_count": 1
            },
            "tenure_type": "TRIAL",
            "sequence": 1,
            "total_cycles": 1,
            "pricing_scheme": {
                "fixed_price": {
                    "value": "0",  
                    "currency_code": "USD"
                }
            }
        },
        {
            "frequency": {
                "interval_unit": "MONTH",
                "interval_count": 1
            },
            "tenure_type": "REGULAR",
            "sequence": 2,
            "total_cycles": 0,
            "pricing_scheme": {
                "fixed_price": {
                    "value": "15",
                    "currency_code": "USD"
                }
            }
        }
    ],
    "payment_preferences": {
        "auto_bill_outstanding": true,
        "payment_failure_threshold": 1
    }
 }'
 

示例:在线教程服务

本示例设置具有以下特征的试用期:

  • 首周$ 0免费试用。
  • 接下来的3周,每周5美元的优惠试用期。
  • 试用期后每周10美元。
curl -v –X POST https://api-m.sandbox.paypal.com/v1/billing/plans \
-H "Accept: application/json" \
-H "Authorization: Bearer <Access-Token>" \
-H "Content-Type: application/json" \
-H "PayPal-Request-Id: PLAN-18062020-003" \
-d '{
     "name": "Music Tutorial Premium Plus",
    "description": "Offering a premium music tutorial with download feature",
    "product_id": "PROD-5RN21878H3527870P",
    "billing_cycles": [
        {
            "frequency": {
                "interval_unit": "WEEK",
                "interval_count": 1
            },
            "tenure_type": "TRIAL",
            "sequence": 1,
            "total_cycles": 1,
            "pricing_scheme": {
                "fixed_price": {
                    "value": "0",
                    "currency_code": "USD"
                }
            }
        },
        {
            "frequency": {
                "interval_unit": "WEEK",
                "interval_count": 1
            },
            "tenure_type": "TRIAL",
            "sequence": 2,
            "total_cycles": 3,
            "pricing_scheme": {
                "fixed_price": {
                    "value": "5",
                    "currency_code": "USD"
                }
            }
        },
        {
            "frequency": {
                "interval_unit": "WEEK",
                "interval_count": 1
            },
            "tenure_type": "REGULAR",
            "sequence": 3,
            "total_cycles": 0,
            "pricing_scheme": {
                "fixed_price": {
                    "value": "10",
                    "currency_code": "USD"
                }
            }
        }
    ],
    "payment_preferences": {
        "auto_bill_outstanding": true,
        "payment_failure_threshold": 1
    }
 }`

 

二 .订阅和试用按钮

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">

    <!-- Identify your business so that you can collect the payments. -->
    <input type="hidden" name="business" value="alice@mystore.com">

    <!-- Specify a Subscribe button. -->
    <input type="hidden" name="cmd" value="_xclick-subscriptions">
    <!-- Identify the subscription. -->
    <input type="hidden" name="item_name" value="Alice's Weekly Digest">
    <input type="hidden" name="item_number" value="DIG Weekly">

    <!-- Set the terms of the regular subscription. -->
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="a3" value="5.00">
    <input type="hidden" name="p3" value="1">
    <input type="hidden" name="t3" value="M">

    <!-- Set recurring payments until canceled. -->
    <input type="hidden" name="src" value="1">

    <!-- Display the payment button. -->
    <input type="image" name="submit"
           src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribe_LG.gif"
           alt="Subscribe">
    <img alt="" width="1" height="1"
         src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" >
</form>

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">

    <!-- Identify your business so that you can collect the payments. -->
    <input type="hidden" name="business" value="alice@mystore.com">

    <!-- Specify a Subscribe button. -->
    <input type="hidden" name="cmd" value="_xclick-subscriptions">

    <!-- Identify the subscription. -->
    <input type="hidden" name="item_name" value="Alice's Weekly Digest">
    <input type="hidden" name="item_number" value="DIG Weekly">

    <!-- Set the terms of the 1st trial period. -->
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="a1" value="0">
    <input type="hidden" name="p1" value="7">
    <input type="hidden" name="t1" value="D">

    <!-- Set the terms of the 2nd trial period. -->
    <input type="hidden" name="a2" value="5.00">
    <input type="hidden" name="p2" value="3">
    <input type="hidden" name="t2" value="W">

    <!-- Set the terms of the regular subscription. -->
    <input type="hidden" name="a3" value="49.99">
    <input type="hidden" name="p3" value="1">
    <input type="hidden" name="t3" value="Y">

    <!-- Set recurring payments until canceled. -->
    <input type="hidden" name="src" value="1">

    <!-- Display the payment button. -->
    <input type="image" name="submit"
           src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribe_LG.gif"
           alt="Subscribe">
    <img alt="" width="1" height="1"
         src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" >
</form>
</body>
</html>

页面图示

PayPal php 产品试用期「建议收藏」

点击后效果图:

PayPal php 产品试用期「建议收藏」

代码示例1;

 /**
  * Create billing plan at paypal
  *
  * @param $name
  * @param $description
  * @param $amount
  * @param string $returnUrl
  * @param string $returnCancel
  * @param int $setupFee
  * @param bool $isTrial
  * @param string $currency
  * @param string $planType
  * @param string $definitionName
  * @param string $definitionType
  * @param string $definitionFrequency
  * @param string $definitionFrequencyInterval
  * @param string $definitionCycles
  * @param string $trialDefinitionName
  * @param string $trialDefinitionType
  * @param string $trialDefinitionFrequency
  * @param string $trialDefinitionFrequencyInterval
  * @param string $trialDefinitionCycles
  * @param string $trialDefinitionAmount
  * @return string
  */
function create($name, $description, $amount, $returnUrl = '', $returnCancel = '', $setupFee = 0, $isTrial = false, $currency = 'USD', $planType = 'fixed',
                $definitionName = 'Regular Payments', $definitionType = 'REGULAR', $definitionFrequency = 'Month', $definitionFrequencyInterval = '1', $definitionCycles = '12',
                $trialDefinitionName = 'Trial Period', $trialDefinitionType = 'TRIAL', $trialDefinitionFrequency = '0', $trialDefinitionFrequencyInterval = '0', $trialDefinitionCycles = '0',
                $trialDefinitionAmount = '0')
{
    $plan = new Plan();
    $plan->setName($name)->setDescription($description)->setType($planType);
    $paymentDefinition = new PaymentDefinition();
    $paymentDefinition->setName($definitionName)
        ->setType($definitionType)
        ->setFrequency($definitionFrequency)
        ->setFrequencyInterval($definitionFrequencyInterval)
        ->setCycles($definitionCycles)
        ->setAmount(new Currency(array('value' => $amount, 'currency' => $currency)));
    $plan->setPaymentDefinitions(array($paymentDefinition));

    if ($isTrial) {
        $paymentDefinitionTrial = new PaymentDefinition();
        $paymentDefinitionTrial->setName($trialDefinitionName)
            ->setType($trialDefinitionType)
            ->setFrequency($trialDefinitionFrequency)
            ->setFrequencyInterval($trialDefinitionFrequencyInterval)
            ->setCycles($trialDefinitionCycles)
            ->setAmount(new Currency(array('value' => $trialDefinitionAmount, 'currency' => $currency)));
        $plan->addPaymentDefinition($paymentDefinitionTrial);
    }

    $merchantPreferences = new MerchantPreferences();
    $merchantPreferences->setReturnUrl($returnUrl)
        ->setCancelUrl($returnCancel)
        ->setAutoBillAmount("yes")
        ->setInitialFailAmountAction("CONTINUE")
        ->setMaxFailAttempts("0")
        ->setSetupFee(new Currency(array('value' => $setupFee, 'currency' => $currency)));

    $plan->setPaymentDefinitions(array($paymentDefinition));
    $plan->setMerchantPreferences($merchantPreferences);
    $result = $plan->create($this->getAdapter()->getApiContext());
    if ($result) {
        return ['plan' => $result, 'id' => $result->getId(), 'state' => $result->getState(), 'created' => $result->getCreateTime()];
    }
    return $result;
}

在使用使用期时;一定要记得把第一次扣费的设为0:否则每次都正常订阅的扣费

 $this->paypal->set_merchant_preferences($returnurl, $cancelurl, 'YES', 'CONTINUE', '0', 0); // $price 设置第一次订阅扣款金额***, 默认0表示不扣款
public function set_merchant_preferences($return_url, $cancel_url, $auto_bill_amount = "NO", $initial_fail_amount_action = "CANCEL",
                                             $max_fail_attempts = 0, $agreement_fees = 0)
    {

        $this->merchantPreferences = new MerchantPreferences();
        $this->merchantPreferences->setReturnUrl($return_url)
            ->setCancelUrl($cancel_url)
            ->setAutoBillAmount($auto_bill_amount)
            ->setInitialFailAmountAction($initial_fail_amount_action)
            ->setMaxFailAttempts($max_fail_attempts)
            ->setSetupFee(new Currency(array('value' => $agreement_fees, 'currency' => config_item("currency"))));
        $this->plan->setMerchantPreferences($this->merchantPreferences);
        return;
    }

参考:https://developer.paypal.com/docs/paypal-payments-standard/integration-guide/html-example-subscribe/#trial-periods

https://hotexamples.com/zh/examples/paypal.api/Plan/setPaymentDefinitions/php-plan-setpaymentdefinitions-method-examples.html

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111560.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PyCharm下使用 ipython 交互式编程「建议收藏」

    PyCharm下使用 ipython 交互式编程「建议收藏」目的:方便调试,查看中间结果,因为觉得设断点调试相对麻烦。【运行环境:macOS10.13.3,PyCharm 2017.2.4】老手:选中代码行,Alt+Shift+E。或选中,鼠标右键-ExecuteLineinConsole。新手:1、安装ipython之后,查看 PyCharm 设置,确保Console的通用设置UseIPythonifavailable选项打勾。…

    2022年8月25日
    5
  • FEC相关知识「建议收藏」

    FEC相关知识「建议收藏」1概念和原理前向纠错前向纠错也叫前向纠错码(ForwardErrorCorrection,简称FEC),是增加数据通讯可信度的方法。在单向通讯信道中,一旦错误被发现,其接收器将无权再请求传输。FEC是利用数据进行传输冗余信息的方法,当传输中出现错误,将允许接收器再建数据。常用的前向纠错码(1)电视传输专用的前向纠错码电视节目广播前向纠错采用2/3码率格形码、卷积交织

    2022年8月11日
    6
  • ThinkPHP 3.2.x多个模块使用公共Layout布局文件

    ThinkPHP 3.2.x多个模块使用公共Layout布局文件

    2021年9月8日
    57
  • 你为什么推荐java核心技术_读《java核心技术卷一》有感

    你为什么推荐java核心技术_读《java核心技术卷一》有感过去一个多月了吧 才囫囵吞枣地把这书过了一遍 话说这书也够长的 一共 706 页 我从来不是个喜欢记录的人 一直以来看什么书都是看完了就扔一边去 可能有时候有那么一点想记录下来的冲动 但算算时间太紧 很多也是有始无终 毕竟在之前研究研究程序也只是自己的一个爱好而已 但没有想到签了一个程序员的工作 唉 这老天也太捉弄人了吧 让一个学电气工程 电力电子方向 学生毕业之后去写代码 而且是与硬件完全无关的代码

    2025年8月20日
    3
  • telnet远程登录AAA认证

    telnet远程登录AAA认证R1<Huawei>system-view//进入全局配置模式[Huawei]sysnameR1//改名[R1]undoinfo-centerenable//关闭信息告警提示[R1]interfaceg0/0/0//进入g/0/0接口[R1-GigabitEthernet0/0/0]ipaddress192.168.100…

    2022年6月7日
    38
  • 分布式通信基础

    1.分布式通信基础思维导图2.IP协议2.1ICMP协议ICMP协议(InternetControlMessageProtocol),Internet控制报文协议,其作用就是探测网络

    2021年12月28日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号