api_jsapi_example_test.go 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. // Copyright 2021 Tencent Inc. All rights reserved.
  2. //
  3. // JSAPI支付
  4. //
  5. // JSAPI支付API
  6. //
  7. // API version: 1.2.3
  8. // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT.
  9. package jsapi_test
  10. import (
  11. "context"
  12. "log"
  13. "time"
  14. "git.nanodreamtech.com/sg/wechatpay-go/core"
  15. "git.nanodreamtech.com/sg/wechatpay-go/core/option"
  16. "git.nanodreamtech.com/sg/wechatpay-go/services/partnerpayments/jsapi"
  17. "git.nanodreamtech.com/sg/wechatpay-go/utils"
  18. )
  19. func ExampleJsapiApiService_CloseOrder() {
  20. var (
  21. mchID string = "190000****" // 商户号
  22. mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
  23. mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
  24. )
  25. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  26. mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
  27. if err != nil {
  28. log.Print("load merchant private key error")
  29. }
  30. ctx := context.Background()
  31. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  32. opts := []core.ClientOption{
  33. option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
  34. }
  35. client, err := core.NewClient(ctx, opts...)
  36. if err != nil {
  37. log.Printf("new wechat pay client err:%s", err)
  38. }
  39. svc := jsapi.JsapiApiService{Client: client}
  40. result, err := svc.CloseOrder(ctx,
  41. jsapi.CloseOrderRequest{
  42. OutTradeNo: core.String("OutTradeNo_example"),
  43. SpMchid: core.String("1230000109"),
  44. SubMchid: core.String("1230000109"),
  45. },
  46. )
  47. if err != nil {
  48. // 处理错误
  49. log.Printf("call CloseOrder err:%s", err)
  50. } else {
  51. // 处理返回结果
  52. log.Printf("status=%d", result.Response.StatusCode)
  53. }
  54. }
  55. func ExampleJsapiApiService_Prepay() {
  56. var (
  57. mchID string = "190000****" // 商户号
  58. mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
  59. mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
  60. )
  61. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  62. mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
  63. if err != nil {
  64. log.Print("load merchant private key error")
  65. }
  66. ctx := context.Background()
  67. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  68. opts := []core.ClientOption{
  69. option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
  70. }
  71. client, err := core.NewClient(ctx, opts...)
  72. if err != nil {
  73. log.Printf("new wechat pay client err:%s", err)
  74. }
  75. svc := jsapi.JsapiApiService{Client: client}
  76. resp, result, err := svc.Prepay(ctx,
  77. jsapi.PrepayRequest{
  78. SpAppid: core.String("wxd678efh567hg6787"),
  79. SpMchid: core.String("1230000109"),
  80. SubAppid: core.String("wxd678efh567hg6787"),
  81. SubMchid: core.String("1230000109"),
  82. Description: core.String("Image形象店-深圳腾大-QQ公仔"),
  83. OutTradeNo: core.String("1217752501201407033233368018"),
  84. TimeExpire: core.Time(time.Now()),
  85. Attach: core.String("自定义数据说明"),
  86. NotifyUrl: core.String("https://www.weixin.qq.com/wxpay/pay.php"),
  87. GoodsTag: core.String("WXG"),
  88. LimitPay: []string{"LimitPay_example"},
  89. SupportFapiao: core.Bool(false),
  90. Amount: &jsapi.Amount{
  91. Currency: core.String("CNY"),
  92. Total: core.Int64(100),
  93. },
  94. Payer: &jsapi.Payer{
  95. SpOpenid: core.String("oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"),
  96. SubOpenid: core.String("oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"),
  97. },
  98. Detail: &jsapi.Detail{
  99. CostPrice: core.Int64(608800),
  100. GoodsDetail: []jsapi.GoodsDetail{jsapi.GoodsDetail{
  101. GoodsName: core.String("iPhoneX 256G"),
  102. MerchantGoodsId: core.String("ABC"),
  103. Quantity: core.Int64(1),
  104. UnitPrice: core.Int64(828800),
  105. WechatpayGoodsId: core.String("1001"),
  106. }},
  107. InvoiceId: core.String("wx123"),
  108. },
  109. SceneInfo: &jsapi.SceneInfo{
  110. DeviceId: core.String("013467007045764"),
  111. PayerClientIp: core.String("14.23.150.211"),
  112. StoreInfo: &jsapi.StoreInfo{
  113. Address: core.String("广东省深圳市南山区科技中一道10000号"),
  114. AreaCode: core.String("440305"),
  115. Id: core.String("0001"),
  116. Name: core.String("腾讯大厦分店"),
  117. },
  118. },
  119. SettleInfo: &jsapi.SettleInfo{
  120. ProfitSharing: core.Bool(false),
  121. },
  122. },
  123. )
  124. if err != nil {
  125. // 处理错误
  126. log.Printf("call Prepay err:%s", err)
  127. } else {
  128. // 处理返回结果
  129. log.Printf("status=%d resp=%s", result.Response.StatusCode, resp)
  130. }
  131. }
  132. func ExampleJsapiApiService_QueryOrderById() {
  133. var (
  134. mchID string = "190000****" // 商户号
  135. mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
  136. mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
  137. )
  138. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  139. mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
  140. if err != nil {
  141. log.Print("load merchant private key error")
  142. }
  143. ctx := context.Background()
  144. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  145. opts := []core.ClientOption{
  146. option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
  147. }
  148. client, err := core.NewClient(ctx, opts...)
  149. if err != nil {
  150. log.Printf("new wechat pay client err:%s", err)
  151. }
  152. svc := jsapi.JsapiApiService{Client: client}
  153. resp, result, err := svc.QueryOrderById(ctx,
  154. jsapi.QueryOrderByIdRequest{
  155. TransactionId: core.String("TransactionId_example"),
  156. SpMchid: core.String("SpMchid_example"),
  157. SubMchid: core.String("SubMchid_example"),
  158. },
  159. )
  160. if err != nil {
  161. // 处理错误
  162. log.Printf("call QueryOrderById err:%s", err)
  163. } else {
  164. // 处理返回结果
  165. log.Printf("status=%d resp=%s", result.Response.StatusCode, resp)
  166. }
  167. }
  168. func ExampleJsapiApiService_QueryOrderByOutTradeNo() {
  169. var (
  170. mchID string = "190000****" // 商户号
  171. mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
  172. mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
  173. )
  174. // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
  175. mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
  176. if err != nil {
  177. log.Print("load merchant private key error")
  178. }
  179. ctx := context.Background()
  180. // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
  181. opts := []core.ClientOption{
  182. option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
  183. }
  184. client, err := core.NewClient(ctx, opts...)
  185. if err != nil {
  186. log.Printf("new wechat pay client err:%s", err)
  187. }
  188. svc := jsapi.JsapiApiService{Client: client}
  189. resp, result, err := svc.QueryOrderByOutTradeNo(ctx,
  190. jsapi.QueryOrderByOutTradeNoRequest{
  191. OutTradeNo: core.String("OutTradeNo_example"),
  192. SpMchid: core.String("SpMchid_example"),
  193. SubMchid: core.String("SubMchid_example"),
  194. },
  195. )
  196. if err != nil {
  197. // 处理错误
  198. log.Printf("call QueryOrderByOutTradeNo err:%s", err)
  199. } else {
  200. // 处理返回结果
  201. log.Printf("status=%d resp=%s", result.Response.StatusCode, resp)
  202. }
  203. }