如何解决ajax发布并获取Coldfusion文件设置值后获取失败
我正在尝试在我的网站上编写一个带区检出组件。这使用了“按需支付”选项,因此我需要一种通过ajax发送总价值数据的方法。
const url = '/shop/api/test.cfm';
const sendCheckoutData = () => {
const data = {};
data.total = $('.total').val() * 100;
console.log(data);
if(!isNaN(data.total)) {
$.ajax({
url,type: 'POST',data: JSON.stringify(data),contentType: 'application/json',success(data) {
console.log('checkoutData sent');
returnCheckoutData();
},error(status) {
console.log('checkoutData not sent',status.statusText);
}
});
}
}
const returnCheckoutData = () => {
$.ajax({
url,type: 'GET',success(data) {
console.log('checkoutData returned');
},error(status) {
console.log('checkoutData not returned',status.statusText);
}
});
}
<cfset requestBody = toString( getHttpRequestData().content ) />
<!--- Double-check to make sure it's a JSON value. --->
<cfif isJSON( requestBody )>
<cfset VARIABLES.checkoutData = deserializeJSON( requestBody )>
</cfif>
<cfscript>
secretKey = "MY_SECRET_KEY";
crlf = chr(13)&chr(10);
headers = "Content-Type: application/x-www-form-urlencoded"&crlf;
headers &= "Authorization: Bearer "&secretKey&crlf;
body = "success_url="&URLEncodedFormat("https://slackwise.org.uk/shop/checkout/complete.cfm")
&"&cancel_url="&URLEncodedFormat("https://slackwise.org.uk/shop/checkout/fail.cfm")
&"&payment_method_types[]=card"
&"&line_items[0][amount]=#VARIABLES.checkoutData.total#"
&"&line_items[0][currency]=gbp"
&"&line_items[0][quantity]=1"
&"&line_items[0][name]=widget";
</cfscript>
<cfx_http5 out="http5" method="post" url="https://api.stripe.com/v1/checkout/sessions" headers="#headers#" body="#body#" ssl="5">
<cfdump var="#deserializeJSON(http5)#">
在发布请求中,似乎VARIABLES.checkoutData
设置为正确的金额,并且正在传递给正文中的&line_items[0][amount]
。
在ajax发布成功后,我想执行一个get请求以返回新值并生成一个带区令牌,但这是失败的。
我得到以下调试信息
Message: Element CHECKOUTDATA.TOTAL is undefined in VARIABLES.
我不确定是否要重置var。
我也尝试过创建cfc,并将我的requestBody函数以及整个函数包装在组件中(通过cfx_http5调用)。
我不确定100%的contentType对于get请求是否正确,cfm文件的默认contentType是什么?我尝试删除它,并将其设置为multipart / form-data,但是可能我的方法不正确。
非常感谢任何帮助。
编辑
发布请求cfdump
struct
allow_promotion_codes null
amount_subtotal 2400
amount_total 2400
billing_address_collection null
cancel_url https://slackwise.org.uk/shop/checkout/fail.cfm
client_reference_id null
currency gbp
customer null
customer_email null
display_items
array
1
struct
amount 2400
currency gbp
custom
struct
description null
images null
name widget
quantity 1
type custom
id cs_test_removed
livemode NO
locale null
Metadata
struct [empty]
mode payment
object checkout.session
payment_intent pi_1HSjSJIMlFPwHnRlo3DnfC0N
payment_method_types
array
1 card
payment_status unpaid
setup_intent null
shipping null
shipping_address_collection null
submit_type null
subscription null
success_url https://slackwise.org.uk/shop/checkout/complete.cfm
total_details
struct
amount_discount 0
amount_tax 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。