gin框架下将微信预支付链接转base64图片流:
1.安装需要的拓展包 go get github.com/skip2/go-qrcode
2.具体实现代码
func ReturnValue(c *gin.Context) {
qrCode, err := qrcode.Encode("weixin://wxpay/bizpayurl?pr=6094umbzz", qrcode.Medium, 256)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"resp": err})
}
base64Data := base64.StdEncoding.EncodeToString(qrCode)
c.JSON(http.StatusOK,gin.H{
"code":http.StatusOK,
"message":"成功",
"data":"data:image/png;base64,"+base64Data,
})
}
小技巧:
1.如果不想返回json数据可以直接调用 c.Data 返回指定格式的数据
c.JSON(http.StatusOK,gin.H{
"code":http.StatusOK,
"message":"成功",
"data":"data:image/png;base64,"+base64Data,
})
c.Data(200,"Content-Type/image/png",qrCode)// qrCode为[]byte 类型, 直接输出图片到客户端
2.通过 fmt.Fprint 返回指定格式的数据,这个在支付宝支付的时候会用到
const (
AckSuccess = `<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>`
AckFail = `<xml><return_code><![CDATA[FAIL]]></return_code></xml>`
)
fmt.Fprint(c.Writer, AckSuccess)//直接调用这个就会返回数据给客户端,因为writer会写数据
