go支付通道基类-适应任何支付通道
用go优雅的实现集成各支付通道接口,业务代码正在开发中,基本结构如下
package main
import (
"fmt"
)
type Pay interface {
getName() string //支付通道名称
getPayUrl() string //获取支付url
query(signMap map[string]interface{}) bool //签名校验
setAmount(amount float64) float64 //支付金额
}
type WxPay struct {
}
func (p *WxPay) getName() string {
fmt.Println("我是微信支付哦")
return "微信支付"
}
func (p *WxPay) setAmount(amount float64) float64 {
return amount
}
func (p *WxPay) getPayUrl() string {
fmt.Println("我是微信支付的url哦哈哈哈")
return "http://**.**.**.**"
}
func (p *WxPay) query(signMap map[string]interface{}) bool {
return true
}
type AliPay struct {
name string
}
func (p *AliPay) query(signMap map[string]interface{}) bool {
return true
}
func (p *AliPay) getName() string {
fmt.Println("我是Ali支付哦" + p.name)
return p.name
}
func (p *AliPay) setAmount(amount float64) float64 {
return amount
}
func (p *AliPay) getPayUrl() string {
fmt.Println("我是Ali支付的url哦哈哈哈")
return "https://alipay.**.**.**"
}
func NewWxPay() Pay {
fmt.Println("wx init")
return &WxPay{}
}
func NewAliPay() Pay {
fmt.Println("ali init")
return &AliPay{name: "我是ali的name牛啤了"}
}
var myPays = make(map[string]Pay)
func Register(key string, pay Pay) {
myPays[key] = pay
}
func init() {
Register("wx", NewWxPay())
Register("ali", NewAliPay())
}
func getPay(key string) Pay {
return myPays[key]
}
func main() {
wx := getPay("wx")
wx.getName()
wx.setAmount(1000.01)
wx.getPayUrl()
ali := getPay("ali")
ali.getName()
ali.setAmount(200.15)
ali.getPayUrl()
}

浙公网安备 33010602011771号