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()); }
// 小程序支付 public async Task <WeChatPayDictionary> LiteAppPay(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 WeChatPayLiteAppSdkRequest { Package = "prepay_id=" + res.PrepayId }; // 将参数[res.parameter]给小程序前端让他调起支付API // https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5 return(await client.ExecuteAsync(jsapiReq, options.Value)); } throw new AceException($"APP支付错误:{res.ErrCode}:{res.ErrCodeDes}"); }
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 <PayResult> LiteAppPay(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 LiteAppPay begin with: {request.Id}"); var res = await client.ExecuteAsync(req, options.Value); if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS") { var jsapiReq = new WeChatPayLiteAppSdkRequest { Package = "prepay_id=" + res.PrepayId }; logger.LogDebug($"Wepay LiteAppPay end with: {request.Id} SUCCESS"); // 将参数[res.parameter]给小程序前端让他调起支付API // https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5 return(new PayResult { Success = true, Params = await client.ExecuteAsync(jsapiReq, options.Value) }); } logger.LogDebug($"Wepay LiteAppPay end with: {request.Id} Fail: {res.ErrCode}:{res.ErrCodeDes}"); return(new PayResult { Success = false, Error = $"{res.ErrCode}:{res.ErrCodeDes}" }); }