fileuploader_example_test.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. // Copyright 2021 Tencent Inc. All rights reserved.
  2. package fileuploader_test
  3. import (
  4. "context"
  5. "log"
  6. "os"
  7. "git.nanodreamtech.com/sg/wechatpay-go/core"
  8. "git.nanodreamtech.com/sg/wechatpay-go/core/consts"
  9. "git.nanodreamtech.com/sg/wechatpay-go/core/option"
  10. "git.nanodreamtech.com/sg/wechatpay-go/services/fileuploader"
  11. "git.nanodreamtech.com/sg/wechatpay-go/utils"
  12. )
  13. func ExampleImageUploader_Upload() {
  14. var (
  15. mchID string = "190000****" // 商户号
  16. mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
  17. mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
  18. )
  19. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  20. mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
  21. if err != nil {
  22. log.Print("load merchant private key error")
  23. }
  24. ctx := context.Background()
  25. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  26. opts := []core.ClientOption{
  27. option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
  28. }
  29. client, err := core.NewClient(ctx, opts...)
  30. if err != nil {
  31. log.Printf("new wechat pay client err:%s", err)
  32. }
  33. file, err := os.Open("picture.jpg")
  34. if err != nil {
  35. return
  36. }
  37. defer file.Close()
  38. svc := fileuploader.ImageUploader{Client: client}
  39. resp, result, err := svc.Upload(ctx, file, "picture.jpg", consts.ImageJPG)
  40. if err != nil {
  41. // 处理错误
  42. log.Printf("call ImageUploader err:%s", err)
  43. } else {
  44. // 处理返回结果
  45. log.Printf("status=%d media_id=%s", result.Response.StatusCode, *resp.MediaId)
  46. }
  47. }
  48. func ExampleVideoUploader_Upload() {
  49. var (
  50. mchID string = "190000****" // 商户号
  51. mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
  52. mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
  53. )
  54. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  55. mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
  56. if err != nil {
  57. log.Print("load merchant private key error")
  58. }
  59. ctx := context.Background()
  60. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  61. opts := []core.ClientOption{
  62. option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
  63. }
  64. client, err := core.NewClient(ctx, opts...)
  65. if err != nil {
  66. log.Printf("new wechat pay client err:%s", err)
  67. }
  68. file, err := os.Open("video.mp4")
  69. if err != nil {
  70. return
  71. }
  72. defer file.Close()
  73. svc := fileuploader.VideoUploader{Client: client}
  74. resp, result, err := svc.Upload(ctx, file, "video.mp4", consts.VideoMP4)
  75. if err != nil {
  76. // 处理错误
  77. log.Printf("call VideoUploader err:%s", err)
  78. } else {
  79. // 处理返回结果
  80. log.Printf("status=%d media_id=%s", result.Response.StatusCode, *resp.MediaId)
  81. }
  82. }
  83. func ExampleMarketingImageUploader_Upload() {
  84. var (
  85. mchID string = "190000****" // 商户号
  86. mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
  87. mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
  88. )
  89. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  90. mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
  91. if err != nil {
  92. log.Print("load merchant private key error")
  93. }
  94. ctx := context.Background()
  95. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  96. opts := []core.ClientOption{
  97. option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
  98. }
  99. client, err := core.NewClient(ctx, opts...)
  100. if err != nil {
  101. log.Printf("new wechat pay client err:%s", err)
  102. }
  103. file, err := os.Open("picture.jpg")
  104. if err != nil {
  105. return
  106. }
  107. defer file.Close()
  108. svc := fileuploader.MarketingImageUploader{Client: client}
  109. resp, result, err := svc.Upload(ctx, file, "picture.jpg", consts.ImageJPG)
  110. if err != nil {
  111. // 处理错误
  112. log.Printf("call MarketingImageUploader err:%s", err)
  113. } else {
  114. // 处理返回结果
  115. log.Printf("status=%d media_url=%s", result.Response.StatusCode, *resp.MediaUrl)
  116. }
  117. }
  118. func ExampleMchBizUploader_Upload() {
  119. var (
  120. mchID string = "190000****" // 商户号
  121. mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
  122. mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
  123. )
  124. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  125. mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
  126. if err != nil {
  127. log.Print("load merchant private key error")
  128. }
  129. ctx := context.Background()
  130. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  131. opts := []core.ClientOption{
  132. option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
  133. }
  134. client, err := core.NewClient(ctx, opts...)
  135. if err != nil {
  136. log.Printf("new wechat pay client err:%s", err)
  137. }
  138. file, err := os.Open("picture.jpg")
  139. if err != nil {
  140. return
  141. }
  142. defer file.Close()
  143. svc := fileuploader.MchBizUploader{Client: client}
  144. resp, result, err := svc.Upload(ctx, file, "picture.jpg", consts.ImageJPG)
  145. if err != nil {
  146. // 处理错误
  147. log.Printf("call MchBizUploader err:%s", err)
  148. } else {
  149. // 处理返回结果
  150. log.Printf("status=%d media_id=%s", result.Response.StatusCode, *resp.MediaId)
  151. }
  152. }