Paypal定期付款,更新结算周期为

时间:2015-05-29 05:38:07

标签: php laravel paypal

我正在使用laravel 4.2。我正在开发一个提供视频服务的项目。要求是将PayPal付款网关与recurring profile进行整合。

虽然我曾使用recurring profile努力创建PayPal classical API,但我几乎实现了目标。但我很难不知道您无法在已创建的定期配置文件中更新结算周期的日期

现在我感到无助。

我是一个为用户提供视频服务的项目。基本思路是,在注册时,用户选择订阅计划并插入credit card详细信息。由于是按月订阅,因此每月付款应为auto-renewed

在两者之间,如果用户upgrades计划得更高,那么他将charged获得difference新订阅金额以及当前有效的当月订阅金额和他的结算周期必须从今天到下个月更新。

例如,有三种类型的订阅计划如下:

Basic for $10/month, 
Economy  for $20/month and 
Premium for $30/month

如果用户已basic plan 1st May为[{1}}订阅了$10,则billing cycle将从1st May to 1st June设置,依此类推。每个月他将自动收取10美元的费用,直到他取消订阅或停止再次发布他的个人资料。

现在,在5th May之间,他将他的计划升级为经济(提供更多视频)actual amount of $20,他将charged for difference = $20-$10 = $10 for current month(即May) ,他的billing cycle现在将从5th May to 5th June设置,他将charged $20 each month from 5th June automatically

此外,还应要求用户在第一次订阅时插入credit card详细信息only once,之后对于任何升级或重复,他应not要求插入信用卡。

所有这些过程只能在我的网站上完成,用户不应该被重定向到PayPal网站。

任何人都知道如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

这部分包括:Paypal和计费逻辑。

Paypal允许用户预先授权公司从PayPal中扣除任意金额。暴雪和MyUS.com就是两个例子。用户一次性授权$ 0.00,然后网站可以使用相同的授权来收取任何金额 - 请考虑使用它。我不确定这个功能是从头顶调出来的。

编辑:它称为结算协议(/参考交易)。

就结算逻辑而言,当您在周期中升级用户时,请勿更改周期日期。如果他们在1月1日注册,请在每个月的第一天开始计费。相反,如果用户升级,请执行以下操作:

  1. 更新您网站上的结算资料,以便在下一个付款周期中收取更高的金额
  2. 立即向用户收取按比例分配的金额,以弥补差额。
  3. 在您的示例中:我在2015年5月1日注册了10美元/月的服务。 5月5日,我订阅了4天后,我决定升级到每月20美元。所以现在你做那两件事。设置我的个人资料,在2015年6月1日扣除20美元,然后计算升级的按比例分配金额:

    此结算周期还剩26天,占周期的83.8%。现在收取8.38美元($ 10 diff * 0.838)以获得下一个定价等级的全部好处。如果我在本月晚些时候进行升级,比如在15日,那么我将进入周期的50%。如果我在30日升级,那么在结算周期中剩下1天(3.2%),按比例分配的费用为0.32美元。

    如果我在2月5日再次降级,反之亦然。将我的结算资料更改为3月1日收取10美元,然后计算出按比例​​折扣。我在28天的周期中进行了4天,所以我需要在周期的剩余时间(24天)内退款,这是85.7%,所以我立即在我的账户上获得8.57美元的信用额度,只收取1.43美元3月1日。

    如果我等到2月27日降级到每月10美元,那么只剩下3.5%的周期,我只能获得0.35美元的信用额度。

答案 1 :(得分:0)

如果我在2月5日再次降级,反之亦然。将我的结算资料更改为3月1日收取10美元,然后计算出按比例​​折扣。我在28天的周期中进行了4天,所以我需要在周期的剩余时间(24天)内退款,这是85.7%,所以我立即在账户上获得8.57美元的信用额度,只收取1.43美元3月1日。

如果我等到2月27日降级到每月10美元,那么剩下的周期只剩下3.5%,我只能获得0.35美元的信用额度。