/// <summary> /// 条码支付 /// </summary> public void BarCodePay(decimal amount, string orderNo, string authCode, string subject, string storeId, string terminalId) { bool success = false; //组装业务参数 var model = new AlipayTradePayModel() { OutTradeNo = orderNo, TotalAmount = amount.ToString(), Scene = "bar_code", AuthCode = authCode, Subject = subject, StoreId = storeId, TerminalId = terminalId, TimeoutExpress = "2m" }; var request = new AlipayTradePayRequest(); request.SetBizModel(model); AlipayTradePayResponse response = aopClient.Execute(request); if (response != null && response.Code == "10000") { success = true; //response.TradeNo 支付宝28位交易号 } //记日志response.ToJson(); //return success; }
public async Task <IActionResult> Pay(string out_trade_no, string subject, string total_amount, string body, string scene, string auth_code) { var model = new AlipayTradePayModel { OutTradeNo = out_trade_no, Subject = subject, Scene = scene, AuthCode = auth_code, TotalAmount = total_amount, Body = body }; var req = new AlipayTradePayRequest(); req.SetBizModel(model); var response = await _client.ExecuteAsync(req); ResponseModel responseModel = new ResponseModel() { code = HTTPResponseCode.PartialContent, data = response.Body }; if (response.IsError) { responseModel.code = HTTPResponseCode.BadRequest; responseModel.message = response.Msg; } else { responseModel.code = HTTPResponseCode.Successful; } return(Json(responseModel)); }
public AlipayOrderCreationResult GenerateAlipayPaymentUrl(AlipayOrderModel payment) { var payModel = new AlipayTradePayModel { Subject = payment.Subject, Body = payment.Body, OutTradeNo = payment.OrderNo, TotalAmount = payment.Amount.ToString("f2"), DisablePayChannels = payment.AllowCreditCard ? null : "credit_group", ProductCode = "FAST_INSTANT_TRADE_PAY" }; var wapPayRequest = new AlipayTradeWapPayRequest(); wapPayRequest.SetNotifyUrl(payment.NotifyUrl ?? _options.DefaultNotifyUrl); wapPayRequest.SetReturnUrl(payment.ReturnUrl); wapPayRequest.SetBizModel(payModel); var wapPayResponse = _alipay.SdkExecute(wapPayRequest); var pagePayRequest = new AlipayTradePagePayRequest(); pagePayRequest.SetNotifyUrl(payment.NotifyUrl ?? _options.DefaultNotifyUrl); pagePayRequest.SetReturnUrl(payment.ReturnUrl); pagePayRequest.SetBizModel(payModel); var pagePayResponse = _alipay.SdkExecute(pagePayRequest); return new AlipayOrderCreationResult { MobileWebPaymentUrl = _options.GatewayUrl + "?" + wapPayResponse.Body, DesktopPagePaymentUrl = _options.GatewayUrl + "?" + pagePayResponse.Body }; }
/// <summary> /// 统一收单交易支付接口 /// </summary> /// <param name="request">提交给统一下单API的参数</param> /// <param name="config"></param> /// <param name="timeOut">超时时间</param> /// <returns>成功时返回,其他抛异常</returns> public static async Task <AlipayTradePayResponse> CreateOrder(AlipayTradePayModel request, AlipayConfig config, int timeOut = 6) { IAopClient client = new AopClient(AlipayConstants.GATEWAYURL, config.AppId, config.PrivateKey, config.Format, config.Version, config.SignType, config.AliPublicKey, config.Charset, config.KeyFromFile); var requestData = new AlipayTradePayRequest(); requestData.SetNotifyUrl(config.NotifyUrl); requestData.SetReturnUrl(config.QuitUrl); requestData.SetBizModel(request); return(await client.ExecuteAsync(requestData)); }
public async Task <IActionResult> Pay(AlipayTradePayViewModel viewModel) { var model = new AlipayTradePayModel { OutTradeNo = viewModel.OutTradeNo, Subject = viewModel.Subject, Scene = viewModel.Scene, AuthCode = viewModel.AuthCode, TotalAmount = viewModel.TotalAmount, Body = viewModel.Body }; var req = new AlipayTradePayRequest(); req.SetBizModel(model); var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value); return(Ok(response.Body)); }
public async Task <IActionResult> Pay(string out_trade_no, string scene, string auth_code, string subject, string total_amount, string body, string notify_url) { var model = new AlipayTradePayModel() { Scene = scene, AuthCode = auth_code, Body = body, Subject = subject, TotalAmount = total_amount, OutTradeNo = out_trade_no, }; var req = new AlipayTradePayRequest(); req.SetBizModel(model); req.SetNotifyUrl(notify_url); var response = await _client.ExecuteAsync(req); return(Ok(response.Body)); }
public async Task <IActionResult> Pay(AlipayTradePayViewModel viewModel) { var model = new AlipayTradePayModel { OutTradeNo = viewModel.OutTradeNo, Subject = viewModel.Subject, Scene = viewModel.Scene, AuthCode = viewModel.AuthCode, TotalAmount = viewModel.TotalAmount, Body = viewModel.Body }; var req = new AlipayTradePayRequest(); req.SetBizModel(model); var response = await _client.ExecuteAsync(req); ViewData["response"] = response.Body; return(View()); }
// 条码/声波支付 public async Task <AlipayTradePayResponse> Pay(PayRequest request) { var order = OrderService.Get(request.Id); var model = new AlipayTradePayModel { OutTradeNo = order.Order_SN, Subject = order.Name, Scene = "bar_code", //wave_code AuthCode = request.AuthCode, TotalAmount = order.Order_Money.ToString("n"), Body = order.Remark, ProductCode = request.ProduceCode ?? "FACE_TO_FACE_PAYMENT" }; var req = new AlipayTradePayRequest(); req.SetBizModel(model); return(await client.ExecuteAsync(req, options.Value)); }
/// <summary> /// 网页版 提交支付即可 /// </summary> public void PostAlipay(string orderNo, string totalFee, string subject, string body) { // pr单号,即为订单编号; //var url = AliPayHelper.CreateRSASignedOrderString(entity.BPR_CODE, 0.01, entity.BPR_CODE); //FileLogHelper.WriteLog("signal:"+ url); AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); request.SetReturnUrl(AlipayConfig.ReturnUrl); request.SetNotifyUrl(AlipayConfig.NotifyUrl); AlipayTradePayModel model = new AlipayTradePayModel(); model.Body = body; model.Subject = subject; model.TotalAmount = totalFee; model.ProductCode = "FAST_INSTANT_TRADE_PAY"; model.OutTradeNo = orderNo; request.SetBizModel(model); AlipayTradePagePayResponse response = null; try { System.Web.HttpContext.Current.Response.Write("正在跳转支付宝支付"); IAopClient client = new DefaultAopClient(AlipayConfig.GatewayUrl, AlipayConfig.AppId, AlipayConfig.MerchantPrivateKey, "json", "1.0", AlipayConfig.SignType, AlipayConfig.AlipayPublicKey, "utf-8"); response = client.pageExecute(request); System.Web.HttpContext.Current.Response.Clear(); System.Web.HttpContext.Current.Response.ContentType = "text/html"; System.Web.HttpContext.Current.Response.Write(response.Body); } catch (Exception e) { throw e; } }
public async Task <IActionResult> Pay(AlipayTradePayViewModel viewModel) { if (_Interceptor != null) { return(Ok("this is _Interceptor")); } var model = new AlipayTradePayModel { OutTradeNo = viewModel.OutTradeNo, Subject = viewModel.Subject, Scene = viewModel.Scene, AuthCode = viewModel.AuthCode, TotalAmount = viewModel.TotalAmount, Body = viewModel.Body }; var req = new AlipayTradePayRequest(); req.SetBizModel(model); var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value); ViewData["response"] = response.Body; return(View()); }
public ActionResult FaceToPay(string orderName, string orderAmount, string outTradeNo, bool pin = false) { //域名 IAopClient client = new DefaultAopClient(URL, APPID, APP_PRIVATE_KEY, FORMAT, "1.0", "RSA2", ALIPAY_PUBLIC_KEY, CHARSET, false); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称如: AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//创建API对应的request类 //SDK已经封装掉了公共参数,这里只需要传入业务参数 Random ran = new Random(); int RandKey = ran.Next(100, 999); AlipayTradePayModel model = new AlipayTradePayModel { OutTradeNo = outTradeNo + RandKey, TotalAmount = orderAmount, Subject = orderName, //StoreId = "NJ_001", TimeoutExpress = "90m" }; request.SetBizModel(model); //此次只是参数展示,未进行字符串转义,实际情况下请转义 //request.BizContent = "{" + // " \"out_trade_no\":\"20150320010101002\"," + // " \"total_amount\":\"88.88\"," + // " \"subject\":\"Iphone6 16G\"," + // " \"store_id\":\"NJ_001\"," + // " \"timeout_express\":\"90m\"}"; AlipayTradePrecreateResponse response = client.Execute(request); AlipayTradePrecreateContentBuilder builder = BuildPrecreateContent(model.Subject, model.TotalAmount, model.OutTradeNo); //如果需要接收扫码支付异步通知,那么请把下面两行注释代替本行。 //推荐使用轮询撤销机制,不推荐使用异步通知,避免单边账问题发生。 AlipayF2FPrecreateResult precreateResult = serviceClient.tradePrecreate(builder); //string notify_url = "http://10.5.21.14/notify_url.aspx"; //商户接收异步通知的地址 //AlipayF2FPrecreateResult precreateResult = serviceClient.tradePrecreate(builder, notify_url); //payResponse.QrCode即二维码对于的链接 //将链接用二维码工具生成二维码打印出来,顾客可以用支付宝钱包扫码支付。 var bitmap = new Bitmap(Path.Combine(_hostingEnvironment.WebRootPath, "images/error.png")); //调用成功,则处理业务逻辑 if (!response.IsError) { bitmap.Dispose(); bitmap = RenderQrCode(response.QrCode); //轮询订单结果 //根据业务需要,选择是否新起线程进行轮询 ParameterizedThreadStart parStart = new ParameterizedThreadStart(LoopQuery); //Thread myThread = new Thread(parStart); //object o = precreateResult.response.OutTradeNo; //myThread.Start(o); var res = new { success = true, out_trade_no = response.OutTradeNo, tot = model.TotalAmount, suj = model.Subject, qr_code = response.QrCode //发现返回的是一个网址,后续需要用这个网址字符串创建二维码 }; if (pin) { return(Json(res)); } else { MemoryStream ms = new MemoryStream(); bitmap.Save(ms, ImageFormat.Png); byte[] bytes = ms.GetBuffer(); return(File(bytes, "image/png")); } } else { //return Content("调用失败,原因:" + response.Msg + "," + response.SubMsg); var res = new { success = false, }; return(Json(res)); } ////以下返回结果的处理供参考。 ////payResponse.QrCode即二维码对于的链接 ////将链接用二维码工具生成二维码打印出来,顾客可以用支付宝钱包扫码支付 //var bitmap = new Bitmap(Path.Combine(_hostingEnvironment.WebRootPath, "images/error.png")); //switch (precreateResult.Status) //{ // case ResultEnum.SUCCESS: // bitmap.Dispose(); // bitmap = RenderQrCode(precreateResult.response.QrCode); // //轮询订单结果 // //根据业务需要,选择是否新起线程进行轮询 // ParameterizedThreadStart parStart = new ParameterizedThreadStart(LoopQuery); // Thread myThread = new Thread(parStart); // object o = precreateResult.response.OutTradeNo; // myThread.Start(o); // break; // case ResultEnum.FAILED: // Console.WriteLine("生成二维码失败:" + precreateResult.response.Body); // break; // case ResultEnum.UNKNOWN: // Console.WriteLine("生成二维码失败:" + (precreateResult.response == null ? "配置或网络异常,请检查后重试" : "系统异常,请更新外部订单后重新发起请求")); // break; //} //MemoryStream ms = new MemoryStream(); //bitmap.Save(ms, ImageFormat.Png); //byte[] bytes = ms.GetBuffer(); //return File(bytes, "image/png"); }