- 生成预支付订到报错,报异常,请问如何定位问题?
这点代码报异常,var result = await basePayApis.JsApiAsync(requestData); [[[BaseException]]] [2025/04/24 20:17:57.5719] [线程:28] BaseException Message:系统找不到指定的文件。 StackTrace: InnerException:系统找不到指定的文件。 InnerException.StackTrace: at System.Security.Cryptography.CngKeyLite.ImportKeyBlob(String blobType, ReadOnlySpan`1 keyBlob, Boolean encrypted, ReadOnlySpan`1 password) at System.Security.Cryptography.CngPkcs8.ImportPkcs8(ReadOnlySpan`1 keyBlob) at System.Security.Cryptography.CngPkcs8.ImportPkcs8PrivateKey(ReadOnlySpan`1 source, Int32& bytesRead) at System.Security.Cryptography.RSAImplementation.RSACng.ImportPkcs8PrivateKey(ReadOnlySpan`1 source, Int32& bytesRead) at Senparc.Weixin.TenPayV3.Helpers.TenPaySignHelper.CreateSign(String message, String privateKey) at Senparc.Weixin.TenPayV3.TenPayHttpHandler.BuildAuthAsync(HttpRequestMessage request) at Senparc.Weixin.TenPayV3.TenPayHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) at Senparc.Weixin.TenPayV3.TenPayApiRequest.GetHttpResponseMessageAsync(String url, Object data, Int32 timeOut, ApiRequestMethod requestMethod, Boolean checkDataNotNull) at Senparc.Weixin.TenPayV3.TenPayApiRequest.RequestAsync[T](String url, Object data, Int32 timeOut, ApiRequestMethod requestMethod, Boolean checkSign, Func`1 createDefaultInstance) [[[BaseException]]] [2025/04/24 20:17:57.5776] [线程:28] BaseException Message:系统找不到指定的文件。 StackTrace: InnerException:系统找不到指定的文件。 InnerException.StackTrace: at System.Security.Cryptography.CngKeyLite.ImportKeyBlob(String blobType, ReadOnlySpan`1 keyBlob, Boolean encrypted, ReadOnlySpan`1 password) at System.Security.Cryptography.CngPkcs8.ImportPkcs8(ReadOnlySpan`1 keyBlob) at System.Security.Cryptography.CngPkcs8.ImportPkcs8PrivateKey(ReadOnlySpan`1 source, Int32& bytesRead) at System.Security.Cryptography.RSAImplementation.RSACng.ImportPkcs8PrivateKey(ReadOnlySpan`1 source, Int32& bytesRead) at Senparc.Weixin.TenPayV3.Helpers.TenPaySignHelper.CreateSign(String message, String privateKey) at Senparc.Weixin.TenPayV3.TenPayHttpHandler.BuildAuthAsync(HttpRequestMessage request) at Senparc.Weixin.TenPayV3.TenPayHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) at Senparc.Weixin.TenPayV3.TenPayApiRequest.GetHttpResponseMessageAsync(String url, Object data, Int32 timeOut, ApiRequestMethod requestMethod, Boolean checkDataNotNull) at Senparc.Weixin.TenPayV3.TenPayApiRequest.RequestAsync[T](String url, Object data, Int32 timeOut, ApiRequestMethod requestMethod, Boolean checkSign, Func`1 createDefaultInstance) [[[生成预支付订单-调用Api接口:]]] [2025/04/24 20:17:57.5898] [线程:28] {"prepay_id":null,"ResultCode":{"Success":false,"StateCode":null,"ErrorCode":null,"ErrorMessage":"系统找不到指定的文件。","Solution":null,"Additional":null},"VerifySignSuccess":null} [[[WeixinException]]] [2025/04/24 20:17:57.5915] [线程:28] WeixinException AccessTokenOrAppId: Message:Object reference not set to an instance of an object. StackTrace: InnerException:Object reference not set to an instance of an object. InnerException.StackTrace: at Senparc.Weixin.TenPayV3.Helpers.TenPaySignHelper.GetJsApiUiPackage(String appId, String prepayId, ISenparcWeixinSettingForTenpayV3 senparcWeixinSettingForTenpayV3) at GM_API.Controllers.WxOpenController.GetPrepayid(VWxOpenPayPara wxOpenPayPara) [[[WeixinException]]] [2025/04/24 20:17:57.5924] [线程:28] WeixinException AccessTokenOrAppId: Message:Object reference not set to an instance of an object. StackTrace: InnerException:Object reference not set to an instance of an object. InnerException.StackTrace: at Senparc.Weixin.TenPayV3.Helpers.TenPaySignHelper.GetJsApiUiPackage(String appId, String prepayId, ISenparcWeixinSettingForTenpayV3 senparcWeixinSettingForTenpayV3) at GM_API.Controllers.WxOpenController.GetPrepayid(VWxOpenPayPara wxOpenPayPara)
04-24 - 小程序用户消息推送,老是出现43101,用户拒绝了消息订阅授权,该如何解决?
授权了A消息模版,测试可以收到消息,1分钟后再次发送消息,日志记录到“微信接口返回错误码 43101 表示用户拒绝了消息订阅授权”。 这到底是什么机制啊,明明都授权了,又报拒绝授权错误,是3分钟内不能收2条消息推送吗? 云里雾里的,请知道的大神回复下我,谢谢!
04-21 - 本地localhost调试可以生成预支付订单,用uni和开发者工具生成预支付订单失败?
使用的.netcore,做了后台API接口服务。用了盛派的SDK,域名还未备案完成。 localhost调试时,在swagger页面调用接口,可以正常生成预付订单。在uni上运行微信开发者工具调试时,报异常(我uni上配置的是域名),请哪位大神能帮我解答下,谢谢! 异常日志如下: {"prepay_id":null,"ResultCode":{"Success":false,"StateCode":null,"ErrorCode":null, "ErrorMessage":"\u7CFB\u7EDF\u627E\u4E0D\u5230\u6307\u5B9A\u7684\u6587\u4EF6\u3002", "Solution":null,"Additional":null},"VerifySignSuccess":null} 生成预支付订单代码如下: public async Task<ActionResult> GetPrepayid([FromBody] VWxOpenPayPara wxOpenPayPara) { try { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 var sp_billno = string.Format("{0}{1}{2}", Config.SenparcWeixinSetting.TenPayV3_MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); var name = “小程序支付”; var price = 1;//单位:分 var notifyUrl = Config.SenparcWeixinSetting.TenPayV3_WxOpenTenpayNotify; var basePayApis = new Senparc.Weixin.TenPayV3.Apis.BasePayApis(Config.SenparcWeixinSetting); var requestData = new Senparc.Weixin.TenPayV3.Apis.BasePay.TransactionsRequestData(WxOpenAppId, Config.SenparcWeixinSetting.TenPayV3_MchId, name, sp_billno, new Senparc.Weixin.TenPayV3.Entities.TenpayDateTime(SystemTime.Now.AddMinutes(120).DateTime, false), HttpContext.UserHostAddress().ToString(), notifyUrl, null, new() { currency = "CNY", total = price }, new(wxOpenPayPara.openId), null, null, null); var result = await basePayApis.JsApiAsync(requestData); var packageStr = "prepay_id=" + result.prepay_id; var jsApiUiPackage = TenPaySignHelper.GetJsApiUiPackage(WxOpenAppId, result.prepay_id); return Json(new { result = true, data = new { prepay_id = result.prepay_id, appId = Config.SenparcWeixinSetting.WxOpenAppId, timeStamp = jsApiUiPackage.Timestamp, nonceStr = jsApiUiPackage.NonceStr, package = packageStr, signType = "RSA", paySign = jsApiUiPackage.Signature, partnerid = Config.SenparcWeixinSetting.TenPayV3_MchId } }); } catch (Exception ex) { _Logger.LogInformation(ex.Message); return Json(new { result = false, msg = ex.StackTrace }); } }
01-08