我正在使用cybersource无声命令在magento内一页结账。我想做ajax post到"https://testsecureacceptance.cybersource.com/silent/pay/“。但它给了我以下错误:- "XMLHttpRequest无法加载https://testsecureacceptance.cybersource.com/silent/pay/。请求的资源上不存在' access -Control-Allow- Origin‘标头。因此不允许访问源。响应的状态代码为403“
我想要特定于cybersource的答案。如果除ajax之外还有其他选择,请让我知道
请找到我的代码:-
var url = jQuery("#post_url").val();
var access_key=jQuery("#access_key").val();
var profile_id=jQuery("#profile_id").val();
var signed_field_names=jQuery("#signed_field_names").val();
var unsigned_field_names=jQuery("#unsigned_field_names").val();
var bill_to_forename=jQuery("#bill_to_forename").val();
var bill_to_surname=jQuery("#bill_to_surname").val();
var bill_to_email=jQuery("#bill_to_email").val();
var bill_to_phone=jQuery("#bill_to_phone").val();
var bill_to_address_line1=jQuery("#bill_to_address_line1").val();
var bill_to_address_city=jQuery("#bill_to_address_city").val();
var bill_to_address_state=jQuery("#bill_to_address_state").val();
var bill_to_address_country=jQuery("#bill_to_address_country").val();
var bill_to_address_postal_code=jQuery("#bill_to_address_postal_code").val();
var signed_date_time=jQuery("#signed_date_time").val();
var locale=jQuery("#locale").val();
var card_type=jQuery("#cybersource_cc_type").val();
var card_number=jQuery("#cybersource_cc_number").val();
var card_expiry_date=jQuery("#cybersource_expiration").val();
var params ='access_key='+access_key+ '&profile_id='+profile_id+ '&signed_field_names='+signed_field_names+ '&bill_to_forename='+bill_to_forename+ '&bill_to_surname='+bill_to_surname+ '&bill_to_email='+bill_to_email+'&bill_to_phone='+bill_to_phone+'&bill_to_address_line1='+bill_to_address_line1+'&bill_to_address_city='+bill_to_address_city+'&bill_to_address_state='+bill_to_address_state+'&bill_to_address_country='+bill_to_address_country+'&bill_to_address_postal_code='+bill_to_address_postal_code+'&signed_date_time='+signed_date_time+'&locale='+locale+'&card_type='+card_type+'&card_number='+card_number+'&card_expiry_date='+card_expiry_date;
//alert(url);
var http= new XMLHttpRequest();
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send(params);
//Send the proper header information along with the request
http.onreadystatechange = function() {//IT NEVER COMES BACK TO THIS SECTION
if(http.readyState == 4) {
alert(http.responseText);
console.log("I came back");
}
}发布于 2016-10-19 12:15:39
我不相信CyberSource端点允许AJAX调用。由于不支持AJAX调用,因此CyberSource端点没有配置CORS,因此在进行AJAX调用时会看到错误。
根据documentation for Silent Order POST,表单应该被提交,并且用户被重定向。一旦付款被处理,CyberSource会将用户重定向到适当的页面。这与用于AJAX安全接受网络/移动的流程非常相似,而与Adyen、Braintree或CyberSource使用的流程完全不同(它们确实会进行AJAX调用,其响应应由您的服务器处理)。
发布于 2017-01-16 12:49:35
HTTP静默订单发布是一种CyberSource表单发布,就像您点击表单上的提交按钮并将其发布到端点一样。它不支持通过AJAX将数据发送到。
这里要使用的正确API是CyberSource Flex API。这是为AJAX调用而设计的,类似于条纹。您可以在Visa拥有的CyberSource的Visa Developer Portal上找到此API的文档。
https://stackoverflow.com/questions/36885924
复制相似问题