| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package alipay
- import (
- "fmt"
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
- "errors"
- "github.com/smartwalle/alipay"
- )
- var aliPayCallbackHandler func(result *alipay.TradeNotification)models.SysReturn = nil
- // 注册微信支付回调处理函数
- func RegisterAliPayCallbackHandler(handler func(result *alipay.TradeNotification)models.SysReturn){
- aliPayCallbackHandler = handler
- }
- func CallWxPayCallbackHandler(c *entitys.CtrlContext)models.SysReturn{
- if aliPayCallbackHandler == nil{
- return models.SysReturn{500, "微信支付回调处理函数为空", nil}
- }
- noti, err := alipayClient.GetTradeNotification(c.Ctx.Request)
- if err != nil{
- return models.SysReturn{500, err.Error(), nil}
- }
- ret := aliPayCallbackHandler(noti)
- if ret.Code != 200{
- fmt.Println("支付宝支付失败", ret.Msg)
- }else{
- fmt.Println("支付宝支付成功")
- }
- alipay.AckNotification(c.Ctx.Writer)
- return ret
- }
- // 扫码支付
- func PayNavite(param *PayParams)(*alipay.TradePreCreateRsp, error){
- p := alipay.TradePreCreate{}
- p.NotifyURL=AliPayConfig.AliPayCallback
- p.Subject=param.Subject
- p.OutTradeNo = param.OutTradeNo
- p.TotalAmount = param.TotalAmount
- if param.ProductCode == ""{
- p.ProductCode = p.ProductCode
- }else{
- p.ProductCode = "FACE_TO_FACE_PAYMENT"
- }
- fmt.Println("----------------------->阿里支付TradePreCreate参数-->", p)
- resp, err := alipayClient.TradePreCreate(p)
- if err != nil{
- fmt.Println(err.Error())
- return nil, err
- }
- return resp, nil
- }
- // 关闭订单
- // APP支付、手机网站支付和电脑网站支付产生的交易,可调用 alipay.trade.close(统一收单交易关闭接口)直接将未付款的交易进行关闭
- func CloseOrder(outTradeNo string)(*alipay.TradeCloseRsp, error){
- tcparam := alipay.TradeClose{}
- tcparam.OutTradeNo = outTradeNo
- resp, err := alipayClient.TradeClose(tcparam)
- if err != nil{
- return resp, err
- }
- if resp.Content.Code == "10000"{
- // 10000 处理成功
- return resp, nil
- }else{
- fmt.Println("关闭订单失败", resp.Content.Code, resp.Content.Msg)
- return resp, errors.New("关闭订单失败")
- }
- }
- // 取消订单
- // 当面付产生的交易,支付交易返回失败或支付系统超时
- func CancelOrder(outTradeNo string)(*alipay.TradeCancelRsp, error){
- tcparam := alipay.TradeCancel{}
- tcparam.OutTradeNo = outTradeNo
- resp, err := alipayClient.TradeCancel(tcparam)
- if err != nil{
- return resp, err
- }
- if resp.Content.Code == "10000"{
- // 10000 处理成功
- return resp, nil
- }else{
- fmt.Println("取消订单失败", resp.Content.Code, resp.Content.Msg)
- return resp, errors.New("取消订单失败")
- }
- }
|