Classic ASP集成PayPal Checkout API:获取form-data请求变量
解决Classic ASP中读取PayPal Checkout请求参数的问题
一、直接修复前端请求,让Request.Form正常获取参数
你的前端代码虽生成了form-data格式的payload,但存在两个问题:未设置正确的请求头,且encodeFormData的实现可能不符合标准。直接使用原生FormData对象,让浏览器自动处理请求头和编码,后端就能用Request.Form直接读取参数:
var postData = new FormData(); postData.append('paypal_order_check', 1); postData.append('order_id', orderData.id); fetch('paypal_checkout_validate.asp', { method: 'POST', body: postData });
修改后,后端直接用以下代码获取参数:
Dim paypalCheck, orderId paypalCheck = Request.Form("paypal_order_check") orderId = Request.Form("order_id")
二、若坚持用aspJSON解析,这样提取参数
你之前的核心矛盾是:前端发送的是form-data格式,而非JSON,aspJSON解析非JSON格式的请求体本身就不合理。如果已经通过aspJSON读取了请求体,需按组件语法访问数据:
- 确保正确加载原始请求体:
Set objJSON = New aspJSON objJSON.Load(Request.BinaryRead(Request.TotalBytes))
- 从
data属性中提取参数:
Dim paypalOrderCheck, orderId paypalOrderCheck = objJSON.data("paypal_order_check") orderId = objJSON.data("order_id")
三、排查Request.Form无法读取的深层原因
如果不想修改前端,需验证两个关键点:
- 检查
encodeFormData生成的payload是否符合标准form-data格式,包括正确的边界符、参数编码 - 在ASP后端输出
Request.TotalBytes值,确认请求体是否正常到达;再用Request.BinaryRead读取原始内容,对比前端发送的payload是否一致
内容的提问来源于stack exchange,提问作者kneidels
相关产品推荐
相关产品推荐

