0

Paypal Web サイトの支払い基準を使用して、定期的な支払いを既に実装しています。私が従った手順は、最初の SetExpressCheckout-> 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"]);
        }
    }

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 アドバンスにアップグレードしたと言われ、私がライブで使用している API 資格情報はペイパル アドバンス ビジネス アカウントです。だから私の質問は:

1) 私のコードは、paypal の高度な認証情報と同じように機能しますか? 2) 定期的なプロファイルを作成する手順は、ペイパル アドバンスドでも同じですか? 支払いにはペイパルエクスプレスチェックアウトとクレジットカード決済の両方が必要ですか?

どんな助けでも大歓迎です。

前もって感謝します

4

1 に答える 1

1

手順が少し異なります。簡単な概要は次のとおりです。まず、Payflow エンドポイントへの API 呼び出しを行い、セキュア トークンを生成します。これは、エクスプレス チェックアウトの定期支払いを設定することを示すパラメーターを渡す場所でもあります。その後、トークンが戻ってきたら、購入者を Payflow がホストするページにリダイレクトして、支払いを完了します。これが完了すると、顧客用に作成された請求契約 ID を使用して、定期請求プロファイルを作成できます。

于 2013-08-12T15:45:48.583 に答える