指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

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会写数据
--返回--