我现在使用的是 go fiber ,我知道的是这家伙用的是 fasthttp 。
是这样的,我现在要解析支付宝返回来的回调。我发现 fiber 解析出来都是空的,但其它有两三个字段是有的:
{ "notify_time": null, "notify_type": null, "notify_id": null, "app_id": null, "charset": [ "utf-8" ], "version": [ "1.0" ], "sign_type": null, "sign": [ "CPwn0wkSwa7qjV+k8/RHywHyPpL7kdmadp6QSZuw+NJe5vQ8vgKJHtLKMOA8RxPTY+BWhwEqN86F3RrDU0x6gj2UttN6qOauL4ZOer7KanWmmDEjnIR5YLqPibAbo8FyuCwtNQsUXsC8A8DxjfmJg5bTyEXxcF4UMFCvDfcC55eY+UVkcu0dt6KjLag+mUOMj/+PA5KBARkegfDi0yW4J78pv5Fgb9lD1u5bM9xEHDxOt1Xo6Jf63cnsWm5ccZ+cBQFQFKr4mSUAp0gIP1o1kzvUVJqr9ISK2HFGK8ED26OjuH8bWrtcepd08I8MxvZ170oRP1in9Hpk8wEwDZjyqw==" ], "trade_no": null, "out_trade_no": null, "out_biz_no": null, "buyer_id": null, "buyer_logon_id": null, "trade_status": null } fiber 的代码如下:
var input common.AlipayNotifyResponse if err := c.BodyParser(&input); err != nil { fmt.Println("failed to parse JSON input") return errors.New("failed to parse JSON input") } 然后我就怀疑是 fiber 的问题,试了一下用原生的 net/http 写:
func handlePost(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set("Access-Control-Allow-Headers", "*") r.ParseForm() fmt.Println(utils.PretyJson(r.Form)) } 发现是可以解析的:
{ "app_id": [ "902100sdff" ], "auth_app_id": [ "902100sdff" ], "buyer_id": [ "902100sdff" ], "buyer_pay_amount": [ "8.00" ], "charset": [ "utf-8" ], "fund_bill_list": [ "[{\"amount\":\"8.00\",\"fundChannel\":\"ALIPAYACCOUNT\"}]" ], "gmt_create": [ "2023-08-06 17:48:28" ], "gmt_payment": [ "2023-08-06 17:48:33" ], "invoice_amount": [ "8.00" ], "notify_id": [ "202308060122217483409dd7380500601571" ], "notify_time": [ "2023-08-06 17:48:34" ], } 现在已经有好几个接口用 fiber 写好了,不太想大改。就想问问为什么 fiber 会解析不了?有没有哪里是我要注意的
