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) 定期的なプロファイルを作成する手順は、ペイパル アドバンスドでも同じですか? 支払いにはペイパルエクスプレスチェックアウトとクレジットカード決済の両方が必要ですか?
どんな助けでも大歓迎です。
前もって感謝します