蛋蛋星球-制度模式
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

70 行
2.0 KiB

  1. /*
  2. QQ 现金红包
  3. 文档:https://qpay.qq.com/buss/wiki/221/1219
  4. */
  5. package qq
  6. import (
  7. "context"
  8. "encoding/xml"
  9. "fmt"
  10. "github.com/go-pay/gopay"
  11. )
  12. // SendCashRed 创建现金红包
  13. // 注意:如已使用client.AddCertFilePath()添加过证书,参数certFilePath、keyFilePath、pkcs12FilePath全传 nil,否则,3证书Path均不可空
  14. // 文档:https://qpay.qq.com/buss/wiki/221/1220
  15. func (q *Client) SendCashRed(ctx context.Context, bm gopay.BodyMap) (qqRsp *SendCashRedResponse, err error) {
  16. err = bm.CheckEmptyError("charset", "nonce_str", "mch_billno", "mch_name", "re_openid",
  17. "total_amount", "total_num", "wishing", "act_name", "icon_id", "min_value", "max_value")
  18. if err != nil {
  19. return nil, err
  20. }
  21. bs, err := q.doQQRed(ctx, bm, createCashRed)
  22. if err != nil {
  23. return nil, err
  24. }
  25. qqRsp = new(SendCashRedResponse)
  26. if err = xml.Unmarshal(bs, qqRsp); err != nil {
  27. return nil, fmt.Errorf("[%w]: %v, bytes: %s", gopay.UnmarshalErr, err, string(bs))
  28. }
  29. return qqRsp, nil
  30. }
  31. // DownloadRedListFile 对账单下载
  32. //
  33. // 注意:data类型为int类型,例如:date=20200909,2020年9月9日
  34. // 文档:https://qpay.qq.com/buss/wiki/221/1224
  35. func (q *Client) DownloadRedListFile(ctx context.Context, bm gopay.BodyMap) (qqRsp string, err error) {
  36. err = bm.CheckEmptyError("date")
  37. if err != nil {
  38. return gopay.NULL, err
  39. }
  40. bs, err := q.doQQGet(ctx, bm, redFileDown, SignType_MD5)
  41. if err != nil {
  42. return gopay.NULL, err
  43. }
  44. return string(bs), nil
  45. }
  46. // QueryRedInfo 查询红包详情
  47. //
  48. // 文档:https://qpay.qq.com/buss/wiki/221/2174
  49. func (q *Client) QueryRedInfo(ctx context.Context, bm gopay.BodyMap) (qqRsp *QueryRedInfoResponse, err error) {
  50. err = bm.CheckEmptyError("nonce_str", "listid")
  51. if err != nil {
  52. return nil, err
  53. }
  54. bs, err := q.doQQRed(ctx, bm, queryRedInfo)
  55. if err != nil {
  56. return nil, err
  57. }
  58. qqRsp = new(QueryRedInfoResponse)
  59. if err = xml.Unmarshal(bs, qqRsp); err != nil {
  60. return nil, fmt.Errorf("[%w]: %v, bytes: %s", gopay.UnmarshalErr, err, string(bs))
  61. }
  62. return qqRsp, nil
  63. }