public async Task <IActionResult> Wechatpay() { var config = new WechatpayConfig { AppId = "wxefd7e95dd1ec11ae", SignKey = "I2lgA4cnK75mHULNqAaoZ3o4SSHMAY48", MchId = "1495057202" }; var request = new WechatTradeAppPayRequest { TotalFee = 100, OutTradeNo = $"test_{DateTime.Now.ToString("yyyyMMddHHmmss")}", ProductId = $"test_{DateTime.Now.ToString("yyyyMMddHHmmss")}", Body = "产品", Detail = "产品", TimeExpire = DateTime.Now.AddHours(2).ToString("yyyyMMddHHmmss"), TradeType = WechatConstants.MWEB, TimeStart = DateTime.Now.ToString("yyyyMMddHHmmss"), NotifyUrl = "http://mobiletest.emoney.cn/mdata/payment/api/wechat/wechatnotity" }; var response = await WechatpayClient.CreateOrderAsync(request, config); var ms = Convert.FromBase64String((await GetImage(response.CodeUrl)).Replace("data:image/jpeg;base64,", "")); return(File(ms, "image/png")); }
public async Task Test1() { var config = new WechatpayConfig(); var request = new WechatTradeAppPayRequest { TotalFee = 100, OutTradeNo = "202007297777", Body = "产品", Detail = "产品", TimeExpire = DateTime.Now.AddDays(15).ToString("yyyyMMddHHmmss"), TradeType = WechatConstants.APP, TimeStart = DateTime.Now.ToString("yyyyMMddHHmmss"), NotifyUrl = "" }; var response = await WechatpayClient.CreateOrderAsync(request, config); if (string.IsNullOrEmpty(response.Body)) { Assert.Fail(); } else { Assert.Pass(); } }
/// <summary> /// 统一下单 /// </summary> /// <param name="request">提交给统一下单API的参数</param> /// <param name="config"></param> /// <param name="timeOut">超时时间</param> /// <returns>成功时返回,其他抛异常</returns> public static async Task <WechatTradeAppPayResponse> CreateOrderAsync(WechatTradeAppPayRequest request, WechatpayConfig config, int timeOut = 6) { //检测必填参数 if (string.IsNullOrEmpty(request.OutTradeNo)) { throw new Exception("缺少统一支付接口必填参数out_trade_no!"); } else if (string.IsNullOrEmpty(request.Body)) { throw new Exception("缺少统一支付接口必填参数body!"); } else if (request.TotalFee <= 0) { throw new Exception("缺少统一支付接口必填参数total_fee!"); } else if (string.IsNullOrEmpty(request.TradeType)) { throw new Exception("缺少统一支付接口必填参数trade_type!"); } //关联参数 if (request.TradeType == "JSAPI" && string.IsNullOrEmpty(request.OpenId)) { throw new Exception("统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!"); } if (request.TradeType == "NATIVE" && string.IsNullOrEmpty(request.ProductId)) { throw new Exception("统一支付接口中,缺少必填参数product_id!trade_type为JSAPI时,product_id为必填参数!"); } //异步通知url未设置,则使用配置文件中的url if (string.IsNullOrEmpty(request.NotifyUrl)) { throw new Exception("缺少统一支付接口必填参数notify_url"); } var result = await HttpService.ExecuteAsync(request, config, WechatConstants.UnifiedOrderUrl); if (result.ReturnCode != WechatConstants.SUCCESS && result.ResultCode != WechatConstants.SUCCESS) { throw new Exception(result.ReturnMsg); } var data = HttpService.GetAppData(config, result.PrepayId, request.TradeType, result.CodeUrl); result.Body = data.ToXml(); return(result); }