/// <summary> /// 请求结果 /// </summary> protected virtual async Task <AlipayResult> RequstResult(AliPayConfig config, AlipayParameterBuilder builder) { var result = new AlipayResult(await Request(config, builder)); WriteLog(config, builder, result); return(CreateResult(builder, result)); }
/// <summary> /// 初始化支付宝参数生成器 /// </summary> /// <param name="config">配置</param> public AlipayParameterBuilder(AliPayConfig config) { config.CheckNull(nameof(config)); Config = config; _builder = new UrlParameterBuilder(); Content = new AlipayContentBuilder(); }
public void PayRequest(JObject json) { var commdy = new vw_MallOrderInfo(); //using (var db = new RepositoryBase(DBFactory.Bayetech)) //{ // vw_MallOrderInfo order = JsonConvert.DeserializeObject<vw_MallOrderInfo>(json.First.Path); // commdy = db.FindEntity<vw_MallOrderInfo>(a => a.OrderNo == order.OrderNo); //} AlipayTradePagePayModel model = new AlipayTradePagePayModel { Body = "eshi", Subject = commdy.GameName, TotalAmount = commdy.OrderPrice.ToString(), OutTradeNo = commdy.OrderNo, ProductCode = "FAST_INSTANT_TRADE_PAY" }; AliPayConfig alipay = new AliPayConfig(); DefaultAopClient clent = new DefaultAopClient(alipay.Gatewayurl, alipay.AppId, alipay.PrivateKey, "json", "1.0", alipay.SignType, alipay.AlipayPublicKey, alipay.CharSet, false); AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); // 设置同步回调地址 request.SetReturnUrl($"http://{GetCurrentFullHost()}/Home/Callback"); // 设置异步通知接收地址 request.SetNotifyUrl(""); // 将业务model载入到request request.SetBizModel(model); var response = clent.SdkExecute(request); //Console.WriteLine($"订单支付发起成功,订单号:{tradeno}"); //跳转支付宝支付 Response.Redirect(alipay.Gatewayurl + "?" + response.Body); }
/// <summary> /// 初始化微信支付结果 /// </summary> /// <param name="configProvider">配置提供器</param> /// <param name="response">xml响应消息</param> public AlipayResult(AliPayConfig aliPayConfig, string response, HttpRequest httpRequest = null) { aliPayConfig.CheckNull(nameof(aliPayConfig)); _aliPayConfig = aliPayConfig; Raw = response; Resolve(response); Request = httpRequest; }
/// <summary> /// 验证 /// </summary> protected void Validate(AliPayConfig config, TPayParam param) { config.CheckNull(nameof(config)); param.CheckNull(nameof(param)); config.Validate(); param.Validate(); ValidateParam(param); }
/// <summary> /// 发送请求 /// </summary> protected virtual async Task <string> Request(AliPayConfig config, AlipayParameterBuilder builder) { var resonse = await Web.Client() .Post(config.GetGatewayUrl()) .JsonData(builder.GetDictionary()) .ResultAsync(); return(await resonse.Content.ReadAsStringAsync()); }
/// <summary> /// 校验交易,同时返回结果 /// </summary> /// <param name="nvc"></param> /// <returns></returns> public ShopOrder VerifyAndGetResult(NameValueCollection nvc) { AliPayConfig alipayConfig = new AliPayConfig(); return(GetShopOrderResult(nvc, VerifyNotifyValue(nvc, alipayConfig.PartnerKey, CreateNotifyVerifyUrl(nvc["notify_id"], alipayConfig.GatewayUrl, AliPayDefinition.SERVICE_NOTIFY_VERIFY, alipayConfig.PartnerID), alipayConfig.EncodingName))); }
/// <summary> /// 请求结果 /// </summary> protected override Task <AlipayResult> RequstResult(AliPayConfig config, AlipayParameterBuilder builder) { var result = builder.Result(true); WriteLog(config, builder, result); return(Task.FromResult(new PayResult { Result = result })); }
/// <summary> /// 写日志 /// </summary> protected void WriteLog(AliPayConfig config, AlipayParameterBuilder builder, AlipayResult result) { var logContent = LogContentBuilder.CreateLogContentBuilder() .SetEventId(Guid.NewGuid()).SetMoudle(GetType().FullName).SetTitle("支付宝支付") .AddContent($"支付宝支付 : {GetType()}") .AddContent($"支付网关 : {config?.GetGatewayUrl()}") .AddContent($"请求参数:{builder?.GetDictionary()?.ToXml()}") .AddContent($"返回结果:{result?.GetDictionary()}") .AddContent($"原始响应:{result?.Raw}") .Build(); Logger.LogInfo(logContent); }
protected void Page_Load(object sender, EventArgs e) { //string h = //D4D.ResourceManager.ResourceManager.Instance.GetResourceValue(D4D.ResourceManager.CultureType.ZHCN, "hello"); // litInfo.Text = h+"<br/>"; //D4D.ResourceManager.ResourceConfig config = D4D.ResourceManager.ResourceManager.Instance.GetConfig(); //foreach (KeyValuePair<string, string> kvp in config.ResourceDatas) // litInfo.Text += "name:" + kvp.Key + " value:" + kvp.Value + "<br/>"; AliPayConfig aliPayConfig = new AliPayConfig(); /* * string urlPay = JaneShopGateway.AliPayProvider.CreatUrl(aliPayConfig.GatewayUrl, * AliPayDefinition.SERVICE_CREATE_DIRECT_PAY_BY_USER, * aliPayConfig.PartnerID, * AliPayDefinition.DEFAULT_SIGNTYPE, * Guid.NewGuid().ToString(), * "张靓颖商品测试", * "张靓颖商品测试说明", * ((int)AliPaymentType.BuyProduct).ToString(),//1 * "0.01", * "http://cn.janezhang.com",//商品展示链接 * aliPayConfig.SellerEmail, //"*****@*****.**", * aliPayConfig.PartnerKey, * aliPayConfig.ReturnUrl, * aliPayConfig.EncodingName, * aliPayConfig.ReturnUrl); * * Response.Redirect(urlPay); */ NameValueCollection nvc = new NameValueCollection(Request.QueryString); if (nvc.Count > 0) { AliPayConfig alipayConfig = new AliPayConfig(); bool vResult = JaneShopGateway.AliPayProvider.VerifyNotifyValue(nvc, alipayConfig.PartnerKey, JaneShopGateway.AliPayProvider.CreateNotifyVerifyUrl(nvc["notify_id"], alipayConfig.GatewayUrl, AliPayDefinition.SERVICE_NOTIFY_VERIFY, alipayConfig.PartnerID), alipayConfig.EncodingName); } }
public JObject PayOrder(JObject json) { JObject ret = new JObject(); var commdy = new vw_MallOrderInfo(); using (var db = new RepositoryBase(DBFactory.Bayetech)) { vw_MallOrderInfo order = JsonConvert.DeserializeObject <vw_MallOrderInfo>(json.First.Path); commdy = db.FindEntity <vw_MallOrderInfo>(a => a.OrderNo == order.OrderNo); } AlipayTradePagePayModel model = new AlipayTradePagePayModel { Body = commdy.GoodTitle, Subject = commdy.GameName, TotalAmount = commdy.OrderPrice.ToString(), OutTradeNo = commdy.OrderNo, ProductCode = "FAST_INSTANT_TRADE_PAY" }; AliPayConfig alipay = new AliPayConfig(); DefaultAopClient clent = new DefaultAopClient(alipay.Gatewayurl, alipay.AppId, alipay.PrivateKey, "json", "1.0", alipay.SignType, alipay.AlipayPublicKey, alipay.CharSet, false); AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); // 设置同步回调地址 request.SetReturnUrl($"http://{Common.GetCurrentFullHost()}/Home/Callback"); // 设置异步通知接收地址 request.SetNotifyUrl(""); // 将业务model载入到request request.SetBizModel(model); var response = clent.SdkExecute(request); //Console.WriteLine($"订单支付发起成功,订单号:{tradeno}"); //跳转支付宝支付 //HttpContext.Current.Response.Redirect(alipay.Gatewayurl + "?" + response.Body); //HttpResponseMessage resp = new HttpResponseMessage(HttpStatusCode.Moved); //resp.Headers.Location = new Uri(alipay.Gatewayurl + "?" + response.Body); string resp = alipay.Gatewayurl + "?" + response.Body; ret.Add(ResultInfo.Result, true); ret.Add(ResultInfo.Content, JToken.FromObject(resp)); return(ret); }
public ActionResult TX(string userids) { var usermodel = db.tb_userinfos.FirstOrDefault(s => s.UserID == userids); int thisdaystr = DateTime.Now.Day; if (usermodel == null) { return(Json(Comm.ToJsonResult("nofind", "用户不存在"), JsonRequestBehavior.AllowGet)); } else if (thisdaystr != 10) { return(Json(Comm.ToJsonResult("noday", "每月10号为提现日"), JsonRequestBehavior.AllowGet)); } else { string appid = AliPayConfig.appid; //appid string app_private_key = AliPayConfig.app_private_key; //私钥 string alipay_public_key = AliPayConfig.app_public_key; //公钥 string charset = "utf-8"; string out_biz_no = AliPayConfig.GenerateOutTradeNo(); //订单号 IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", appid, app_private_key.Trim(), "json", "1.0", "RSA2", alipay_public_key.Trim(), charset, false); AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest(); string timestr = DateTime.Now.AddMonths(-1).Month.ToString(); decimal txamount = usermodel.Balance; string alipayaccount = usermodel.AliAccount; string aliusername = usermodel.AliUserName; //如果余额不足 if (txamount <= 0) { return(Json(Comm.ToJsonResult("nobalance", "余额不足"), JsonRequestBehavior.AllowGet)); } //如果没绑定支付宝账号 else if (string.IsNullOrWhiteSpace(alipayaccount)) { return(Json(Comm.ToJsonResult("noaccount", "未绑定支付宝"), JsonRequestBehavior.AllowGet)); } else { string remarkstr = timestr + "月佣金提现"; request.BizContent = "{" + "\"out_biz_no\":\"" + out_biz_no + "\"," + "\"payee_type\":\"ALIPAY_LOGONID\"," + "\"payee_account\":\"" + alipayaccount + "\"," + "\"amount\":\"" + txamount.ToString() + "\"," + "\"payer_show_name\":\"RP云购佣金提现\"," + "\"payee_real_name\":\"" + aliusername + "\"," + "\"remark\":\"" + remarkstr + "\"" + " }"; AlipayFundTransToaccountTransferResponse response = client.Execute(request); var jsondataformain = Newtonsoft.Json.JsonConvert.DeserializeObject(response.Body) as JContainer;//转json格式 string signstr = jsondataformain.SelectToken("sign").ToString(); string s = jsondataformain.SelectToken("alipay_fund_trans_toaccount_transfer_response").ToString(); var js = Newtonsoft.Json.JsonConvert.DeserializeObject(s) as JContainer; string msg = js.SelectToken("msg").ToString(); if (msg.Equals("Success")) { string rout_biz_no = js.SelectToken("out_biz_no").ToString(); string order_id = js.SelectToken("order_id").ToString(); string pay_date = js.SelectToken("pay_date").ToString(); //保存提现记录 Withdrawcash wmodel = new Withdrawcash(); wmodel.AliAccount = alipayaccount; wmodel.order_id = order_id; wmodel.out_biz_no = rout_biz_no; wmodel.pay_date = pay_date; wmodel.signstr = signstr; wmodel.txamount = txamount; wmodel.txmonth = timestr; wmodel.Userid = usermodel.ID; wmodel.UserName = usermodel.UserName; db.Withdrawcash.Add(wmodel); usermodel.Balance = 0; db.SaveChanges(); return(Json(Comm.ToJsonResult("Success", "提现成功"), JsonRequestBehavior.AllowGet)); } else { return(Json(Comm.ToJsonResult("txfail", "提现失败"), JsonRequestBehavior.AllowGet)); } } } }
/// <summary> /// 校验交易,同时返回结果 /// </summary> /// <param name="nvc"></param> /// <returns></returns> public ShopOrder VerifyAndGetResult(NameValueCollection nvc) { AliPayConfig alipayConfig = new AliPayConfig(); return GetShopOrderResult(nvc, VerifyNotifyValue(nvc, alipayConfig.PartnerKey, CreateNotifyVerifyUrl(nvc["notify_id"], alipayConfig.GatewayUrl, AliPayDefinition.SERVICE_NOTIFY_VERIFY, alipayConfig.PartnerID), alipayConfig.EncodingName)); }
public UnitTest1(ITestOutputHelper output) : base(output) { _aliPayService = Provider.GetService <IAliPayService>(); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); AliPayConfig.Init(AppId, PrivateKey, AliPublicKey, "", "www.aqsea.com"); }
public ActionResult ZYOrderAliPay(Enums.Enums.OrderType body, string ordercode, string userID) { try { var ordermodel = db.zyorder.FirstOrDefault(s => s.OrderCode == ordercode);//查询订单信息 if (!db.tb_userinfos.Any(s => s.UserID == userID)) { return(Json(Comm.ToJsonResult("Error", "用户不存在"), JsonRequestBehavior.AllowGet)); } if (body != Enums.Enums.OrderType.Recharge && body != Enums.Enums.OrderType.OrderPay) { return(Json(Comm.ToJsonResult("Error", "请求参数错误"), JsonRequestBehavior.AllowGet)); } if (ordermodel == null) { return(Json(Comm.ToJsonResult("Error", "订单不存在"), JsonRequestBehavior.AllowGet)); } string appid = AliPayConfig.appid; //appid string app_private_key = AliPayConfig.app_private_key; //私钥 string alipay_public_key = AliPayConfig.app_public_key; //公钥 string charset = "utf-8"; string outtradeno = AliPayConfig.GenerateOutTradeNo(); //订单号 string notifyurl = AliPayConfig.notifyurl; //回调通知页面地址 IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", appid, app_private_key.Trim(), "json", "1.0", "RSA2", alipay_public_key.Trim(), charset, false); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称如:alipay.trade.app.pay AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); model.Body = ((Enums.Enums.OrderType)body).GetDisplayName(); model.Subject = "自营订单支付"; model.TotalAmount = ordermodel.total_fee.ToString(); //type.GetDisplayName(); model.ProductCode = AliPayConfig.productcode; model.OutTradeNo = outtradeno; model.TimeoutExpress = "30m"; request.SetBizModel(model); request.SetNotifyUrl(notifyurl); //这里和普通的接口调用不同,使用的是sdkExecute AlipayTradeAppPayResponse response = client.SdkExecute(request); //HttpUtility.HtmlEncode是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题 //Response.Write(HttpUtility.HtmlEncode(response.Body)); string resultcode = HttpUtility.HtmlEncode(response.Body); if (!string.IsNullOrWhiteSpace(resultcode)) { //保存下单信息到数据库 PayOrder paymodel = new PayOrder(); paymodel.OrderState = Enums.Enums.OrderState.UnHandle; paymodel.out_trade_no = outtradeno; paymodel.Paynoncestr = string.Empty; paymodel.PayPrepay_id = outtradeno; paymodel.settlement_total_fee = ordermodel.total_fee; paymodel.CreateTime = DateTime.Now; paymodel.Sign = resultcode; paymodel.total_fee = ordermodel.total_fee; paymodel.User_ID = userID; paymodel.OrderType = body; paymodel.RelationID = ordermodel.ID; db.PayOrders.Add(paymodel); int resultrow = db.SaveChanges(); if (resultrow > 0) { string tempresult = resultcode.Replace("amp;", ""); var returndata = new { result = tempresult, prepay_id = outtradeno }; return(Json(Comm.ToJsonResult("Success", "成功", returndata), JsonRequestBehavior.AllowGet)); } else { return(Json(Comm.ToJsonResult("Error", "下单失败"), JsonRequestBehavior.AllowGet)); } } else { return(Json(Comm.ToJsonResult("Error", "下单失败"), JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { return(Json(Comm.ToJsonResult("Error", ex.Message), JsonRequestBehavior.AllowGet)); } }