golang·微信小程序微信支付v3 服务端发起微信预支付交易单请求
1】项目下终端加载微信官方包: go get -u github.com/wechatpay-apiv3/wechatpay-go
2】必须需要有 [商户号、商户证书序列号、商户APIv3密钥、微信小程序Appid、个人微信付款者微信Openid] 五项
http://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal 可以获取 商户号、商户证书序列号、商户APIv3密钥(下载apiclient_key.pem项目本地);
3】Golang 发起支付请求 微信预支付交易单源码
// 发起支付请求 微信预支付交易单 func GetWeChatOrderPay() interface{} { var ( mchID string = "160*****" // 商户号 mchCertificateSerialNumber string = "321*****" // 商户证书序列号 mchAPIv3Key string = "0de*****" // 商户APIv3密钥 ) // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名 mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/golang/wechat/cert/apiclient_key.pem(商户APIv3密钥文件路径)") if err != nil { log.Println("微信预支付交易单 加载商家私钥错误:", err) } ctx := context.Background() // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力 opts := []core.ClientOption{ option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key), } client, err := core.NewClient(ctx, opts...) if err != nil { log.Println("微信预支付交易单 新微信支付客户端出错 :", err) } svc := jsapi.JsapiApiService{Client: client} // 得到prepay_id,以及调起支付所需的参数和签名 resp, result, err := svc.PrepayWithRequestPayment(ctx, jsapi.PrepayRequest{ Appid: core.String("wxf77****"), //微信小程序id Mchid: core.String("16*******"), //商户号 Description: core.String("自定义订单商品名称"), //商品名称 OutTradeNo: core.String("自定义订单id"), //自定义商品订单id Attach: core.String("自定义数据说明"), NotifyUrl: core.String("https://www.****"), //自定义支付成功反馈地址 Amount: &jsapi.Amount{ Total: core.Int64(100), }, Payer: &jsapi.Payer{ Openid: core.String("oNE*****"), //支付者微信id }, }, ) if err == nil { log.Println("微信预支付交易单 调起支付得到prepay_id resp错误: ", resp) } else { log.Println("微信预支付交易单 调起支付得到prepay_id 错误: ", err) } log.Println("微信预支付交易单 调起支付得到prepay_id 数据结果: \n", result) return "" }
920 Views