使用PHP的PayPal API - 单笔付款,然后以不同金额重复付款

时间:2014-06-26 15:56:28

标签: php paypal

我使用以下代码向PayPal的API发送付款请求($field类中的$paypal数组用于构建POST请求)。这段代码工作正常。

            $paypal = new paypal_class;
        $paypal->add_field('business', $store_email);
        $paypal->add_field('return', $script_location.'?action=success&order_id='.$order_id);
        $paypal->add_field('cancel_return', $script_location.'?action=cancel');
        $paypal->add_field('notify_url', $script_location.'?action=ipn');
        $paypal->add_field('item_name_1', strip_tags(str_replace("'","",$_POST["description"])));
        $paypal->add_field('amount_1', $amount);
        $paypal->add_field('item_number_1', $item_id);
        $paypal->add_field('quantity_1', '1');
        $paypal->add_field('custom', $_SERVER['REMOTE_ADDR']);
        $paypal->add_field('upload', 1);
        $paypal->add_field('cmd', '_cart'); 
        $paypal->add_field('txn_type', 'cart'); 
        $paypal->add_field('num_cart_items', 1);
        $paypal->add_field('payment_gross', $amount);
        $paypal->add_field('currency_code', strip_tags(str_replace("'","",$_POST["currency"])));
        $paypal->submit_paypal_post(); // submit the fields to paypal

现在,让我们说$amount我发送的邮件是199美元。使用上面的代码将正确收取此金额。现在除了最初的199美元之外,我想每年收取29美元。我可以修改上面的代码(可能会发送一些额外的字段)来实现这个目标吗?

我一直在查看文档,而且我已经看到了定期结算的一些选项,但无法找到我正在寻找的选项 - 这是我的初始付款金额X,然后是金额Y的经常性付款。

2 个答案:

答案 0 :(得分:1)

您可以提供任何金额的试用期,包括0.试用期是初始付款,试用期结束后您可以设置实际订阅金额,并在特定日期开始结算。

以下是快速结账的文件:
Express Checkout Recurring with Trial Period

&TRIALBILLINGPERIOD=Month #Period of time in one trial period
&TRIALBILLINGFREQUENCY=1 #Frequency of charges, if any, during the trial period
&TRIALTOTALBILLINGCYCLES=1 #Length of trial period
&TRIALAMT=0 #Payment amount (can be 0) during the trial period
&CURRENCYCODE=USD #The currency, e.g. US dollars

以下是直接经常性付款的文件
Trial Period for Direct Recurring Payments

答案 1 :(得分:1)

您似乎正在使用Payments Standard。你能证实吗?

如果是这样,pp_MSI_Jenn给出的答案是不适用的。也就是说,如果您对PHP课程感到满意(我显然是您的话),我建议您切换到Express Checkout。This class library将使Express Checkout变得非常简单。

您将使用以下API。

既然你提到你想要一次性收取199美元,然后每年29美元,那么你实际上并不需要在试用期内收费。相反,您只需使用CRPP请求中的INITAMT参数来处理199美元。然后,您将使用常规AMT,BILLINGPERIOD,BILLINGFREQUENCY等设置$ 29 /年,但您将PROFILESTARTDATE设置为距当前日期1年。这样,第一笔29美元的付款将在1年内不会发生,但在创建个人资料时,您将立即获得199美元。

如果您更愿意坚持使用Payments Standard,那么您实际上可以利用试用期作为pp_MSI_Jenn提及的快速结账方式。您可以将试用期设置为1年,并使用该期间的199美元金额,然后将常规期间设置为每年29美元。

有关详细信息,请参阅Sandard Varaibles列表,特别是recurring payments section