我在此处关注PayPal Rest教程:https://code.tutsplus.com/articles/paypal-integration-part-part-part-part-2-part-2-paypal-rest-rest-api--cms-22917
我在我的控制器方法(下图(中有一个,我相信这是引起问题的重定向线,以前的行可以伸出去PayPal以获取ID毫无问题。payment.getAppRovalUrl((检索错误消息中列出的URL:
public ActionResult CreatePayment()
{
var userId = _userRepository.LoggedInUserId();
var cart = _cartRepository.GetCart(userId);
var payment = PayPalRepository.CreatePayment(GetBaseUrl(),
"sale",cart);
return Redirect(payment.GetApprovalUrl());
}
此操作方法是从paypal按钮JavaScript调用的:
payment: function(resolve, reject) {
// Set up the payment here, when the buyer clicks on the button
var env = this.props.env;
var client = this.props.client;
var CREATE_PAYMENT_URL = 'http://localhost:3259/Payment/CreatePayment';
return paypal.request.post(CREATE_PAYMENT_URL)
.then(function (data) {
console.log('data: ' + data);
resolve(data.paymentID);
})
.catch(function (err) { reject(err); })
console.log语句永远不会执行,浏览器控制台显示此错误: XMLHTTPREQUEST无法加载https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&take-ptoke-ptoken=c-7EL205553GB692634H。在请求的资源上没有"访问控制"标头。
我的控制器标记为AllowCrosssitejson属性(在Stackoverflow上找到,将通过参考作者进行更新(,如下:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var ctx = filterContext.RequestContext.HttpContext;
var origin = ctx.Request.Headers["Origin"];
var allowOrigin = !string.IsNullOrWhiteSpace(origin) ? origin : "*";
ctx.Response.AddHeader("Access-Control-Allow-Origin", allowOrigin);
ctx.Response.AddHeader("Access-Control-Allow-Headers", "*");
ctx.Response.AddHeader("Access-Control-Allow-Credentials", "true");
base.OnActionExecuting(filterContext);
}
我在做什么错误或不在做,以通过此错误?
解决方案是服务器端代码只能返回付款。ID为JSON,而不是授权URL。