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()
    
    }
    

      

  • 相关阅读:
    坐标系和投影
    BizTalk使用SQL适配器获取数据(上)创建解决方案及业务流程
    BizTalk使用SQL适配器获取数据(下)部署解决方案
    internet信息服务(IIS)管理器 快捷键
    卡巴斯基7.0离线更新升级包病毒库
    BizTalk 安装、配置、软硬件要求及功能
    诺顿病毒库离线升级
    ORACLE学习笔记性能优化5
    ORACLE学习笔记性能优化7
    ORACLE学习笔记性能优化4
  • 原文地址:https://www.cnblogs.com/ruanqin/p/13897633.html
Copyright © 2011-2022 走看看