如何在 PayPal 高级中创建定期配置文件

Posted

技术标签:

【中文标题】如何在 PayPal 高级中创建定期配置文件【英文标题】:How to Create a recurring profile in PayPal advanced 【发布时间】:2013-08-13 17:47:53 【问题描述】:

我已经使用贝宝网站付款标准实施了定期付款。我遵循的步骤是初始 SetExpressCheckout-> GetExpresscheckout->DoExpressCheckout->CreateReccuringPayments Profile。代码如下 SetExpressCheckout

public static PayPalRedirect ExpressCheckout()
    
        NameValueCollection values = new NameValueCollection();

        values["METHOD"] = "SetExpressCheckout";
        values["RETURNURL"] = PayPalSettings.ReturnUrl;
        values["CANCELURL"] = PayPalSettings.CancelUrl;
        values["PAYMENTACTION"] = "Sale";
        values["CURRENCYCODE"] = "USD";
        values["BUTTONSOURCE"] = "XYZ";
        values["USER"] = PayPalSettings.Username;
        values["PWD"] = PayPalSettings.Password;
        values["SIGNATURE"] = PayPalSettings.Signature;
        values["SUBJECT"] = "";
        values["VERSION"] = "51.0";
        values["AMT"] = PayPalSettings.OrderAmount;
        values["L_BILLINGTYPE0"] = "RecurringPayments";
        values["L_BILLINGAGREEMENTDESCRIPTION0"] = "abcd";

        values = Submit(values);

        string ack = values["ACK"].ToLower();

        if (ack == "success" || ack == "successwithwarning")
        
            return new PayPalRedirect
            
                Token = values["TOKEN"],
                Url = String.Format("https://0/cgi-bin/webscr?cmd=_express-checkout&token=1",
                   PayPalSettings.CgiDomain, values["TOKEN"])
            ;
        
        else
        
            throw new Exception(values["L_LONGMESSAGE0"]);
        
    

OnSuccess 响应将命中我的成功 url。在那里,我使用以下代码创建了我的重复配置文件。

 public ActionResult Success(string token)

    bool isSuccess = false;
    GetExpressCheckout getExpressCheckout = new GetExpressCheckout();
    GetExpressCheckoutDetailsResponseType getExpressCheckoutResponse = getExpressCheckout.ECGetExpressCheckoutCode(token);

    if (getExpressCheckoutResponse.Ack == AckCodeType.Success)
    
        ExpressCheckout expressCheckout = new ExpressCheckout();
        DoExpressCheckoutPaymentResponseType doExpressCheckoutResponse = expressCheckout.DoExpressCheckoutPayment
                                                    (
                                                        token,
                                                        getExpressCheckoutResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerID,
                                                        PayPalSettings.OrderAmount,
                                                        PaymentActionCodeType.Sale,
                                                        CurrencyCodeType.USD
                                                    );

        if (doExpressCheckoutResponse.Ack == AckCodeType.Success)
        
            //create Recurring Payment Profile
            CreateRecurringPaymentsProfile createRecurringPaymentsProfile = new CreateRecurringPaymentsProfile();
            CreateRecurringPaymentsProfileResponseType recurringPaymentProfileResponse = createRecurringPaymentsProfile.CreateRecurringPaymentsProfileCode(
                                                                                            token,
                                                                                            doExpressCheckoutResponse.Timestamp.AddDays(7),
                                                                                            PayPalSettings.OrderAmount,
                                                                                            1,
                                                                                            BillingPeriodType.Week,
                                                                                            CurrencyCodeType.USD
                                                                                            );
            if (recurringPaymentProfileResponse.Ack == AckCodeType.Success)
            
                //Transaction is successfull. 
                //insert record database
            
        
    

   

在沙盒环境中一切正常。当我搬家时,我的客户说这在实时模式下不起作用。因此,在询问时据说他已升级到 PayPal Advanced,而我在现场使用的 api 凭据是 paypal 高级商业帐户。所以我的问题是:

1) 我的代码是否与使用 paypal 高级凭据的代码相同? 2) 在 paypal 高级中创建重复配置文件的步骤是否相同?我需要 paypal express checkout 和信用卡交易来付款吗?

任何帮助将不胜感激。

提前致谢

【问题讨论】:

【参考方案1】:

步骤会略有不同。快速概述如下,您首先需要对 Payflow 端点进行 API 调用以生成您的安全令牌。这也是您传递参数的地方,这些参数表明您想要为 Express Checkout 设置定期付款。然后,一旦您取回令牌,您会将买家重定向到 Payflow 托管页面以完成付款。完成此操作后,您可以使用为客户创建的计费协议 ID 创建定期计费配置文件。

【讨论】:

好的,我已经登录到 PayPal 管理器并设置了我的托管页面,我选择了 Layout c 并发布它。从我的页面中,我向支付流端点发出了我的 api 调用,并获得了我的安全令牌,我将 iframe 加载到我的页面并加载了我的托管页面。我用贝宝付款,稍后向我收费,那里有信用卡付款选项。使用贝宝付款选项不会将我重定向到任何地方。该按钮处于禁用状态。如何设置此按钮的 url。提到了贝宝托管页面,但我可以看到 3 种布局,我们可以从中选择一种。我的理解不正确吗? 我不想为仅用于获取计费协议 ID 的第一笔交易向用户收费。知道怎么做吗?因为据我了解,Paypal 将尝试在第一笔交易中向用户收费。

以上是关于如何在 PayPal 高级中创建定期配置文件的主要内容,如果未能解决你的问题,请参考以下文章

停止从贝宝支付贝宝定期付款

前八个月的 Paypal 定期资料费用试用金额

使用 paypal 高级而不是 paypal pro 定期付款

Paypal Express 结帐:如何创建定期配置文件?

如何使用 SDK 对 PayPal 定期付款配置文件进行计费

如何配置paypal定期付款IPN url