tpp

package
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2021 License: MIT Imports: 10 Imported by: 0

README

第三方支付

第三方支付的通用API接口定义

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Register

func Register(nm map[int]string)

func RegisterTrader

func RegisterTrader(key Trader, provider Provider)

Types

type Callback

type Callback interface {
	// Finish 第三方支付完成后的通知回调,业务系统根据回调处理相关的业务,如果业务处理失败则抛出异常。
	// @param no 业务系统的充值流水号
	// @param trader 第三方支付平台
	// @param tradeNo 交易平台中的唯一流水号
	// @param money 充值金额,不指定则使用订单默认的金额
	// @param arrivalTime 到账时间,不指定则使用系统时间
	// @param success 是否充值成功
	Finish(no string, trader Trader, traderNo string, money float64, arrivalTime int64, success bool)
	// FinishHasUID 第三方支付完成后的通知回调,业务系统根据回调处理相关的业务,如果业务处理失败则抛出异常。
	// @param no 业务系统的充值流水号
	// @param trader 第三方支付平台
	// @param tradeNo 交易平台中的唯一流水号
	// @param money 充值金额,不指定则使用订单默认的金额
	// @param arrivalTime 到账时间,不指定则使用系统时间
	// @param traderUID 交易会员号
	// @param success 是否充值成功
	FinishHasUID(no string, trader Trader, traderNo string, money float64, arrivalTime int64, traderUID string, success bool)
	// RechargeByNo 根据充值记录的唯一流水号获取对应的充值记录,不存在则返回Null。
	RechargeByNo(no string) Recharge
}

Callback 第三方支付平台的通知回调,业务系统实现。

type Config

type Config struct {
	Uid     string            `json:"uid"`     // 该账户的唯一标示(同平台内唯一)
	Weight  int               `json:"weight"`  // 权重值(正数数字,为0表示不使用)
	Account string            `json:"account"` // 支付平台账户(登录账号,非API接口账号)
	Key     string            `json:"key"`     // API接口的标示(如partner、merchantId等)
	Secret  string            `json:"secret"`  // API接口的密钥
	Props   map[string]string `json:"props"`   // 其他属性
}

type ConfigService

type ConfigService interface {
	Config(trader Trader, uid string) Config
	QueryConfig(uid string) Config
}

type NotifyService

type NotifyService interface {
	// Trader 获取当前第三方支付平台的信息。
	Trader() Trader
	// Sync 处理支付平台的同步通知,通过浏览器的重定向通知
	Sync(request *http.Request, response *http.Response)
	// Async 处理支付平台的异步通知,支付平台直接通知平台服务器
	Async(request *http.Request, response *http.Response)
}

NotifyService 第三方支付平台的通知接口定义。

type OrderStatus

type OrderStatus int

OrderStatus 第三方平台的订单状态。

const (
	Y OrderStatus = iota
	N
	P
	F
)

func (OrderStatus) Name

func (t OrderStatus) Name() string

func (OrderStatus) String

func (t OrderStatus) String() string

type ParaEncoder

type ParaEncoder interface {
	// EncodeValue 对给定的参数值进行编码后返回。
	// @param name 参数名称
	// @param value 参数值
	// @return string, error
	EncodeValue(name, value string) string
}

ParaEncoder 请求参数的编码接口。

type ParaSigner

type ParaSigner interface {
	// Assembly 对指定的参数进行组织后返回该参数签名的表现形式。
	// @param name 参数名称
	// @param value 参数值
	// @param index 参数在所有需要签名的参数中的位置序号,从0开始
	// @param totals 所有需要签名的参数总数
	Assembly(name, value string, index, totals int) string
}

ParaSigner 请求参数的签名处理接口。

type Provider

type Provider interface {
	Pay(para *ReqPara)
	NotifyService() NotifyService
	QueryService() QueryService
}

func GetProvider

func GetProvider(key Trader) Provider

type QueryResult

type QueryResult struct {
	No        string      // 支付订单流水号
	TppStatus OrderStatus // 第三方平台上订单状态
	TppNo     string      // 第三方平台的订单号
	PayTime   string      // 订单支付时间(仅在状态为Y时才必须有),格式:yyyy-MM-dd HH:mm:ss
	PayMoney  int64       // 订单支付金额(仅在状态为Y时才必须有),单位分
}

