zoukankan      html  css  js  c++  java
  • 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()
    
    }
    

      

  • 相关阅读:
    js··事件捕捉
    js中的Call()和apply()
    什么是变量提升?
    什么是作用域? 什么是作用域链?
    什么是原型链?
    js中this是什么?
    Js高级 事件冒泡
    Js高级 事件 对象
    Js高级 部分内容 面向对象
    工作期间的策划案总结(1)
  • 原文地址:https://www.cnblogs.com/ruanqin/p/13897633.html
Copyright © 2011-2022 走看看