alipay.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package alipay
  2. import (
  3. "fmt"
  4. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  6. "github.com/smartwalle/alipay"
  7. )
  8. var aliPayCallbackHandler func(result *alipay.TradeNotification)models.SysReturn = nil
  9. // 注册微信支付回调处理函数
  10. func RegisterAliPayCallbackHandler(handler func(result *alipay.TradeNotification)models.SysReturn){
  11. aliPayCallbackHandler = handler
  12. }
  13. func CallWxPayCallbackHandler(c *entitys.CtrlContext)models.SysReturn{
  14. if aliPayCallbackHandler == nil{
  15. return models.SysReturn{500, "微信支付回调处理函数为空", nil}
  16. }
  17. noti, err := alipayClient.GetTradeNotification(c.Ctx.Request)
  18. if err != nil{
  19. return models.SysReturn{500, err.Error(), nil}
  20. }
  21. ret := aliPayCallbackHandler(noti)
  22. if ret.Code != 200{
  23. fmt.Println("支付宝支付失败", ret.Msg)
  24. }else{
  25. fmt.Println("支付宝支付成功")
  26. }
  27. alipay.AckNotification(c.Ctx.Writer)
  28. return ret
  29. }
  30. // 扫码支付
  31. func PayNavite(param *PayParams)(*alipay.TradePreCreateRsp, error){
  32. p := alipay.TradePreCreate{}
  33. p.NotifyURL=alipayConfig.AliPayCallback
  34. p.Subject=param.Subject
  35. p.OutTradeNo = param.OutTradeNo
  36. p.TotalAmount = param.TotalAmount
  37. if param.ProductCode == ""{
  38. p.ProductCode = p.ProductCode
  39. }else{
  40. p.ProductCode = "FAST_INSTANT_TRADE_PAY"
  41. }
  42. resp, err := alipayClient.TradePreCreate(p)
  43. if err != nil{
  44. fmt.Println(err.Error())
  45. return nil, err
  46. }
  47. return resp, nil
  48. }