VBA调用支付二维码API遇400错误:请求头或JSON格式排查
邮件合并调用支付API生成二维码的400错误排查与解决
我需要为社区成员生成新年缴费提醒的邮件合并信函,计划调用支持HTTP POST请求的服务器API,生成可被手机支付APP识别的预填支付信息二维码。现有基于Excel(搭配Word邮件合并)的VBA代码如下,传入payee参数时可正常获取二维码:
Sub DownloadQRCode(ByVal myURL As String, ByVal LocalFileName As String) Dim msXML As New MSXML2.ServerXMLHTTP60 Dim myStream As New ADODB.Stream msXML.Open "POST", myURL, False msXML.setRequestHeader "Content-Type", "application/json" msXML.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" msXML.send "{""payee"":""987654321""}" If msXML.Status = 200 Then myStream.Open myStream.Type = adTypeBinary myStream.Write (msXML.responseBody) myStream.SaveToFile LocalFileName, adSaveCreateOverWrite myStream.Close End If Set msXML = Nothing Set myStream = Nothing End Sub
但将msXML.send语句改为msXML.send "{""message"":{""value"":""Sven_Svensson"",""editable"":""false""}}"时,返回400(Bad Request)错误。经排查,问题并非Content-Type请求头设置错误,而是JSON格式及参数有效性存在问题,已解决的错误点包括:
- 传入的手机号/账号必须是平台认可的有效账号
- JSON中的布尔值不能加引号,正确写法应为
"editable":false - 数字类型的参数不能加引号,需以纯数字格式传递
- 定义JSON数组时必须使用方括号
[]包裹,不能误用其他括号
内容的提问来源于stack exchange,提问作者OlManVBA
相关产品推荐
相关产品推荐