QueryResult 支付订单在第三方平台的查询结果封装。

type QueryService

type QueryService interface {
	// Trader 获取本查询结果支持的第三方平台。
	Trader() Trader
	// Query 根据给定的充值记录查询本平台上的订单信息并返回。
	Query(rv Recharge) (QueryResult, error)
}

QueryService 第三方支付平台的查询业务接口定义。

type Recharge

type Recharge struct {
	// contains filtered or unexported fields
}

type RechargeStatus

type RechargeStatus int
const (
	NEW RechargeStatus = iota
	PROCESS
	SUCCESS
	FAILED
	CANCEL
	REFUND

	PAYED //已支付

	// INIT 只对线下汇款充值才有效,为上传凭证之前的
	INIT
)

func (RechargeStatus) Name

func (t RechargeStatus) Name() string

func (RechargeStatus) String

func (t RechargeStatus) String() string

type ReqPara

type ReqPara struct {
	// contains filtered or unexported fields
}

ReqPara 第三方支付平台的请求参数封装。

func NewReqPara

func NewReqPara() *ReqPara

func (*ReqPara) Add

func (rp *ReqPara) Add(name, value string, sign, query bool) *ReqPara

Add 添加一个参数信息,该方法会按照添加调用顺序来顺序组装相应的参数参与签名或提交。 @param name 参数名称 @param value 参数值 @param sign 是否参与签名 @param query 是否添加到请求参数中

func (*ReqPara) AddQuery

func (rp *ReqPara) AddQuery(name, value string) *ReqPara

AddQuery 添加只增加到请求参数列表中的参数,该参数不参与签名。

func (*ReqPara) AddSign

func (rp *ReqPara) AddSign(name, value string) *ReqPara

AddSign 添加只参与签名的参数,该参数不会被添加到请求参数列表中。

func (*ReqPara) Get

func (rp *ReqPara) Get(name string) *paraWrapper

func (*ReqPara) ToSign

func (rp *ReqPara) ToSign(signer ParaSigner) string

ToSign 将所有需要签名的参数进行组装后返回待签名字符串。

func (*ReqPara) ToUrl

func (rp *ReqPara) ToUrl(gateway string, encoder ParaEncoder) string

ToUrl 将所有需要提交的参数附加到请求网关地址的后面后返回。 @param gateway 请求网关的URL地址 @param encoder 请求参数的编码器,如果不指定则不对参数和值做任何处理直接添加到网关地址后

type ThirdPartyPayment

type ThirdPartyPayment struct {
	// contains filtered or unexported fields
}

func NewThirdPartyPayment

func NewThirdPartyPayment(config ConfigService, callback Callback) ThirdPartyPayment

func (ThirdPartyPayment) Config

func (tpp ThirdPartyPayment) Config(trader Trader, uid string) Config

func (ThirdPartyPayment) Query

func (tpp ThirdPartyPayment) Query(rvo Recharge, sync bool) QueryResult

func (ThirdPartyPayment) QueryConfig

func (tpp ThirdPartyPayment) QueryConfig(uid string) Config

type Trader

type Trader int64

func NewTrader

func NewTrader(c int) Trader

func Str2Node

func Str2Node(n string) Trader

func (Trader) AsyncNotifyUrl

func (t Trader) AsyncNotifyUrl() string

AsyncNotifyUrl 获取支付平台异步通知的接收地址(全http地址)

func (Trader) IsValid

func (t Trader) IsValid() error

func (Trader) String

func (t Trader) String() string

func (Trader) SyncNotifyUrl

func (t Trader) SyncNotifyUrl() string

SyncNotifyUrl 获取支付平台同步通知的接收地址(全http地址)

func (Trader) SyncResultUrl

func (t Trader) SyncResultUrl(success bool, no string) string

SyncResultUrl 获取支付成功或失败时第三方支付平台通过浏览器同步通知后(基于SyncNotifyUrl()的回调)的本地最终结果显示页面,可提示用户充值成功或失败,页面后追加参数success和no。 @param success 支付是否成功 @param no 本地充值流水号

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL