example_test.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // Copyright 2021 Tencent Inc. All rights reserved.
  2. package downloader_test
  3. import (
  4. "context"
  5. "crypto/rsa"
  6. "fmt"
  7. "git.nanodreamtech.com/sg/wechatpay-go/core"
  8. "git.nanodreamtech.com/sg/wechatpay-go/core/auth/verifiers"
  9. "git.nanodreamtech.com/sg/wechatpay-go/core/downloader"
  10. "git.nanodreamtech.com/sg/wechatpay-go/core/option"
  11. )
  12. func ExampleNewCertificateDownloader_saveCert() {
  13. ctx := context.Background()
  14. var (
  15. mchID string
  16. mchCertificateSerialNumber string
  17. mchPrivateKey *rsa.PrivateKey
  18. mchAPIv3Key string
  19. )
  20. // 假设以上参数已初始化完成
  21. d, err := downloader.NewCertificateDownloader(ctx, mchID, mchPrivateKey, mchCertificateSerialNumber, mchAPIv3Key)
  22. if err != nil {
  23. fmt.Println(err)
  24. return
  25. }
  26. for serialNumber, certificateContent := range d.ExportAll(ctx) {
  27. // 将 certificateContent 写入文件 *.pem
  28. _, _ = serialNumber, certificateContent
  29. }
  30. }
  31. func ExampleNewCertificateDownloaderMgr() {
  32. ctx := context.Background()
  33. mgr := downloader.NewCertificateDownloaderMgr(ctx)
  34. // CertificateDownloaderMgr 初始化完成,尚未注册任何 Downloader,不会进行任何证书下载
  35. var (
  36. mchID string
  37. mchCertificateSerialNumber string
  38. mchPrivateKey *rsa.PrivateKey
  39. mchAPIv3Key string
  40. )
  41. // 假设以上参数已初始化完成
  42. // 注册证书下载器
  43. if err := mgr.RegisterDownloaderWithPrivateKey(
  44. ctx, mchPrivateKey, mchCertificateSerialNumber, mchID, mchAPIv3Key,
  45. ); err == nil {
  46. fmt.Println(err)
  47. return
  48. }
  49. // 可以注册多个商户的证书下载器...
  50. // 获取证书访问器
  51. certificateVisitor := mgr.GetCertificateVisitor(mchID)
  52. // 使用 certificateVisitor 初始化 Validator 进行验签
  53. option.WithVerifier(verifiers.NewSHA256WithRSAVerifier(certificateVisitor))
  54. }
  55. func ExampleNewCertificateDownloaderMgr_useMgr() {
  56. var certificateDownloaderMgr *downloader.CertificateDownloaderMgr
  57. // certificateDownloaderMgr 已经初始化完成且注册了需要的 Downloader
  58. var (
  59. mchID string
  60. mchCertificateSerialNumber string
  61. mchPrivateKey *rsa.PrivateKey
  62. )
  63. ctx := context.Background()
  64. client, err := core.NewClient(
  65. ctx,
  66. option.WithWechatPayAutoAuthCipherUsingDownloaderMgr(
  67. mchID, mchCertificateSerialNumber, mchPrivateKey, certificateDownloaderMgr,
  68. ),
  69. )
  70. if err != nil {
  71. fmt.Println(err)
  72. return
  73. }
  74. // 使用下载管理器初始化 Client 成功
  75. _ = client
  76. }