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

如何在PayPal advanced中创建定期配置文件,paypal,Paypal,我已经使用paypal网站支付标准实施了定期支付。我遵循的步骤是初始设置ExpressCheckout->GetExpresscheckout->DoExpressCheckout->CreateReccuringPayments配置文件。代码如下所示 public static PayPalRedirect ExpressCheckout() { NameValueCollection values = new NameValueCollection();

我已经使用paypal网站支付标准实施了定期支付。我遵循的步骤是初始设置ExpressCheckout->GetExpresscheckout->DoExpressCheckout->CreateReccuringPayments配置文件。代码如下所示

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"]);
        }
    }
一旦成功,响应将指向我的成功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,我在live中使用的api凭据是PayPal advanced business account。因此,我的问题是:

1) 我的代码会和paypal高级凭证的代码一样工作吗? 2) 在paypal advanced中创建重复配置文件的步骤是否相同?我需要贝宝快捷结账和信用卡交易付款

任何帮助都将不胜感激


提前感谢

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

好,我已登录PayPal manager并设置托管页面,选择布局c并发布。在我的页面中,我对payflow端点进行了api调用,并获得了我的安全令牌,我将一个Iframe加载到我的页面,它将加载我的托管页面。在那里,我用贝宝支付,稍后给我开账单,还有信用卡支付选项。使用贝宝支付选项不会将我重定向到任何地方。按钮处于禁用状态。如何设置此按钮的url。它提到了paypal托管的页面,但我可以看到3个布局,我们可以从中选择一个。我的理解不正确吗?我不想为第一笔仅用于获取账单协议id的交易向用户收费。你知道怎么做吗?因为据我所知,贝宝将尝试在第一笔交易中向用户收费。