收藏
回答

通过小程序下单接口HTTP头设置的签名认证值总是格式无效。怎么办?

获取到发起支付的必要参数prepay_id,根据文档设置HTTP头的Authorization。
已经按照WECHATPAY2-SHA256-RSA2048进行签名认证。得到的BASE64字符串,作为HTTP头Authorization的值,总是提示:
System.FormatException: 值“JRgIFSvrpKkgFvX7dWFrloQFlPbPBC2+zAipxPP76aOjS1gbGeccQ+mjNxbKZYGYVxftQT0cNFcl6n8Aja4Hj4LUUpkp5+2Bd5wWis0lZqXITpeA4pwB6s1r+z22J3Nu5i2i2klirk3dCRvmOxAPHcGRvWCd2sVnvWqfbSsoO2zDsfK61ANzA52y+4E98vqh46d9XmtDNoz8aKo3VI/Arw3PxHUdQa+74E3ydhB5qVZhHmDpo7UsjCgjXkwu9pilOqYbN4VQ99MWmedg0+LSnmjTT+gxXuGb+pvglL0GxGqMAoWCH+L7kzBXqgy07BdWyEHPK8tTobMrVOQ2UCFDlQ==”的格式无效。
   在 System.Net.Http.Headers.HttpHeaderParser.ParseValue(String value, Object storeValue, Int32& index)
   在 System.Net.Http.Headers.HttpHeaders.ParseAndAddValue(String name, HeaderStoreItemInfo info, String value)
   在 System.Net.Http.Headers.HttpHeaders.Add(String name, String value)

我的代码如下:
//发送请求
using (HttpClient cli = new HttpClient())
{
    try
    {
        string url = "https://api.mch.weixin.qq.com/v3/pay/partner/transactions/jsapi";


        //设置请求头
        cli.DefaultRequestHeaders.Add("Authorization", prepayidSign);
        cli.DefaultRequestHeaders.Add("Accept", "application/json");
        cli.DefaultRequestHeaders.Add("Content-Type", "application/json");


        // 发送POST请求并等待响应
        HttpResponseMessage response = await cli.PostAsync(url, new StringContent(JsonHelper.getJsonByObject(body)));


        // 确保响应内容被读取(否则可能会导致连接被过早关闭)
        response.EnsureSuccessStatusCode();
        string responseBody = await response.Content.ReadAsStringAsync();


        Console.WriteLine(responseBody);


        return null;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
        throw;
    }
}
回答关注问题邀请回答
收藏
登录 后发表内容