Asp.net mvc 具有520003权限的链接付款身份验证失败
在获得用户许可后,我无法执行链接支付。我在获取访问令牌和访问令牌机密方面没有问题 代码应该是这样工作的:用户(个人类型的沙盒帐户)授权主要接收者(业务类型的沙盒帐户)从他的帐户中取钱。 主接收机向第二接收机发送一部分和 代码是用ASP.NET MVC编写的,但我想它与框架无关,我使用的是PayPalAdaptivePaymentsSDK和PayPerpermissionSsdk 我想在沙盒环境中使用它进行测试 我假设它与应用程序id有关,我将非常感谢您的逐步解释 以下是我获取所有凭证的方式: 我登录到我的开发者帐户。Asp.net mvc 具有520003权限的链接付款身份验证失败,asp.net-mvc,paypal,Asp.net Mvc,Paypal,在获得用户许可后,我无法执行链接支付。我在获取访问令牌和访问令牌机密方面没有问题 代码应该是这样工作的:用户(个人类型的沙盒帐户)授权主要接收者(业务类型的沙盒帐户)从他的帐户中取钱。 主接收机向第二接收机发送一部分和 代码是用ASP.NET MVC编写的,但我想它与框架无关,我使用的是PayPalAdaptivePaymentsSDK和PayPerpermissionSsdk 我想在沙盒环境中使用它进行测试 我假设它与应用程序id有关,我将非常感谢您的逐步解释 以下是我获取所有凭证的方式: 我
account1.Username,account1.Password,account1.Signature
-沙箱->账户->我选择支付的主要接收方(业务类型账户)->API凭证
应用程序ID-“APP-80W284485P519543T” 在配置文件中,我将模式指定为“沙盒” 我使用相同的配置来执行付款 然后我想执行以下代码,在payResponse中,我得到错误ID 520003“身份验证失败。API凭据不正确。”
公共类许可控制器:控制器
{
私人自适应支付服务(U自适应支付服务);
公共行动结果索引()
{
ViewBag.AccessToken=PayPalConfig.AccessToken;
ViewBag.AccessTokenSecret=PayPalConfig.AccessTokenSecret;
返回视图();
}
公共许可证控制员()
{
_adaptivePaymentService=新的AdaptivePaymentsService(PayPalConfig.GetConfig());
}
公共操作结果GetPermission()
{
RequestPermissionsRequest rp=新的RequestPermissionsRequest();
rp.scope=新列表();
rp.scope.添加(“快速检验”);
Dictionary config=PayPalConfig.GetConfig();
rp.callback=”http://localhost:42072/Permission/GetAccessToken";
rp.requestEnvelope=新的PayPal.Permissions.Model.requestEnvelope(“en_US”);
RequestPermissionsResponse rpr=null;
许可服务=新许可服务(配置);
rpr=服务请求权限(rp);
字符串confirmPermissions=”https://www.sandbox.paypal.com/webscr&cmd=_grant-许可和请求_令牌=“+rpr.token;
返回重定向(确认权限);
}
公共操作结果GetAccessToken()
{
Uri=Request.Url;
Dictionary config=PayPalConfig.GetConfig();
var gat=new GetAccessTokenRequest();
gat.token=HttpUtility.ParseQueryString(uri.Query).Get(“请求令牌”);
gat.verifier=HttpUtility.ParseQueryString(uri.Query).Get(“验证码”);
gat.requestEnvelope=新的PayPal.Permissions.Model.requestEnvelope(“en_US”);
GetAccessTokenResponse gats=null;
var服务=新权限服务(配置);
gats=service.GetAccessToken(gat);
_adaptivePaymentService.SetAccessToken(gats.token);
_adaptivePaymentService.SetAccessTokenSecret(gats.tokenSecret);
PayPalConfig.AccessToken=\u adaptivePaymentService.getAccessToken();
PayPalConfig.AccessTokenSecret=_adaptivePaymentService.getAccessTokenSecret();
返回操作(“索引”);
}
公共行动结果链支付()
{
ReceiverList ReceiverList=新的ReceiverList();
receiverList.receiver=新列表();
接收器二次接收器=新接收器(1.00M);
secondary receiver.email=“mizerykordia6662-facilitator@gmail.com";
接收者列表。接收者。添加(第二接收者);
接收机主接收机=新接收机(5.00M);
primaryReceiver.email=”mizTestMerchant@test.com";
primaryReceiver.primary=true;
接收方列表。接收方。添加(主要接收方);
PayPal.AdaptivePayments.Model.RequestEnvelope RequestEnvelope=新PayPal.AdaptivePayments.Model.RequestEnvelope(“en_US”);
字符串actionType=“支付”;
字符串returnUrl=”http://localhost:42072/Home/Index";
字符串取消URL=”https://devtools-paypal.com/guide/ap_chained_payment/dotnet?cancel=true";
字符串currencyCode=“USD”;
_adaptivePaymentService.SetAccessToken(PayPalConfig.AccessToken);
_adaptivePaymentService.SetAccessTokenSecret(PayPalConfig.AccessTokenSecret);
PayRequest PayRequest=新的PayRequest(requestEnvelope,actionType,
cancelUrl、currencyCode、receiverList、returnUrl);
//这里断了
PayResponse PayResponse=\u adaptivePaymentService.Pay(payRequest);
PaymentDetailsRequest PaymentDetailsRequest=新的PaymentDetailsRequest(新的PayPal.AdaptivePayments.Model.RequestEnvelope(“en-US”);
paymentDetailsRequest.payKey=payResponse.payKey;
SetPaymentOptions请求paymentOptions=新建SetPaymentOptions请求()
{payKey=payResponse.payKey};
_adaptivePaymentService.SetPaymentOptions(paymentOptions);
PaymentDetails响应PaymentDetails响应=\u adaptivePaymentService.PaymentDetails(paymentDetailsRequest);
ExecutePaymentRequestExec=新的ExecutePaymentRequest(新的PayPal.AdaptivePayments.Model.RequestEnvelope(“en-US”)、paymentDetailsRequest.payKey);
ExecutePaymentResponse响应=_adaptivePaymentService.ExecutePayment(exec);
返回操作(“索引”);
}
}
public class PermissionController : Controller
{
private AdaptivePaymentsService _adaptivePaymentService;
public ActionResult Index()
{
ViewBag.AccessToken = PayPalConfig.AccessToken;
ViewBag.AccessTokenSecret = PayPalConfig.AccessTokenSecret;
return View();
}
public PermissionController()
{
_adaptivePaymentService = new AdaptivePaymentsService(PayPalConfig.GetConfig());
}
public ActionResult GetPermission()
{
RequestPermissionsRequest rp = new RequestPermissionsRequest();
rp.scope = new List<string>();
rp.scope.Add("EXPRESS_CHECKOUT");
Dictionary<string, string> config = PayPalConfig.GetConfig();
rp.callback = "http://localhost:42072/Permission/GetAccessToken";
rp.requestEnvelope = new PayPal.Permissions.Model.RequestEnvelope("en_US");
RequestPermissionsResponse rpr = null;
PermissionsService service = new PermissionsService(config);
rpr = service.RequestPermissions(rp);
string confirmPermissions = "https://www.sandbox.paypal.com/webscr&cmd=_grant-permission&request_token=" + rpr.token;
return Redirect(confirmPermissions);
}
public ActionResult GetAccessToken()
{
Uri uri = Request.Url;
Dictionary<string, string> config = PayPalConfig.GetConfig();
var gat = new GetAccessTokenRequest();
gat.token = HttpUtility.ParseQueryString(uri.Query).Get("request_token");
gat.verifier = HttpUtility.ParseQueryString(uri.Query).Get("verification_code");
gat.requestEnvelope = new PayPal.Permissions.Model.RequestEnvelope("en_US");
GetAccessTokenResponse gats = null;
var service = new PermissionsService(config);
gats = service.GetAccessToken(gat);
_adaptivePaymentService.SetAccessToken(gats.token);
_adaptivePaymentService.SetAccessTokenSecret(gats.tokenSecret);
PayPalConfig.AccessToken = _adaptivePaymentService.getAccessToken();
PayPalConfig.AccessTokenSecret = _adaptivePaymentService.getAccessTokenSecret();
return RedirectToAction("Index");
}
public ActionResult ChainedPayment()
{
ReceiverList receiverList = new ReceiverList();
receiverList.receiver = new List<Receiver>();
Receiver secondaryReceiver = new Receiver(1.00M);
secondaryReceiver.email = "mizerykordia6662-facilitator@gmail.com";
receiverList.receiver.Add(secondaryReceiver);
Receiver primaryReceiver = new Receiver(5.00M);
primaryReceiver.email = "mizTestMerchant@test.com";
primaryReceiver.primary = true;
receiverList.receiver.Add(primaryReceiver);
PayPal.AdaptivePayments.Model.RequestEnvelope requestEnvelope = new PayPal.AdaptivePayments.Model.RequestEnvelope("en_US");
string actionType = "PAY";
string returnUrl = "http://localhost:42072/Home/Index";
string cancelUrl = "https://devtools-paypal.com/guide/ap_chained_payment/dotnet?cancel=true";
string currencyCode = "USD";
_adaptivePaymentService.SetAccessToken(PayPalConfig.AccessToken);
_adaptivePaymentService.SetAccessTokenSecret(PayPalConfig.AccessTokenSecret);
PayRequest payRequest = new PayRequest(requestEnvelope, actionType,
cancelUrl, currencyCode, receiverList, returnUrl);
// it breaks here
PayResponse payResponse = _adaptivePaymentService.Pay(payRequest);
PaymentDetailsRequest paymentDetailsRequest = new PaymentDetailsRequest(new PayPal.AdaptivePayments.Model.RequestEnvelope("en-US"));
paymentDetailsRequest.payKey = payResponse.payKey;
SetPaymentOptionsRequest paymentOptions = new SetPaymentOptionsRequest()
{ payKey = payResponse.payKey };
_adaptivePaymentService.SetPaymentOptions(paymentOptions);
PaymentDetailsResponse paymentDetailsRespons = _adaptivePaymentService.PaymentDetails(paymentDetailsRequest);
ExecutePaymentRequest exec = new ExecutePaymentRequest(new PayPal.AdaptivePayments.Model.RequestEnvelope("en-US"), paymentDetailsRequest.payKey);
ExecutePaymentResponse response = _adaptivePaymentService.ExecutePayment(exec);
return RedirectToAction("Index");
}
}