收藏
回答

创建客户端 Authorization无效

文件可以正常读到 流程也一样 为什么在 opts := []core.ClientOption的时候就报错 无效的Authorization


FATAL ts=2024-11-27 11:55:23 caller=data/xcx_order.go:253 service_name=wt-ticket-server service_version= environment=develop msg=new wechat pay client err:init client setting err:Get "https://api.mch.weixin.qq.com/v3/certificates": net/http: invalid header field value for "Authorization"


回答关注问题邀请回答
收藏

2 个回答

  • Memory (年假中,回复慢)
    Memory (年假中,回复慢)
    2024-11-27

    你请求代码咋写的?sdk示例就可以直接跑通的

    package main
    
    
    import (
        "context"
        "io/ioutil"
        "log"
        "github.com/wechatpay-apiv3/wechatpay-go/core"
        "github.com/wechatpay-apiv3/wechatpay-go/core/option"
        "github.com/wechatpay-apiv3/wechatpay-go/utils"
    )
    
    
    func main() {
        var (
            mchID                      string = "190000****"                                // 商户号
            mchCertificateSerialNumber string = "3775B6A45ACD588826D15E583A95F5DD********"  // 商户证书序列号
            mchAPIv3Key                string = "2ab9****************************"          // 商户APIv3密钥
        )
    
    
        // 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
        mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/Users/go/apiclient_key.pem")
        if err != nil {
            log.Fatal("load merchant private key error")
        }
    
    
        ctx := context.Background()
    
    
        // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
        opts := []core.ClientOption{
            option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
        }
        client, err := core.NewClient(ctx, opts...)
        if err != nil {
            log.Fatalf("new wechat pay client err:%s", err)
        }
    
    
        // 使用 Get 方法发送 HTTP 请求
        result, err := client.Get(ctx, "https://api.mch.weixin.qq.com/v3/certificates")
        if err != nil {
            log.Fatalf("download certificates err:%s", err)
        }
    
    
        log.Printf("status=%d headers=%v", result.Response.StatusCode, result.Response.Header)
    
    
        // 获取并读取响应体
        body, err := ioutil.ReadAll(result.Response.Body)
        if err != nil {
            log.Fatalf("read response body err:%s", err)
        }
        log.Printf("resp=%s", body)
    }
    
    
    

    2024-11-27
    有用
    回复
  • ……
    ……
    发表于移动端
    2024-11-27
    :! 冫′′房
    2024-11-27
    有用
    回复
登录 后发表内容