public async Task <IActionResult> MiniProgramPay(WeChatPayMiniProgramPayViewModel 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 WeChatPayMiniProgramSdkRequest { 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"] = JsonSerializer.Serialize(parameter); ViewData["response"] // = response.Body; return(Ok(response.Body)); } return(Ok(response.Body)); }
/// <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 <IActionResult> MiniProgramPay(WeChatPayPubPayV3ViewModel viewModel) { var model = new WeChatPayTransactionsJsApiBodyModel { AppId = _optionsAccessor.Value.AppId, MchId = _optionsAccessor.Value.MchId, Amount = new Amount { Total = viewModel.Total, Currency = "CNY" }, Description = viewModel.Description, NotifyUrl = viewModel.NotifyUrl, OutTradeNo = viewModel.OutTradeNo, Payer = new PayerInfo { OpenId = viewModel.OpenId } }; var request = new WeChatPayTransactionsJsApiRequest(); request.SetBodyModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); if (!response.IsError) { var req = new WeChatPayMiniProgramSdkRequest { Package = "prepay_id=" + response.PrepayId }; var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value); // 将参数(parameter)给 小程序端 // https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_4.shtml ViewData["parameter"] = JsonSerializer.Serialize(parameter); ViewData["response"] = response.Body; return(View()); } ViewData["response"] = response.Body; return(View()); }