繁体   English   中英

使用PHP的PayPal API-一次性付款,然后重复使用不同金额的付款

[英]PayPal API with PHP - single payment, then recurring payment with different amount

我正在使用以下代码将付款请求发送到PayPal的API( $paypal类中的$field数组用于构建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。

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

这是Express Checkout的文档:
试用期反复进行快速结帐

&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

这是直接定期付款的文档
直接定期付款的试用期

看来您正在使用Payments Standard。 你能确认吗?

如果是这样,则pp_MSI_Jenn给出的答案将不适用。 就是说,如果您对PHP类(显然是这样)感到满意,我建议您切换到Express Checkout。 该类库将使Express Checkout对您来说非常简单。

您将使用以下API。

既然您提到要一次性收取199美元,然后再收取每年29美元的费用,那么实际上您无需搞定试用期。 相反,您将仅在CRPP请求中使用INITAMT参数来处理$ 199。 然后,您将使用常规的AMT,BILLINGPERIOD,BILLINGFREQUENCY等设置$ 29 /年,但是将PROFILESTARTDATE设置为从当前日期开始的1年。 这样,第一笔29美元的付款将不会在1年内发生,但是在创建配置文件后,您将立即获得199美元。

如果您更愿意使用Payments Standard,那么您实际上可以将试用期作为pp_MSI_Jenn提到的使用Express Checkout的一种变通方法。 您可以将试用期设置为1年,并使用该时期的$ 199,然后将常规期限设置为$ 29 / year。

有关更多信息,请参见Sandard变量列表,特别是定期付款部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM