public async Task ExecuteAsync(HttpContext context) { try { var body = (await context.Request.ReadFormAsync()).AsNameValueCollection(); if (body?.Count == 0) { throw new ArgumentNullException(nameof(body)); } var request = new AppPayRequest(); request.AddParameters(new AppPayModel() { Body = body.Get("Body"), OutTradeNo = body.Get("Out_Trade_No"), TotalFee = int.Parse(body.Get("Total_Amount")) }); await context.Response.WriteAsync((await _client.ExecuteAsync(request)).ToJson()); } catch (System.Exception ex) { context.Response.StatusCode = StatusCodes.Status500InternalServerError; await context.Response.WriteAsync(ex.Message); } context.Response.ContentType = "application/json; charset=UTF-8"; await context.Response.Body.FlushAsync(); }
public async Task <OkObjectResult> AppPay(string Body, string Out_Trade_No, int Total_Amount) { var request = new AppPayRequest(); request.AddParameters(new AppPayModel() { Body = Body, OutTradeNo = Out_Trade_No, TotalFee = Total_Amount }); return(Ok(await _client.ExecuteAsync(request))); }
public async Task AppPayTest() { var gateway = GetService <IGateway>(); var request = new AppPayRequest(new AppPayModel { OutTradeNo = "abc001", TotalAmount = 0.01, Subject = "spear_pay", Body = "test" }); var resp = await gateway.Execute(request); Print(resp); }
public ActionResult AppPay(string out_trade_no, int total_amount, string body) { var request = new AppPayRequest(); request.AddGatewayData(new AppPayModel() { Body = body, TotalAmount = total_amount, OutTradeNo = out_trade_no }); var response = _gateway.Execute(request); return(Json(response)); }
public IActionResult AppPay(string order_id, int total_amount, string body) { var request = new AppPayRequest(); request.AddGatewayData(new AppPayModel() { Body = body, TotalAmount = total_amount, OrderId = order_id }); var response = _gateway.Execute(request); return(Json(response)); }
public void TestAppPay() { var request = new AppPayRequest(); request.AddGatewayData(new AppPayModel() { TotalAmount = 1, Subject = "支付宝手机APP支付测试", OutTradeNo = _outTradeNo }); var response = _alipayGateway.Execute(request); _output.WriteLine(response.OrderInfo); Assert.NotNull(response.OrderInfo); }
public AppPayResponse(AppPayRequest request) { OrderInfo = request.GatewayData.ToUrl(); }
public object PayMerchScanDyna(AppPayRequest param) { try { int cid = param.CID; var storeId = param.StoreId; string mapcid = string.Empty; //查询门店支付授权 var authorization = GetCompanyPayInfo(cid, storeId, PayConst.QCTAPICODE_A, out mapcid);//26=主扫支付apicode if (!authorization.Successed) { throw new MessageException(authorization.Message); } var payStoreId = authorization.Data.ToString();//中转第三方门店号 //验证用户信息 if (!string.IsNullOrEmpty(param.MemberId)) { var veriMemberIntegral = VeriMemberIntegral(param.MemberId, param.UseIntegral); if (!veriMemberIntegral.Successed) { throw new MessageException(veriMemberIntegral.Message); } } if (param.PayToken.Length == 0 || param.PayToken.Length > 128) { throw new MessageException("扫码二维码有误!"); } string out_trade_no = new AppPayOrderSn(cid, storeId).ToString(); string create_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var pay_notify_url = Pharos.Utility.Config.GetAppSettings("qctpaynotifyurl");//回调地址 var goods_name = ""; //var goods_desc = ""; //判断用户积分使用 #region 积分记录 IntegralFlows reduceIntegral = new IntegralFlows() { CompanyId = cid, StoreId = storeId, FlowSN = out_trade_no, Amount = param.TotalAmount, Integral = -param.UseIntegral, DiscountAmount = param.DiscountAmount, CardSN = param.CardSN, Received = param.Received, Remark = "", State = 0, CreateDate = DateTime.Now, MemberId = param.MemberId, Alias = param.Alias }; IntegralFlows addIntegral = new IntegralFlows() { CompanyId = cid, StoreId = storeId, FlowSN = out_trade_no, Amount = param.TotalAmount, Integral = param.GetIntegral, DiscountAmount = param.DiscountAmount, CardSN = param.CardSN, Received = param.Received, Remark = "", State = 0, CreateDate = DateTime.Now, MemberId = param.MemberId, Alias = param.Alias }; IntegralFlowsService.Add(reduceIntegral, false); IntegralFlowsService.Add(addIntegral); #endregion var reqParams = new SortedDictionary <string, object>(); reqParams.Add("charset", PayConst.CHARSET); reqParams.Add("method", PayConst.QCTTRADE_PAY_MERCHSCAN); reqParams.Add("mch_id", mapcid); reqParams.Add("store_id", payStoreId); reqParams.Add("device_id", param.Device_id); reqParams.Add("sign_type", PayConst.SIGNTYPE); reqParams.Add("version", PayConst.VERSION); reqParams.Add("out_trade_no", out_trade_no); reqParams.Add("create_date", create_date); reqParams.Add("total_amount", param.Received); reqParams.Add("buyer_pay_token", param.PayToken); reqParams.Add("pay_notify_url", pay_notify_url); reqParams.Add("buyer_mobile", ""); reqParams.Add("goods_name", goods_name); reqParams.Add("goods_desc", param.Remark); //签名 String sign = PayHelper.Sign(reqParams, authorization.Message); reqParams.Add("sign", sign); var obj = HttpClient.PayPost(Pharos.Utility.Config.GetAppSettings("qctscanpayurl"), reqParams); var result = JsonConvert.DeserializeObject <JObject>(obj); if (result.Property("return_code").Value.ToString() == "00000") { int state = 0; var rstate = result.Property("pay_status", true); switch (rstate) { default: case "NOTPAY": break; case "PAYSUCCESS": state = 1; break; case "PAYFAIL": state = 2; break; case "PAYCANCEL": state = 3; break; case "PAYTIMEOUT": state = 4; break; } AppPaymentRecords record = new AppPaymentRecords() { CompanyId = cid, StoreId = storeId, OrderSN = out_trade_no, TotalAmount = param.TotalAmount, DiscountAmount = param.DiscountAmount, Received = param.Received, ApiCode = PayConst.QCTAPICODE_A, PayChannel = result.Property("pay_channel", true), State = state, CreateDate = DateTime.Now, CreateUser = param.MemberId, ReturnData = obj, Alias = param.Alias, UserCode = param.UserCode, Remark = param.Remark }; AppPaymentRecordsService.Add(record); //成功 if (state == 1) { //更新会员积分信息 var diffIntegral = param.GetIntegral - param.UseIntegral; if (diffIntegral != 0) { UpdateMemberIntegral(param.MemberId, diffIntegral); } return(result.Property("receipt_amount", true)); } else {//状态不成功 return(result.Property("pay_status", true)); } } else { //失败 var errmsg = result.Property("return_msg").Value.ToString(); if (errmsg.Contains("支付渠道数据非法")) { errmsg = "请扫描微信或支付宝付款码!"; } throw new MessageException(errmsg); } } catch (Exception ex) { throw new MessageException(ex.Message); } }
public object PayBuyerScanDyna(AppPayRequest param) { try { int cid = param.CID; var storeId = param.StoreId; string mapcid = string.Empty; //查询门店支付授权 var authorization = GetCompanyPayInfo(cid, storeId, PayConst.QCTAPICODE_P, out mapcid); if (!authorization.Successed) { throw new MessageException(authorization.Message); } var payStoreId = authorization.Data.ToString();//中转第三方门店号 if (!string.IsNullOrEmpty(param.MemberId)) { var veriMemberIntegral = VeriMemberIntegral(param.MemberId, param.UseIntegral); if (!veriMemberIntegral.Successed) { throw new MessageException(veriMemberIntegral.Message); } } string out_trade_no = new AppPayOrderSn(cid, storeId).ToString(); string create_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var pay_notify_url = Pharos.Utility.Config.GetAppSettings("qctpaynotifyurl");//回调地址 var goods_name = ""; //var goods_desc = ""; var reqParams = new SortedDictionary <string, object>(); reqParams.Add("charset", PayConst.CHARSET); reqParams.Add("method", PayConst.QCTTRADE_PAY_BUYERSCAN_DYNA); reqParams.Add("mch_id", mapcid); reqParams.Add("store_id", payStoreId); reqParams.Add("device_id", param.Device_id); reqParams.Add("sign_type", PayConst.SIGNTYPE); reqParams.Add("version", PayConst.VERSION); reqParams.Add("out_trade_no", out_trade_no); reqParams.Add("create_date", create_date); reqParams.Add("total_amount", param.Received); reqParams.Add("pay_notify_url", pay_notify_url); reqParams.Add("buyer_mobile", ""); reqParams.Add("goods_name", goods_name); reqParams.Add("goods_desc", param.Remark); //签名 String sign = PayHelper.Sign(reqParams, authorization.Message); reqParams.Add("sign", sign); var obj = HttpClient.PayPost(Pharos.Utility.Config.GetAppSettings("qctpayurl"), reqParams); var result = JsonConvert.DeserializeObject <JObject>(obj); if (result.Property("return_code").Value.ToString() == "00000") { //成功 //支付交易记录 AppPaymentRecords record = new AppPaymentRecords() { CompanyId = cid, StoreId = storeId, OrderSN = out_trade_no, TotalAmount = param.TotalAmount, DiscountAmount = param.DiscountAmount, Received = param.Received, ApiCode = PayConst.QCTAPICODE_P, State = 0, CreateDate = DateTime.Now, CreateUser = param.MemberId, Alias = param.Alias, UserCode = param.UserCode, Remark = param.Remark }; AppPaymentRecordsService.Add(record, false); //积分交易记录 //消耗 IntegralFlows reduceIntegral = new IntegralFlows() { CompanyId = cid, StoreId = storeId, FlowSN = out_trade_no, Amount = param.TotalAmount, Integral = -param.UseIntegral, DiscountAmount = param.DiscountAmount, CardSN = param.CardSN, Received = param.Received, Remark = "", State = 0, CreateDate = DateTime.Now, MemberId = param.MemberId, Alias = param.Alias }; //获取 IntegralFlows addIntegral = new IntegralFlows() { CompanyId = cid, StoreId = storeId, FlowSN = out_trade_no, Amount = param.TotalAmount, Integral = param.GetIntegral, DiscountAmount = param.DiscountAmount, CardSN = param.CardSN, Received = param.Received, Remark = "", State = 0, CreateDate = DateTime.Now, MemberId = param.MemberId, Alias = param.Alias }; //保存积分记录 IntegralFlowsService.Add(reduceIntegral, false); IntegralFlowsService.Add(addIntegral); return(new { OrderSN = out_trade_no, PayUrl = result.Property("pay_token").Value.ToString() }); } else { //失败 var errmsg = result.Property("return_msg").Value.ToString(); throw new MessageException(errmsg); } } catch (MessageException ex) { throw new MessageException(ex.Message); } catch (Exception ex) { throw new MessageException("支付失败,请稍后重试!"); } }
public async Task <JsonResult> Create([FromForm] string token, [FromForm] int courseId) { DataResult dr = new DataResult(); try { if (courseId < 10000) { dr.code = "201"; dr.msg = "参数错误"; return(Json(dr)); } UserEntity userEntity = this.GetUserByToken(token); CourseEntity courseEntity = courseOrderBLL.ActionDal.ActionDBAccess.Queryable <CourseEntity>().InSingle(courseId); if (courseEntity == null) { dr.code = "201"; dr.msg = "不存在该课程"; return(Json(dr)); } CourseOrderEntity courseOrderEntity = new CourseOrderEntity() { courseId = courseEntity.courseId, createDate = DateTime.Now, modifyDate = DateTime.Now, orderNo = "WX" + userEntity.userId.ToString() + DateTime.Now.ToString("yyyyMMddHHmmss"), orderTotal = courseEntity.price, payChannel = "", payDate = Helper.ConvertHelper.DEFAULT_DATE, payNo = "", realTotal = 0, state = 1, userId = userEntity.userId }; CourseOrderEntity courseOrder = await courseOrderBLL.ActionDal.ActionDBAccess.Insertable(courseOrderEntity).ExecuteReturnEntityAsync(); if (courseOrder == null) { dr.code = "201"; dr.msg = "创建订单失败"; return(Json(dr)); } CoursePayResult coursePayResult = new CoursePayResult(); coursePayResult.courseOrderEntity = courseOrder; var request = new AppPayRequest(); request.AddGatewayData(new AppPayModel() { Body = "购买课程" + courseEntity.name, TotalAmount = Convert.ToInt32(courseOrder.orderTotal * 100), OutTradeNo = courseOrder.orderNo }); var response = _gateway.Execute(request); coursePayResult.payResult = response.OrderInfo; dr.code = "200"; dr.msg = "成功"; dr.data = coursePayResult; } catch (Exception ex) { dr.code = "999"; dr.msg = ex.Message; } return(Json(dr)); }
public AppPayResponse(AppPayRequest request) { OrderInfo = request.ToUrl(); }
async Task <RequestPaymentResponseDTO> AppPay(RequestPaymentRequestDTO model) { var orderDTO = await _orderServiceProxy.GetById(model.OrderId); if (orderDTO == null) { return(null); } var request = new AppPayRequest(); var body = ""; var orgStr = (orderDTO.OrderItems.FirstOrDefault()?.Title ?? "-"); if (orgStr.Length > 20) { body = orgStr.Substring(0, 20); } else { body = orgStr; } request.AddGatewayData(new AppPayModel() { Body = body, OutTradeNo = orderDTO.OrderNo, TotalAmount = (int)(orderDTO.PayAmount * 100) }); IGateway gateway = null; var organizationId = ""; organizationId = orderDTO.OrganizationId ?? ""; WeChatAppConfiguration appConfig = null; if (!string.IsNullOrEmpty(organizationId)) { appConfig = _wechatAppConfigurationRepository.GetFiltered(o => o.OrganizationId == organizationId).FirstOrDefault(); } if (appConfig != null) { var wechatpayMerchant = new PaySharp.Wechatpay.Merchant { AppId = appConfig.AppId, MchId = appConfig.MchId, Key = appConfig.Key, AppSecret = appConfig.AppSecret, SslCertPath = appConfig.SslCertPath, SslCertPassword = appConfig.SslCertPassword, NotifyUrl = appConfig.NotifyUrl }; gateway = new WechatpayGateway(wechatpayMerchant); } else { gateway = _gateways.Get <WechatpayGateway>(); } var response = gateway.Execute(request); var ns = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 20); var ts = GetTimeStamp(); var pkg = $"prepay_id={response?.PrepayId}"; var sign = GetSign(((WechatpayGateway)gateway).Merchant.AppId, ns, response?.PrepayId, ts.ToString(), ((WechatpayGateway)gateway).Merchant.Key); var result = new RequestPaymentResponseDTO { NonceStr = ns, Package = "Sign=WXPay",//pkg, PaySign = sign, TimeStamp = ts.ToString(), AppId = response?.AppId, PartnerId = response?.MchId, PrepayId = response?.PrepayId }; return(result); }