/// <summary> /// JSAPI下单接口 /// <para>在微信支付服务后台生成JSAPI预支付交易单,返回预支付交易会话标识</para> /// </summary> /// <param name="data">微信支付需要POST的Data数据</param> /// <param name="timeOut">超时时间,单位为ms </param> /// <returns></returns> public async Task <JsApiReturnJson> JsApiAsync(TransactionsRequestData data, int timeOut = Config.TIME_OUT) { var url = ReurnPayApiUrl("https://api.mch.weixin.qq.com/{0}v3/pay/transactions/jsapi"); TenPayApiRequest tenPayApiRequest = new(_tenpayV3Setting); return(await tenPayApiRequest.RequestAsync <JsApiReturnJson>(url, data, timeOut)); }
/// <summary> /// JSAPI下单接口 /// <para>在微信支付服务后台生成JSAPI预支付交易单,返回预支付交易会话标识</para> /// </summary> /// <param name="data">微信支付需要POST的Data数据</param> /// <param name="timeOut">超时时间,单位为ms </param> /// <returns></returns> public async Task <JsApiReturnJson> JsApiAsync(TransactionsRequestData data, int timeOut = Config.TIME_OUT) { var url = ReurnPayApiUrl(Senparc.Weixin.Config.TenPayV3Host + "/{0}v3/pay/transactions/jsapi"); HttpClient hc = null;//注入 TenPayHttpClient tenPayApiRequest = new(_httpClient, _tenpayV3Setting); return(await tenPayApiRequest.SendAsync <JsApiReturnJson>(url, data, timeOut)); }
// TODO: 待测试 /// <summary> /// Native支付下单接口 /// <para>在微信支付服务后台生成Native支付预支付交易单,返回预支付交易会话标识</para> /// </summary> /// <param name="data">微信支付需要POST的Data数据</param> /// <param name="timeOut">超时时间,单位为ms </param> /// <returns></returns> public async Task <NativeReturnJson> NativeAsync(TransactionsRequestData data, int timeOut = Config.TIME_OUT) { try { var url = ReurnPayApiUrl("https://api.mch.weixin.qq.com/{0}v3/pay/transactions/native"); TenPayApiRequest tenPayApiRequest = new(_tenpayV3Setting); return(await tenPayApiRequest.RequestAsync <NativeReturnJson>(url, data, timeOut)); } catch (Exception ex) { SenparcTrace.BaseExceptionLog(ex); return(new NativeReturnJson() { ResultCode = new TenPayApiResultCode() { ErrorMessage = ex.Message } }); } }
/// <summary> /// H5支付下单接口 /// <para>在微信支付服务后台生成H5支付预支付交易单,返回预支付交易会话标识</para> /// </summary> /// <param name="data">微信支付需要POST的Data数据 注意:H5下单scene_info参数必填</param> /// <param name="timeOut">超时时间,单位为ms</param> /// <returns></returns> public async Task <H5ReturnJson> H5Async(TransactionsRequestData data, int timeOut = Config.TIME_OUT) { try { var url = ReurnPayApiUrl(Senparc.Weixin.Config.TenPayV3Host + "/{0}v3/pay/transactions/h5"); TenPayApiRequest tenPayApiRequest = new(_tenpayV3Setting); return(await tenPayApiRequest.RequestAsync <H5ReturnJson>(url, data, timeOut)); } catch (Exception ex) { SenparcTrace.BaseExceptionLog(ex); return(new H5ReturnJson() { ResultCode = new TenPayApiResultCode() { ErrorMessage = ex.Message } }); } }
public void JsAPiAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var price = 100; var name = "单元测试-" + DateTime.Now.ToString(); var sp_billno = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); //TODO: JsApiRequestData修改构造函数参数顺序 jsApiRequestData = new(TenPayV3Info.AppId, TenPayV3Info.MchId, name, sp_billno, new TenpayDateTime(DateTime.Now.AddHours(1)), null, TenPayV3Info.TenPayV3Notify, null, new() { currency = "CNY", total = price }, new(openId), null, null, null); BasePayApis basePayApis = new BasePayApis(); var result = basePayApis.JsApiAsync(jsApiRequestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 预支付结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }