当前位置:网站首页>PayPal php 产品试用期「建议收藏」
PayPal php 产品试用期「建议收藏」
2022-07-19 10:48:00 【全栈程序员站长】
大家好,又见面了,我是全栈君。
一.提供试用期
使用试用期,使订户可以在常规计费周期开始之前以免费或打折的价格试用您的产品。试用期结束后,订阅的常规计费期开始。每个计划最多可以有两个试用期。
以下样本请求显示了如何提供试用期。创建计划时,请使用这些示例来调整代码。
示例:音乐服务
本示例设置具有以下特征的试用期:
- 第一个月$ 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
}
}`
参考文档: https://developer.paypal.com/docs/business/subscriptions/add-capabilities/trial-period/
二 .订阅和试用按钮
<!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="[email protected]">
<!-- 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="[email protected]">
<!-- 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>
页面图示
点击后效果图:
代码示例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://javaforall.cn/111560.html原文链接:https://javaforall.cn
边栏推荐
猜你喜欢
STM3(cubeIDE)点灯实验
win系统开机增加启动软件项
Some questions about deploying Ogg microservices
LiveDataBus核心原來如此簡單
0718 cotton yarn rose by the daily limit, and the market rebounded sharply
"Wheels" to improve development efficiency
朱松纯团队最新突破登Science头条!让AI「读懂」人类价值观
Summer vacation daily question week 6:7.11 - 7.17
System app signature JKS production and silent installation
尚乘数科美股IPO:市值30亿美元 蔡志坚收获第二家上市企业
随机推荐
Introduction to gateway
0718 cotton yarn rose by the daily limit, and the market rebounded sharply
【深度】新派LaaS协议Elephant:重振DeFi赛道发展的关键
How to prevent repeated payment of orders?
Experiment 1 static comprehensive experiment
USART串口通讯
LiveDataBus核心原來如此簡單
系统架构设计师备考经验分享:由点到面
STM3(cubeIDE)点灯实验
技术管理进阶——团队一盘散沙,怎么破?
雲原生(三十六) | Kubernetes篇之Harbor入門和安裝
固定頁脚
【Latex】PPT画图,导出emf格式,word插入emf文件并导出pdf,pdf裁剪并导出eps文件,latex插入eps文件
Cloud Native (36) | Introduction et installation de Harbor à kubernets
国际顶会OSDI首度收录淘宝系统论文,端云协同智能获大会主旨演讲推荐
Pied de page fixe
网络跟不上、软件不好使……“云面试”机会很多尴尬不少
网关Gateway的介绍(下)
"Wheels" to improve development efficiency
云原生(三十六) | Kubernetes篇之Harbor入门和安装