示例#1
0
        /// <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));
        }
示例#2
0
 /// <summary>
 /// 初始化支付宝参数生成器
 /// </summary>
 /// <param name="config">配置</param>
 public AlipayParameterBuilder(AliPayConfig config)
 {
     config.CheckNull(nameof(config));
     Config   = config;
     _builder = new UrlParameterBuilder();
     Content  = new AlipayContentBuilder();
 }
示例#3
0
        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);
        }
示例#4
0
 /// <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;
 }
示例#5
0
 /// <summary>
 /// 验证
 /// </summary>
 protected void Validate(AliPayConfig config, TPayParam param)
 {
     config.CheckNull(nameof(config));
     param.CheckNull(nameof(param));
     config.Validate();
     param.Validate();
     ValidateParam(param);
 }
示例#6
0
        /// <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());
        }
示例#7
0
        /// <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)));
        }
示例#8
0
        /// <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
            }));
        }
示例#9
0
        /// <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);
        }
示例#10
0
        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);
            }
        }
示例#11
0
        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);
        }
示例#12
0
        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));
                    }
                }
            }
        }
示例#13
0
 /// <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));
 }
示例#14
0
 public UnitTest1(ITestOutputHelper output) : base(output)
 {
     _aliPayService = Provider.GetService <IAliPayService>();
     Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
     AliPayConfig.Init(AppId, PrivateKey, AliPublicKey, "", "www.aqsea.com");
 }
示例#15
0
 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));
     }
 }