public async Task <PaymentOrderBaseResponse> GeneratePaymentOrder(PaymentOrderRequest request) { var apiHost = await _appSettingService.Get(ShopKeys.ApiHost); var wxRequest = new WeChatPayUnifiedOrderRequest { Body = request.Subject, OutTradeNo = request.OrderNo, TotalFee = Convert.ToInt32(request.TotalAmount * 100), OpenId = request.OpenId, TradeType = "JSAPI", SpbillCreateIp = "127.0.0.1", NotifyUrl = $"{apiHost.Trim('/')}/api/mp/pay/notify/{request.OrderNo}", }; var response = await _client.ExecuteAsync(wxRequest); if (response?.ReturnCode == "SUCCESS" && response?.ResultCode == "SUCCESS") { var req = new WeChatPayLiteAppCallPaymentRequest { Package = "prepay_id=" + response.PrepayId }; // https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5 // 将参数(parameter)给 小程序前端 让他调起支付API var parameter = await _client.ExecuteAsync(req); var json = JsonConvert.SerializeObject(parameter); return(JsonConvert.DeserializeObject <PaymentOrderResponse>(json)); } throw new Exception(response?.ReturnMsg); }
public async Task <IActionResult> AppOrder(string out_trade_no, string body, int total_fee, string spbill_create_ip, string notify_url, string trade_type) { var request = new WeChatPayUnifiedOrderRequest() { OutTradeNo = out_trade_no, Body = body, TotalFee = total_fee, SpbillCreateIp = spbill_create_ip, NotifyUrl = notify_url, TradeType = trade_type, }; var response = await _client.ExecuteAsync(request); // 组合"调起支付接口"所需参数 : var unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var timeStamp = (long)((DateTime.Now - unixEpoch).TotalSeconds); var dic = new WeChatPayDictionary { { "appid", _client.Options.AppId }, { "partnerid", _client.Options.MchId }, { "prepayid", response.PrepayId }, { "package", "Sign=WXPay" }, { "noncestr", Guid.NewGuid().ToString("N") }, { "timestamp", timeStamp.ToString() } }; // 将这些参数签名 dic.Add("sign", WeChatPaySignature.SignWithKey(dic, _client.Options.Key)); // 将签名后的参数(dic)给 ios/android端 由其去调起微信APP(https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5) return(Ok(dic)); }
// 扫码支付 public async Task <PayQrResult> QrCodePay(PayRequest request) { var order = OrderService.Get(request.Id); var req = new WeChatPayUnifiedOrderRequest { OutTradeNo = order.Order_SN, Body = order.Name, TotalFee = (int)(order.Order_Money * 100), SpBillCreateIp = App.Context.GetClientIp(), NotifyUrl = request.NotifyUrl, TradeType = WepayTypes.NATIVE }; // res.CodeUrl 给前端生成二维码 logger.LogDebug($"Wepay QrCodePay begin with: {request.Id}"); var res = await client.ExecuteAsync(req, options.Value); if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS") { logger.LogDebug($"Wepay QrCodePay end with: {request.Id} SUCCESS"); return(new PayQrResult { Success = true, CodeUrl = res.CodeUrl, Params = res.ResponseParameters }); } logger.LogDebug($"Wepay QrCodePay end with: {request.Id} Fail: {res.ErrCode}:{res.ErrCodeDes}"); return(new PayQrResult { Success = false, Error = $"{res.ErrCode}:{res.ErrCodeDes}" }); }
public async Task <IActionResult> AppPay(WeChatPayAppPayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest { Body = viewModel.Body, OutTradeNo = viewModel.OutTradeNo, TotalFee = viewModel.TotalFee, SpBillCreateIp = viewModel.SpBillCreateIp, NotifyUrl = viewModel.NotifyUrl, TradeType = viewModel.TradeType }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success) { var req = new WeChatPayAppSdkRequest { PrepayId = response.PrepayId }; var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value); // 将参数(parameter)给 ios/android端 // 让他调起微信APP(https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5) // ViewData["parameter"] = JsonSerializer.Serialize(parameter); ViewData["response"] // = response.Body; return(Ok(response.Body)); } return(Ok(response.Body)); }
public async Task <IActionResult> PubPay(WeChatPayPubPayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest { Body = viewModel.Body, OutTradeNo = viewModel.OutTradeNo, TotalFee = viewModel.TotalFee, SpBillCreateIp = viewModel.SpBillCreateIp, NotifyUrl = viewModel.NotifyUrl, TradeType = viewModel.TradeType, OpenId = viewModel.OpenId }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success) { var req = new WeChatPayJsApiSdkRequest { Package = "prepay_id=" + response.PrepayId }; var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value); // 将参数(parameter)给 公众号前端 // 让他在微信内H5调起支付(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6) // ViewData["parameter"] = JsonSerializer.Serialize(parameter); ViewData["response"] // = response.Body; return(Ok(response.Body)); } //ViewData["response"] = response.Body; return(Ok(response.Body)); }
public async Task <IActionResult> LiteAppPay(WeChatPayLiteAppPayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest { Body = viewModel.Body, OutTradeNo = viewModel.OutTradeNo, TotalFee = viewModel.TotalFee, SpBillCreateIp = viewModel.SpBillCreateIp, NotifyUrl = viewModel.NotifyUrl, TradeType = viewModel.TradeType, OpenId = viewModel.OpenId }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); if (response.ReturnCode == "SUCCESS" && response.ResultCode == "SUCCESS") { var req = new WeChatPayLiteAppSdkRequest { Package = "prepay_id=" + response.PrepayId }; var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value); // 将参数(parameter)给 小程序前端 让他调起支付API(https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5) ViewData["parameter"] = JsonConvert.SerializeObject(parameter); ViewData["response"] = response.ResponseBody; return(View()); } ViewData["response"] = response.ResponseBody; return(View()); }
// APP支付 public async Task <WeChatPayDictionary> AppPay(PayRequest request) { var order = orderService.GetByRef(request.Id); var req = new WeChatPayUnifiedOrderRequest { OutTradeNo = order.Order_SN, Body = order.Name, TotalFee = (int)(order.Pay_Money * 100), SpBillCreateIp = App.Context.GetClientIp(), NotifyUrl = request.NotifyUrl, TradeType = WepayTypes.APP }; var res = await client.ExecuteAsync(req, options.Value); if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS") { var appReq = new WeChatPayAppSdkRequest { PrepayId = res.PrepayId }; // 将参数(parameter)给 ios/android端 让他调起微信APP // https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 return(await client.ExecuteAsync(appReq, options.Value)); } throw new AceException($"APP支付错误:{res.ErrCode}:{res.ErrCodeDes}"); }
/// <summary> /// 生成支付订单 /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <PaymentOrderResponse> GeneratePaymentOrder(GeneratePaymentOrderRequest request) { var ip = _accessor.HttpContext.Connection.RemoteIpAddress.ToString(); var hostUrl = _accessor.HttpContext.Request.GetHostUrl(); var wxRequest = new WeChatPayUnifiedOrderRequest { Body = request.Subject, OutTradeNo = request.OrderNo, TotalFee = request.TotalFee, OpenId = request.OpenId, TradeType = "JSAPI", SpBillCreateIp = ip, NotifyUrl = $"{hostUrl}/api/v1/payment/notify/unifiedorder/{request.OrderNo}" }; var response = await _client.ExecuteAsync(wxRequest, _wechatPayOption); if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success) { var req = new WeChatPayMiniProgramSdkRequest { Package = $"prepay_id={response.PrepayId}" }; var parameter = await _client.ExecuteAsync(req, _wechatPayOption); var json = JsonConvert.SerializeObject(parameter); return(JsonConvert.DeserializeObject <PaymentOrderResponse>(json)); } throw new Exception(response.ErrCodeDes); }
// 公众号支付 public async Task <WeChatPayDictionary> PubPay(PayRequest request) { var order = orderService.GetByRef(request.Id); var req = new WeChatPayUnifiedOrderRequest { OutTradeNo = order.Order_SN, Body = order.Name, TotalFee = (int)(order.Pay_Money * 100), SpBillCreateIp = App.Context.GetClientIp(), NotifyUrl = request.NotifyUrl, TradeType = WepayTypes.JSAPI, OpenId = request.OpenId }; var res = await client.ExecuteAsync(req, options.Value); if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS") { var jsapiReq = new WeChatPayJsApiSdkRequest { Package = "prepay_id=" + res.PrepayId }; // 将参数(parameter)给 公众号前端 让他在微信内H5调起支付 // https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6 return(await client.ExecuteAsync(jsapiReq, options.Value)); } throw new AceException($"公众号支付错误:{res.ErrCode}:{res.ErrCodeDes}"); }
public async Task <IActionResult> AppPay(WeChatPayAppPayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest() { Body = viewModel.Body, OutTradeNo = viewModel.OutTradeNo, TotalFee = viewModel.TotalFee, SpbillCreateIp = viewModel.SpbillCreateIp, NotifyUrl = viewModel.NotifyUrl, TradeType = viewModel.TradeType, }; var response = await _client.ExecuteAsync(request); if (response.ReturnCode == "SUCCESS" && response.ResultCode == "SUCCESS") { var req = new WeChatPayAppCallPaymentRequest() { PrepayId = response.PrepayId, }; var parameter = await _client.ExecuteAsync(req); // 将参数(parameter)给 ios/android端 让他调起微信APP(https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5) ViewData["parameter"] = JsonConvert.SerializeObject(parameter); ViewData["response"] = response.Body; return(View()); } ViewData["response"] = response.Body; return(View()); }
public async Task <IActionResult> PubPay(WeChatPayPubPayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest() { Body = viewModel.Body, OutTradeNo = viewModel.OutTradeNo, TotalFee = viewModel.TotalFee, SpbillCreateIp = viewModel.SpbillCreateIp, NotifyUrl = viewModel.NotifyUrl, TradeType = viewModel.TradeType, OpenId = viewModel.OpenId }; var response = await _client.ExecuteAsync(request); if (response.ReturnCode == "SUCCESS" && response.ResultCode == "SUCCESS") { var req = new WeChatPayH5CallPaymentRequest() { Package = "prepay_id=" + response.PrepayId, }; var parameter = await _client.ExecuteAsync(req); // 将参数(parameter)给 公众号前端 让他在微信内H5调起支付(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6) ViewData["parameter"] = JsonConvert.SerializeObject(parameter); ViewData["response"] = response.Body; return(View()); } ViewData["response"] = response.Body; return(View()); }
public async Task <IActionResult> H5Pay(WeChatPayH5PayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest() { Body = viewModel.Body, OutTradeNo = viewModel.OutTradeNo, TotalFee = viewModel.TotalFee, SpbillCreateIp = viewModel.SpbillCreateIp, NotifyUrl = viewModel.NotifyUrl, TradeType = viewModel.TradeType, }; var response = await _client.ExecuteAsync(request); // mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟。 return(Redirect(response.MwebUrl)); }
public async Task <IActionResult> UnifiedOrder(string out_trade_no, string body, int total_fee, string spbill_create_ip, string notify_url, string trade_type, string openid) { var request = new WeChatPayUnifiedOrderRequest() { OutTradeNo = out_trade_no, Body = body, TotalFee = total_fee, SpbillCreateIp = spbill_create_ip, NotifyUrl = notify_url, TradeType = trade_type, OpenId = openid, }; var response = await _client.ExecuteAsync(request); return(Ok(response.Body)); }
public async Task <IActionResult> H5Pay(WeChatPayH5PayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest() { Body = viewModel.Body, OutTradeNo = viewModel.OutTradeNo, TotalFee = viewModel.TotalFee, SpbillCreateIp = viewModel.SpbillCreateIp, NotifyUrl = viewModel.NotifyUrl, TradeType = viewModel.TradeType, }; var response = await _client.ExecuteAsync(request); ViewData["response"] = response.Body; return(View()); }
// 扫码支付 public async Task <WeChatPayUnifiedOrderResponse> QrCodePay(PayRequest request) { var order = orderService.GetByRef(request.Id); var req = new WeChatPayUnifiedOrderRequest { OutTradeNo = order.Order_SN, Body = order.Name, TotalFee = (int)(order.Pay_Money * 100), SpBillCreateIp = App.Context.GetClientIp(), NotifyUrl = request.NotifyUrl, TradeType = WepayTypes.NATIVE }; // res.CodeUrl 给前端生成二维码 return(await client.ExecuteAsync(req, options.Value)); }
public async Task <PaymentOrderBaseResponse> GeneratePaymentOrder(PaymentOrderRequest request) { var ip = Dns.GetHostEntry(Dns.GetHostName()) .AddressList.FirstOrDefault(address => address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)?.ToString() ?? "127.0.0.1"; var apiHost = await _appSettingService.Get(ShopKeys.ApiHost); var wxRequest = new WeChatPayUnifiedOrderRequest { Body = request.Subject, OutTradeNo = request.OrderNo, TotalFee = Convert.ToInt32(request.TotalAmount * 100), OpenId = request.OpenId, TradeType = "JSAPI", //SpbillCreateIp = "127.0.0.1", SpBillCreateIp = ip, NotifyUrl = $"{apiHost.Trim('/')}/api/mp/pay/notify/{request.OrderNo}", }; var config = await _appSettingService.Get <MiniProgramOptions>(); var opt = new WeChatPayOptions() { AppId = config.AppId, MchId = config.MchId, Secret = config.AppSecret, Key = config.Key }; var response = await _client.ExecuteAsync(wxRequest, opt); if (response?.ReturnCode == WeChatPayCode.Success && response?.ResultCode == WeChatPayCode.Success) { var req = new WeChatPayLiteAppSdkRequest { Package = $"prepay_id={response.PrepayId}" }; // https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5 // 将参数(parameter)给 小程序前端 让他调起支付API var parameter = await _client.ExecuteAsync(req, opt); var json = JsonConvert.SerializeObject(parameter); return(JsonConvert.DeserializeObject <PaymentOrderResponse>(json)); } throw new Exception(response?.ReturnMsg); }
public async Task <IActionResult> PubPay(string body, string out_trade_no, int total_fee, string spbill_create_ip, string notify_url, string trade_type, string openid) { var request = new WeChatPayUnifiedOrderRequest { Body = body, OutTradeNo = out_trade_no, TotalFee = total_fee, SpbillCreateIp = spbill_create_ip, NotifyUrl = notify_url, TradeType = trade_type, OpenId = openid }; var response = await _client.ExecuteAsync(request); ResponseModel responseModel = new ResponseModel() { code = HTTPResponseCode.PartialContent, data = response.Body }; Dictionary <string, string> result = new Dictionary <string, string>(); result.Add("return_code", response.ReturnCode); result.Add("return_msg", response.ReturnMsg); if (response.ReturnCode == "SUCCESS" && response.ResultCode == "SUCCESS") { var req = new WeChatPayH5CallPaymentRequest { Package = "prepay_id=" + response.PrepayId }; var parameter = await _client.ExecuteAsync(req); // 将参数(parameter)给 公众号前端 让他在微信内H5调起支付(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6) result.Add("parameter", JsonConvert.SerializeObject(parameter)); responseModel.code = HTTPResponseCode.Successful; } else { responseModel.code = HTTPResponseCode.BadRequest; result.Add("err_code", response.ErrCode); result.Add("err_code_des", response.ErrCodeDes); } responseModel.message = JsonConvert.SerializeObject(result); return(Json(responseModel)); }
public async Task <IActionResult> QrCodePay(WeChatPayQrCodePayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest { Body = viewModel.Body, OutTradeNo = viewModel.OutTradeNo, TotalFee = viewModel.TotalFee, SpBillCreateIp = viewModel.SpBillCreateIp, NotifyUrl = viewModel.NotifyUrl, TradeType = viewModel.TradeType }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); // response.CodeUrl 给前端生成二维码 ViewData["qrcode"] = response.CodeUrl; ViewData["response"] = response.ResponseBody; return(View()); }
// H5支付 public async Task <WeChatPayUnifiedOrderResponse> H5Pay(PayRequest request) { var order = orderService.GetByRef(request.Id); var req = new WeChatPayUnifiedOrderRequest { OutTradeNo = order.Order_SN, Body = order.Name, TotalFee = (int)(order.Pay_Money * 100), SpBillCreateIp = App.Context.GetClientIp(), NotifyUrl = request.NotifyUrl, TradeType = WepayTypes.MWEB }; // mweb_url为拉起微信支付收银台的中间页面 // 可通过访问该url来拉起微信客户端完成支付 // res.mweb_url的有效期为5分钟 return(await client.ExecuteAsync(req, options.Value)); }
public async Task <IActionResult> H5Pay(WeChatPayH5PayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest { Body = viewModel.Body, OutTradeNo = viewModel.OutTradeNo, TotalFee = viewModel.TotalFee, SpBillCreateIp = viewModel.SpBillCreateIp, NotifyUrl = viewModel.NotifyUrl, TradeType = viewModel.TradeType }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); // mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟。 ViewData["response"] = response.Body; return(View()); }
public async Task <IActionResult> H5Pay(string body, string out_trade_no, int total_fee, string spbill_create_ip, string notify_url, string trade_type) { var request = new WeChatPayUnifiedOrderRequest { Body = body, OutTradeNo = out_trade_no, TotalFee = total_fee, SpbillCreateIp = spbill_create_ip, NotifyUrl = notify_url, TradeType = trade_type }; var response = await _client.ExecuteAsync(request); // mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟。 //return Redirect(response.MwebUrl); ResponseModel responseModel = new ResponseModel() { code = HTTPResponseCode.PartialContent, data = response.Body }; Dictionary <string, string> result = new Dictionary <string, string>(); result.Add("return_code", response.ReturnCode); result.Add("return_msg", response.ReturnMsg); if (response.ReturnCode == "SUCCESS" && response.ResultCode == "SUCCESS") { // mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟。 result.Add("mweb_url", response.MwebUrl); responseModel.code = HTTPResponseCode.Successful; } else { responseModel.code = HTTPResponseCode.BadRequest; result.Add("err_code", response.ErrCode); result.Add("err_code_des", response.ErrCodeDes); } responseModel.message = JsonConvert.SerializeObject(result); return(Json(responseModel)); }
// 公众号支付 public async Task <PayResult> PubPay(PayRequest request) { var order = OrderService.Get(request.Id); var req = new WeChatPayUnifiedOrderRequest { OutTradeNo = order.Order_SN, Body = order.Name, TotalFee = (int)(order.Order_Money * 100), SpBillCreateIp = App.Context.GetClientIp(), NotifyUrl = request.NotifyUrl, TradeType = WepayTypes.JSAPI, OpenId = request.OpenId }; logger.LogDebug($"Wepay PubPay begin with: {request.Id}"); var res = await client.ExecuteAsync(req, options.Value); if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS") { var jsapiReq = new WeChatPayJsApiSdkRequest { Package = "prepay_id=" + res.PrepayId }; logger.LogDebug($"Wepay PubPay begin with: {request.Id} SUCCESS"); // 将参数(parameter)给 公众号前端 让他在微信内H5调起支付 // https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6 return(new PayResult { Success = true, Params = await client.ExecuteAsync(jsapiReq, options.Value) }); } logger.LogDebug($"Wepay PubPay end with: {request.Id} Fail: {res.ErrCode}:{res.ErrCodeDes}"); return(new PayResult { Success = false, Error = $"{res.ErrCode}:{res.ErrCodeDes}" }); }
public async Task <IActionResult> PubPay(WeChatPayPubPayViewModel viewModel) { var request = new WeChatPayUnifiedOrderRequest { Body = "测试商品", //商品名称 OutTradeNo = DateTime.Now.ToString("yyyyMMhhddmmss"), //单号 TotalFee = 120, //金额*100 SpbillCreateIp = "111.231.71.111", //获取终端Ip, NotifyUrl = "http://www.shhjy.cn/access/unifiedorder", // viewModel.NotifyUrl TradeType = "JSAPI", //viewModel.TradeType, OpenId = "or1ZywUA0RJl6glVkPZC1a7h-Us8" //viewModel.OpenId// //Body = viewModel.Body, //OutTradeNo = viewModel.OutTradeNo, //TotalFee = viewModel.TotalFee, //SpbillCreateIp = viewModel.SpbillCreateIp, //NotifyUrl = viewModel.NotifyUrl, //TradeType = viewModel.TradeType, //OpenId = viewModel.OpenId }; var response = await _client.ExecuteAsync(request); if (response.ReturnCode == "SUCCESS" && response.ResultCode == "SUCCESS") { var req = new WeChatPayH5CallPaymentRequest { Package = "prepay_id=" + response.PrepayId }; var parameter = await _client.ExecuteAsync(req); // 将参数(parameter)给 公众号前端 让他在微信内H5调起支付(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6) ViewData["parameter"] = JsonConvert.SerializeObject(parameter); ViewData["response"] = response.Body; return(View()); } ViewData["response"] = response.Body; return(View()); }
// APP支付 public async Task <PayResult> AppPay(PayRequest request) { var order = OrderService.Get(request.Id); var req = new WeChatPayUnifiedOrderRequest { OutTradeNo = order.Order_SN, Body = order.Name, TotalFee = (int)(order.Order_Money * 100), SpBillCreateIp = App.Context.GetClientIp(), NotifyUrl = request.NotifyUrl, TradeType = WepayTypes.APP }; logger.LogDebug($"Wepay AppPay begin with: {request.Id}"); var res = await client.ExecuteAsync(req, options.Value); if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS") { var appReq = new WeChatPayAppSdkRequest { PrepayId = res.PrepayId }; logger.LogDebug($"Wepay AppPay end with: {request.Id} SUCCESS"); // 将参数(parameter)给 ios/android端 让他调起微信APP // https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 return(new PayResult { Success = true, Params = await client.ExecuteAsync(appReq, options.Value) }); } logger.LogDebug($"Wepay AppPay end with: {request.Id} Fail: {res.ErrCode}:{res.ErrCodeDes}"); return(new PayResult { Success = false, Error = $"{res.ErrCode}:{res.ErrCodeDes}" }); }
// H5支付 public async Task <PayWebResult> H5Pay(PayRequest request) { var order = OrderService.Get(request.Id); var req = new WeChatPayUnifiedOrderRequest { OutTradeNo = order.Order_SN, Body = order.Name, TotalFee = (int)(order.Order_Money * 100), SpBillCreateIp = App.Context.GetClientIp(), NotifyUrl = request.NotifyUrl, TradeType = WepayTypes.MWEB }; // mweb_url为拉起微信支付收银台的中间页面 // 可通过访问该url来拉起微信客户端完成支付 // res.mweb_url的有效期为5分钟 logger.LogDebug($"Wepay H5Pay begin with: {request.Id}"); var res = await client.ExecuteAsync(req, options.Value); if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS") { logger.LogDebug($"Wepay H5Pay end with: {request.Id} SUCCESS"); return(new PayWebResult { Success = true, WebUrl = res.MwebUrl, Params = res.ResponseParameters }); } logger.LogDebug($"Wepay H5Pay end with: {request.Id} Fail: {res.ErrCode}:{res.ErrCodeDes}"); return(new PayWebResult { Success = false, Error = $"{res.ErrCode}:{res.ErrCodeDes}" }); }