PayPal API 权限请求将用户带到 PayPal 主页
PayPal API permissions request takes user to PayPal home page
我正在使用 PayPal Permissions SDK (Classic/NVP) 寻求第三方支付授权。
第一次有人点击我的按钮将他们重定向到 PayPal 以登录并授权他们最终到达 PayPal 主页的请求。如果他们返回并再次点击我的按钮,这次它会起作用并将他们带到正确的 PayPal 页面。
这是我的代码:
RequestPermissionsRequest rp = new RequestPermissionsRequest();
rp.scope = new List<string>();
rp.scope.Add("EXPRESS_CHECKOUT");
rp.callback = "my return url here";
rp.requestEnvelope = new RequestEnvelope("en_US");
RequestPermissionsResponse rpr = null;
PermissionsService service = new PermissionsService(PayPalClassicHelpers.Configuration.GetAcctAndConfig());
rpr = service.RequestPermissions(rp);
Response.Redirect("https://www.paypal.com/webscr&cmd=_grant-permission&request_token=" + rpr.token);
这会将他们重定向到 PayPal URL:
https://www.paypal.com/webscr&cmd=_grant-permission&request_token=***rpr.token value***
但他们第一次来到这里:
https://www.paypal.com/us/home
看请求头和响应头,第一次看到这个:
- 获取:https://www.paypal.com/webscr&cmd=_grant-permission&request_token=***
- 响应:HTTP/2.0 200 OK
- 各种CSS、JS和图片请求
- POST: https://www.paypal.com/auth/validatecaptcha
- 响应:HTTP/2.0 302 找到
位置:/webscr&cmd=_grant-permission&request_token=***
- 获取:https://www.paypal.com/webscr&cmd=_grant-permission&request_token=***
- 响应:HTTP/2.0 302 找到
地点:https://www.paypal.com/home
在后续请求中没有 POST 到 https://www.paypal.com/auth/validatecaptcha
。
我已经在几个网络和计算机上试过了,结果总是一样。
有没有人遇到过这种情况并知道原因和解决办法?
我不确定,但我在测试和调试我的 PayPal 定期计费代码时遇到了同样的问题。
在我的情况下,大多数情况下是因为用户已经使用其他帐户登录并且 PayPal 在浏览器中保存了一些 cookie。
这可能是saved cookies的问题和开发过程中经常使用的各种账号,比如sandbox seller和sandbox buyer。
检查一下,看看问题是否仍然存在。
同样,这些只是我的经验,如果您的真实用户确实在生产应用程序中遇到过这种情况,那么它可能完全是另外一回事。
只需使用'?' webscr.
后的符号
例如改
https://www.paypal.com/webscr&cmd=_grant-permission&request_token=
至
https://www.paypal.com/webscr?cmd=_grant-permission&request_token=
我正在使用 PayPal Permissions SDK (Classic/NVP) 寻求第三方支付授权。
第一次有人点击我的按钮将他们重定向到 PayPal 以登录并授权他们最终到达 PayPal 主页的请求。如果他们返回并再次点击我的按钮,这次它会起作用并将他们带到正确的 PayPal 页面。
这是我的代码:
RequestPermissionsRequest rp = new RequestPermissionsRequest();
rp.scope = new List<string>();
rp.scope.Add("EXPRESS_CHECKOUT");
rp.callback = "my return url here";
rp.requestEnvelope = new RequestEnvelope("en_US");
RequestPermissionsResponse rpr = null;
PermissionsService service = new PermissionsService(PayPalClassicHelpers.Configuration.GetAcctAndConfig());
rpr = service.RequestPermissions(rp);
Response.Redirect("https://www.paypal.com/webscr&cmd=_grant-permission&request_token=" + rpr.token);
这会将他们重定向到 PayPal URL:
https://www.paypal.com/webscr&cmd=_grant-permission&request_token=***rpr.token value***
但他们第一次来到这里:
https://www.paypal.com/us/home
看请求头和响应头,第一次看到这个:
- 获取:https://www.paypal.com/webscr&cmd=_grant-permission&request_token=***
- 响应:HTTP/2.0 200 OK
- 各种CSS、JS和图片请求
- POST: https://www.paypal.com/auth/validatecaptcha
- 响应:HTTP/2.0 302 找到 位置:/webscr&cmd=_grant-permission&request_token=***
- 获取:https://www.paypal.com/webscr&cmd=_grant-permission&request_token=***
- 响应:HTTP/2.0 302 找到 地点:https://www.paypal.com/home
在后续请求中没有 POST 到 https://www.paypal.com/auth/validatecaptcha
。
我已经在几个网络和计算机上试过了,结果总是一样。
有没有人遇到过这种情况并知道原因和解决办法?
我不确定,但我在测试和调试我的 PayPal 定期计费代码时遇到了同样的问题。
在我的情况下,大多数情况下是因为用户已经使用其他帐户登录并且 PayPal 在浏览器中保存了一些 cookie。
这可能是saved cookies的问题和开发过程中经常使用的各种账号,比如sandbox seller和sandbox buyer。
检查一下,看看问题是否仍然存在。
同样,这些只是我的经验,如果您的真实用户确实在生产应用程序中遇到过这种情况,那么它可能完全是另外一回事。
只需使用'?' webscr.
后的符号例如改
https://www.paypal.com/webscr&cmd=_grant-permission&request_token=
至
https://www.paypal.com/webscr?cmd=_grant-permission&request_token=