wx_pay.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package cygx
  2. import (
  3. "context"
  4. "github.com/wechatpay-apiv3/wechatpay-go/core"
  5. "github.com/wechatpay-apiv3/wechatpay-go/core/option"
  6. "github.com/wechatpay-apiv3/wechatpay-go/services/refunddomestic"
  7. payUtils "github.com/wechatpay-apiv3/wechatpay-go/utils"
  8. "log"
  9. )
  10. const (
  11. //MchPKFileName = "./utils/cert/apiclient_key.pem"
  12. MchPKFileName = "../cert/cygx/apiclient_key.pem"
  13. Mchid = "1624495680"
  14. MchCertificateSerialNumber = "5ED2719CFAE5205763034AD80BF4B8A33533C418"
  15. MchAPIv3Key = "W1tbnzQrzQ7yRRNuQCIHjis8dgdasKVX"
  16. )
  17. // 微信商户建立连接
  18. func getWechatClient() (context.Context, *core.Client, error) {
  19. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  20. mchPrivateKey, err := payUtils.LoadPrivateKeyWithPath(MchPKFileName)
  21. if err != nil {
  22. log.Print("load merchant private key error")
  23. return nil, nil, err
  24. }
  25. ctx := context.Background()
  26. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  27. opts := []core.ClientOption{
  28. option.WithWechatPayAutoAuthCipher(Mchid, MchCertificateSerialNumber, mchPrivateKey, MchAPIv3Key),
  29. }
  30. client, err := core.NewClient(ctx, opts...)
  31. if err != nil {
  32. log.Printf("new wechat pay client err:%s", err)
  33. return nil, nil, err
  34. }
  35. return ctx, client, nil
  36. }
  37. func init1212() {
  38. ctx, client, err := getWechatClient()
  39. if err != nil {
  40. log.Printf("getWechatClientt err:%s", err)
  41. return
  42. }
  43. svc := refunddomestic.RefundsApiService{Client: client}
  44. resp, result, err := svc.Create(ctx,
  45. refunddomestic.CreateRequest{
  46. //SubMchid: core.String(Mchid),
  47. TransactionId: core.String("4200002189202403252248752161"),
  48. OutTradeNo: core.String("OD202403251018320707"),
  49. OutRefundNo: core.String("RefundOD202403251018320707"),
  50. Reason: core.String("嘿!延边!"),
  51. NotifyUrl: core.String("https://testmfyx.hzinsights.com/api/wechat/wxpay/refunds/notify"),
  52. FundsAccount: refunddomestic.REQFUNDSACCOUNT_AVAILABLE.Ptr(),
  53. Amount: &refunddomestic.AmountReq{
  54. Currency: core.String("CNY"),
  55. //From: []refunddomestic.FundsFromItem{refunddomestic.FundsFromItem{
  56. // Account: refunddomestic.ACCOUNT_AVAILABLE.Ptr(),
  57. // Amount: core.Int64(444),
  58. //}},
  59. Refund: core.Int64(1),
  60. Total: core.Int64(1),
  61. },
  62. },
  63. )
  64. if err != nil {
  65. // 处理错误
  66. log.Printf("call Create err:%s", err)
  67. } else {
  68. // 处理返回结果
  69. log.Printf("status=%d resp=%s", result.Response.StatusCode, resp)
  70. }
  71. }