获取到发起支付的必要参数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");
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;
}
}