Gin框架对接彩虹易支付接口完整实现方案
一、基础配置
首先创建支付配置结构体,用于存储商户信息:
type PayConfig struct {
Pid int // 商户ID
Key string // 商户密钥
NotifyUrl string // 异步通知地址
ReturnUrl string // 跳转通知地址
ApiUrl string // 接口地址
}
二、支付请求实现
1. 页面跳转支付实现
func PageJumpPay(c *gin.Context) {
var req struct {
PayType string `json:"pay_type"` // alipay/wxpay/qqpay
Amount float64 `json:"amount" binding:"required"`
OrderNo string `json:"order_no" binding:"required"`
Goods string `json:"goods" binding:"required"`
}
if err := c.ShouldBind(&req); err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
params := map[string]interface{}{
"pid": config.PayCfg.Pid,
"type": req.PayType,
"out_trade_no": req.OrderNo,
"notify_url": config.PayCfg.NotifyUrl,
"return_url": config.PayCfg.ReturnUrl,
"name": req.Goods,
"money": fmt.Sprintf("%.2f", req.Amount),
}
sign := GenerateSign(params)
params["sign"] = sign
params["sign_type"] = "MD5"
// 构建form表单自动提交
html := `<html><body><form id="payForm" action="https://pay.javait.cn/submit.php" method="post">`
for k, v := range params {
html += fmt.Sprintf(`<input type="hidden" name="%s" value="%v" />`, k, v)
}
html += `</form><script>document.getElementById('payForm').submit();</script></body></html>`
c.Data(200,

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



