alipay.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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 = "FACE_TO_FACE_PAYMENT"
  41. }
  42. fmt.Println("----------------------->阿里支付TradePreCreate参数-->", p)
  43. resp, err := alipayClient.TradePreCreate(p)
  44. if err != nil{
  45. fmt.Println(err.Error())
  46. return nil, err
  47. }
  48. return resp, nil
  49. }