Example #1
0
        public static string SendRequest(RefundInfo info, PayConfig config)
        {
            WxPayData wxPayData = new WxPayData();

            if (!string.IsNullOrEmpty(info.transaction_id))
            {
                wxPayData.SetValue("transaction_id", info.transaction_id);
            }
            else
            {
                wxPayData.SetValue("out_trade_no", info.out_trade_no);
            }
            wxPayData.SetValue("total_fee", (int)info.TotalFee.Value);
            wxPayData.SetValue("refund_fee", (int)info.RefundFee.Value);
            wxPayData.SetValue("out_refund_no", info.out_refund_no);
            wxPayData.SetValue("op_user_id", config.MchID);
            wxPayData.SetValue("sub_appid", config.sub_appid);
            wxPayData.SetValue("sub_mch_id", config.sub_mch_id);
            wxPayData.SetValue("refund_account", "REFUND_SOURCE_RECHARGE_FUNDS");
            WxPayData wxPayData2 = WxPayApi.Refund(wxPayData, config, 60);
            SortedDictionary <string, object> values = wxPayData2.GetValues();

            if (values["return_code"].ToString() == "SUCCESS" && values["result_code"].ToString() == "SUCCESS")
            {
                return("SUCCESS");
            }
            if (values["return_code"].ToString() == "SUCCESS")
            {
                return(values["err_code_des"].ToString());
            }
            return(values["return_msg"].ToString());
        }
Example #2
0
        public PayNotify GetPayNotify(string xml)
        {
            DataTable dt  = this.ErrorTable("Notify");
            DataRow   row = dt.NewRow();

            row["OperTime"] = DateTime.Now;
            try
            {
                if (string.IsNullOrEmpty(xml))
                {
                    row["Error"] = "InStream Null";
                    row["Param"] = "null";
                    dt.Rows.Add(row);
                    this.WriteLog(dt);
                    return(null);
                }
                PayNotify notifyObject = Utils.GetNotifyObject <PayNotify>(xml);
                WxPayData data         = new WxPayData();
                try
                {
                    data.FromXml(xml, this._payAccount.PartnerKey);
                }
                catch (WxPayException exception)
                {
                    Utils.WxPaylog("支付出错了:" + exception.Message, "_WxPaylog.txt");
                }
                SortedDictionary <string, object> values = data.GetValues();
                if (((((notifyObject == null) || (values == null)) || (values.Keys.Count == 0)) || (values.ContainsKey("return_code") && (values["return_code"].ToString() == "FAIL"))) || (values.ContainsKey("result_code") && (values["result_code"].ToString() == "FAIL")))
                {
                    Utils.WxPaylog(xml, "_WxPaylog.txt");
                    return(null);
                }
                PayInfo info = new PayInfo {
                    SignType      = "MD5",
                    Sign          = notifyObject.sign,
                    TradeMode     = 0,
                    BankType      = notifyObject.bank_type,
                    BankBillNo    = "",
                    TotalFee      = notifyObject.total_fee / 100M,
                    FeeType       = (notifyObject.fee_type == "CNY") ? 1 : 0,
                    NotifyId      = "",
                    TransactionId = notifyObject.transaction_id,
                    OutTradeNo    = notifyObject.out_trade_no,
                    TransportFee  = 0M,
                    ProductFee    = 0M,
                    Discount      = 1M,
                    BuyerAlias    = ""
                };
                notifyObject.PayInfo = info;
                return(notifyObject);
            }
            catch (Exception exception2)
            {
                row["Error"] = exception2.Message;
                row["Param"] = xml;
                dt.Rows.Add(row);
                this.WriteLog(dt);
                return(null);
            }
        }
        public JsonResult GetWXAPPIDInfo(string url)
        {
            string nonceStr      = WxPayApi.GenerateNonceStr(); //随机字符串,不长于32位
            string timeStamp     = WxPayApi.GenerateTimeStamp();
            string accessToken   = WeChatTools.GetAccessoken(true);
            string jsapi_ticket1 = WeChatTools.PostWebRequest("https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=" + accessToken + "&type=agent_config", "", Encoding.UTF8);
            string jsapi_ticket2 = WeChatTools.PostWebRequest("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + accessToken, "", Encoding.UTF8);
            Dictionary <string, string> tickResult  = jsapi_ticket1.JsonToModel <Dictionary <string, string> >();
            Dictionary <string, string> tickResult2 = jsapi_ticket2.JsonToModel <Dictionary <string, string> >();
            string param1           = "jsapi_ticket=" + tickResult["ticket"] + "&noncestr=" + nonceStr + "&timestamp=" + timeStamp + "&url=" + url + "";
            string param2           = "jsapi_ticket=" + tickResult2["ticket"] + "&noncestr=" + nonceStr + "&timestamp=" + timeStamp + "&url=" + url + "";
            string newjsapi_ticket1 = SHA1_Encrypt(param1);
            string newjsapi_ticket2 = SHA1_Encrypt(param2);
            //wx.agentConfig
            WxPayData wxPayData  = new WxPayData();
            WxPayData wxPayData2 = new WxPayData();

            wxPayData.SetValue("appid", WxPayConfig.APPID);          //appid
            wxPayData.SetValue("nonce_str", nonceStr);               //随机字符串
            wxPayData.SetValue("timestamp", timeStamp);              //生成签名的时间戳
            wxPayData.SetValue("sign", newjsapi_ticket1.ToLower());  //签名1
            //wx.config
            wxPayData.SetValue("sign2", newjsapi_ticket2.ToLower()); //签名2
            wxPayData.SetValue("url", url);
            return(Json(wxPayData.GetValues(), JsonRequestBehavior.AllowGet));
        }
        public async Task <ActionResult> Process()
        {
            EnrollDto enrollDto = _helper.GetEnrollDto();

            if (enrollDto == null)
            {
                return(Redirect("/Mob/Enroll"));
            }

            if (WxPayApi.IsPaid("", enrollDto.Enroll.OrderNo))
            {
                PayModelDto model = WxPayApi.GetPayModel(enrollDto.Enroll.OrderNo);
                await _helper.SetPayStatus(EnrollStatus.PaySuccess, model);
            }

            WxPayData data = null;

            if (enrollDto.Enroll.Status != EnrollStatus.PaySuccess)
            {
                data = await WxPayApi.GetJSSDKConfig();
            }

            ViewBag.WxConfig = data == null ? "" : SerializationHelper.ToJson(data.GetValues());

            enrollDto.Enroll.IdCard = enrollDto.Enroll.IdCard.ToSpecialString(6, 8);
            return(View(enrollDto));
        }
        public JsonResult GetPaySign(string openid, string revenueFee, string totalFee, Guid personVguid, Guid pushContentVguid, int revenueType)
        {
            var revenueReceivable = decimal.Parse(revenueFee);            //获取司机支付应付金额
            var totalFeeDouble    = double.Parse(totalFee);
            //double totalFeeInt = tatol + driverPayfee;   //包含手续费的总钱数
            var    totalFeeInt    = (int)Math.Round(totalFeeDouble * 100);
            string nonceStr       = WxPayApi.GenerateNonceStr();                       //随机字符串,不长于32位
            string outTradeNo     = WxPayApi.GenerateOutTradeNo();                     //订单号:32个字符内、不得重复
            string spbillCreateIp = WxPayConfig.GetIP(System.Web.HttpContext.Current); //用户端IP
            double total_fee      = totalFeeInt;                                       //订单金额(单位:分),整数
            string trade_type     = "JSAPI";                                           //JSAPI,NATIVE,APP,WAP

            #region 调用统一支付接口获得prepay_id(预支付交易会话标识)
            WxPayData wxPayData = new WxPayData();
            wxPayData.SetValue("appid", WxPayConfig.APPID);            //appid
            wxPayData.SetValue("body", WxPayConfig.BODY);              //支付描述
            wxPayData.SetValue("mch_id", WxPayConfig.MCHID);           //商户id
            wxPayData.SetValue("nonce_str", nonceStr);                 //随机字符串
            wxPayData.SetValue("notify_url", WxPayConfig.NOTIFY_URL);  //回调地址
            wxPayData.SetValue("openid", openid);                      //openid
            wxPayData.SetValue("out_trade_no", outTradeNo);            //订单号
            wxPayData.SetValue("spbill_create_ip", spbillCreateIp);    //客户端ip地址
            wxPayData.SetValue("total_fee", total_fee.ToString());     //订单金额(单位:分),整数
            wxPayData.SetValue("trade_type", trade_type);              //交易类型
            wxPayData.SetValue("sign", wxPayData.MakeSign());          //签名
            string data     = wxPayData.ToXml();
            string prepayId = WeChatTools.UnifiedOrder(data);
            #endregion
            #region 支付参数
            string timeStamp = WxPayApi.GenerateTimeStamp();
            nonceStr = WxPayApi.GenerateNonceStr();
            WxPayData wxPaySign = new WxPayData();
            wxPaySign.SetValue("appId", WxPayConfig.APPID);
            wxPaySign.SetValue("timeStamp", timeStamp);
            wxPaySign.SetValue("nonceStr", nonceStr);
            wxPaySign.SetValue("package", string.Format("prepay_id={0}", prepayId));
            wxPaySign.SetValue("signType", "MD5");
            string paysign = wxPaySign.MakeSign();
            wxPaySign.SetValue("paySign", paysign);
            #endregion

            var paymentHistoryInfo = new Business_PaymentHistory_Information();
            paymentHistoryInfo.RevenueReceivable = revenueReceivable;
            paymentHistoryInfo.PaymentPersonnel  = personVguid;
            paymentHistoryInfo.PaymentAmount     = decimal.Parse(totalFee);
            paymentHistoryInfo.VGUID             = Guid.NewGuid();
            paymentHistoryInfo.RevenueType       = revenueType;
            paymentHistoryInfo.WeChatPush_VGUID  = pushContentVguid;
            paymentHistoryInfo.Remarks           = outTradeNo; //商户订单号
            paymentHistoryInfo.CreateDate        = DateTime.Now;
            paymentHistoryInfo.CreateUser        = "******";
            paymentHistoryInfo.PayDate           = DateTime.Now;
            paymentHistoryInfo.PaymentStatus     = "3";
            bool addsuccess = _weChatRevenueLogic.AddPaymentHistory(paymentHistoryInfo);

            return(Json(new { success = addsuccess, data = wxPaySign.GetValues() }, JsonRequestBehavior.AllowGet));
        }
Example #6
0
        public static string SendRequest(RefundInfo info, PayConfig config, out string WxRefundNum)
        {
            WxPayData wxPayData = new WxPayData();

            if (!string.IsNullOrEmpty(info.transaction_id))
            {
                wxPayData.SetValue("transaction_id", info.transaction_id);
            }
            else
            {
                wxPayData.SetValue("out_trade_no", info.out_trade_no);
            }
            wxPayData.SetValue("total_fee", (int)info.TotalFee.Value);
            wxPayData.SetValue("refund_fee", (int)info.RefundFee.Value);
            wxPayData.SetValue("out_refund_no", info.out_refund_no);
            wxPayData.SetValue("op_user_id", config.MchID);
            if (!string.IsNullOrEmpty(config.sub_appid))
            {
                wxPayData.SetValue("sub_appid", config.sub_appid);
                wxPayData.SetValue("sub_mch_id", config.sub_mch_id);
            }
            WxPayData wxPayData2 = WxPayApi.Refund(wxPayData, config, 60);
            SortedDictionary <string, object> values = wxPayData2.GetValues();
            string result;

            if (values.ContainsKey("return_code") && values["return_code"].ToString() == "SUCCESS" && values.ContainsKey("result_code") && values["result_code"].ToString() == "SUCCESS")
            {
                WxRefundNum = "";
                result      = "SUCCESS";
            }
            else
            {
                HttpService.WxDebuglog(JsonConvert.SerializeObject(values), "_wxpay.txt");
                string str = "";
                if (values.ContainsKey("err_code_des"))
                {
                    str = values["err_code_des"].ToString();
                }
                if (values.ContainsKey("refund_id"))
                {
                    WxRefundNum = values["refund_id"].ToString();
                }
                else
                {
                    WxRefundNum = "";
                }
                result = str + values["return_msg"].ToString();
            }
            return(result);
        }
Example #7
0
        public string GetPrePayUrl(string productId, PayConfig config)
        {
            WxPayData wxPayData = new WxPayData();

            wxPayData.SetValue("appid", config.AppId);
            wxPayData.SetValue("mch_id", config.MchID);
            wxPayData.SetValue("time_stamp", WxPayApi.GenerateTimeStamp());
            wxPayData.SetValue("nonce_str", WxPayApi.GenerateNonceStr());
            wxPayData.SetValue("product_id", productId);
            wxPayData.SetValue("sign", wxPayData.MakeSign(config.Key));
            string str = this.ToUrlParams(wxPayData.GetValues());

            return("weixin://wxpay/bizpayurl?" + str);
        }
Example #8
0
        /// <summary>
        /// 生成扫描支付模式一URL
        /// </summary>
        /// <param name="productId">商品ID</param>
        /// <returns>模式一URL</returns>
        public static string GetPrePayUrl(string productId)
        {
            WxPayData data = new WxPayData();

            data.SetValue("appid", GlobalContext.AppID);                 //公众帐号id
            data.SetValue("mch_id", GlobalContext.MCHId);                //商户号
            data.SetValue("time_stamp", CommonHelper.CreateTimestamp()); //时间戳
            data.SetValue("nonce_str", CommonHelper.CreateNonceStr());   //随机字符串
            data.SetValue("product_id", productId);                      //商品ID
            data.SetValue("sign", data.MakeSign());                      //签名
            string str = ToUrlParams(data.GetValues());                  //转换为URL串
            string url = "weixin://wxpay/bizpayurl?" + str;

            return(url);
        }
Example #9
0
        /**
         * 生成扫描支付模式一URL
         * @param productId 商品ID
         * @return 模式一URL
         */
        public string GetPrePayUrl(string productId)
        {
            WxPayData data = new WxPayData();

            data.SetValue("appid", WxPayConfig.APPID);                 //公众帐号id
            data.SetValue("mch_id", WxPayConfig.MCHID);                //商户号
            data.SetValue("time_stamp", WxPayApi.GenerateTimeStamp()); //时间戳
            data.SetValue("nonce_str", WxPayApi.GenerateNonceStr());   //随机字符串
            data.SetValue("product_id", productId);                    //商品ID
            data.SetValue("sign", data.MakeSign());                    //签名
            string str = ToUrlParams(data.GetValues());                //转换为URL串
            string url = "weixin://wxpay/bizpayurl?" + str;

            return(url);
        }
Example #10
0
        /**
        * 生成扫描支付模式一URL
        * @param productId 商品ID
        * @return 模式一URL
        */
        public string GetPrePayUrl(string productId)
        {
            Log.Info(this.GetType().ToString(), "Native pay mode 1 url is producing...");

            WxPayData data = new WxPayData();
            data.SetValue("appid", Config.APPID);//公众帐号id
            data.SetValue("mch_id", Config.MCHID);//商户号
            data.SetValue("time_stamp", WxPayApi.GenerateTimeStamp());//时间戳
            data.SetValue("nonce_str", WxPayApi.GenerateNonceStr());//随机字符串
            data.SetValue("product_id", productId);//商品ID
            data.SetValue("sign", data.MakeSign());//签名
            string str = ToUrlParams(data.GetValues());//转换为URL串
            string url = "weixin://wxpay/bizpayurl?" + str;

            Log.Info(this.GetType().ToString(), "Get native pay mode 1 url : " + url);
            return url;
        }
Example #11
0
        /**
         * 生成扫描支付模式一URL
         * @param productId 商品ID
         * @return 模式一URL
         */
        public string GetPrePayUrl(string productId)
        {
            //Log.Info(this.GetType().ToString(), "Native pay mode 1 url is producing...");
            WxPayData data = new WxPayData();

            data.SetValue("appid", WxPayConfig.APPID);                 //公众帐号id
            data.SetValue("mch_id", WxPayConfig.MCHID);                //商户号
            data.SetValue("time_stamp", WxPayApi.GenerateTimeStamp()); //时间戳
            data.SetValue("nonce_str", WxPayApi.GenerateNonceStr());   //随机字符串
            data.SetValue("product_id", productId);                    //商品ID
            data.SetValue("sign", data.MakeSign());                    //签名
            var str = ToUrlParams(data.GetValues());                   //转换为URL串
            var url = "weixin://wxpay/bizpayurl?" + str;

            //Log.Info(this.GetType().ToString(), "Get native pay mode 1 url : " + url);
            return(url);
        }
 protected override ActionResult SetPostRequest(Enroll enroll)
 {
     try
     {
         Member   member   = SessionHelper.Mob.GetSession <Member>();
         JsApiPay jsApiPay = new JsApiPay();
         jsApiPay.openid = member.OpenId;
         jsApiPay.GetUnifiedOrderResult(enroll, _helper.GetCourse(enroll.CourseId));
         WxPayData wxPayData = jsApiPay.GetJsApiParameters();
         return(Success(wxPayData.GetValues()));//获取H5调起JS API参数
     }
     catch (Exception ex)
     {
         LogHelper.Error(ex);
         return(Faild("支付失败,请重试。"));
     }
 }
Example #13
0
        /// <summary>
        /// 生成扫描支付模式一URL
        /// </summary>
        /// <param name="productId">商品ID</param>
        /// <returns>模式一URL</returns>
        public string GetPrePayUrl(string productId)
        {
            LogHelper.Info(this.GetType().ToString(), "Native pay mode 1 url is producing...");

            WxPayData data = new WxPayData();

            data.SetValue("appid", WxPayConfig.AppId);                 //公众帐号id
            data.SetValue("mch_id", WxPayConfig.MchId);                //商户号
            data.SetValue("time_stamp", WxPayApi.GenerateTimeStamp()); //时间戳
            data.SetValue("nonce_str", WxPayApi.GenerateNonceStr());   //随机字符串
            data.SetValue("product_id", productId);                    //商品ID
            data.SetValue("sign", data.MakeSign());                    //签名
            string str = ToUrlParams(data.GetValues());                //转换为URL串
            string url = "weixin://wxpay/bizpayurl?" + str;

            //weixin://wxpay/bizpayurl?appid=wx426b3015555a46be&mch_id=1900009851&nonce_str=lz2gmz19sbeteufbg2onmbt9sabv0kef&product_id=123456789&time_stamp=1531917401&sign=69C6AEFFF6943AADCF84C4FA372BE60D
            LogHelper.Info(this.GetType().ToString(), "Get native pay mode 1 url : " + url);
            return(url);
        }
Example #14
0
        // GET: Mob/Home
        public async Task <ActionResult> Index(string id)
        {
            if (!string.IsNullOrEmpty(id))
            {
                MemberHelper memberHelper = new MemberHelper();
                await memberHelper.SetMemberReferee(id);
            }

            //if (string.IsNullOrEmpty(_Member.Phone))
            //{
            //    return Redirect("/Mob/Home/Bind");
            //}

            WxPayData data = await WxPayApi.GetJSSDKConfig();

            ViewBag.WxConfig = data == null ? "" : SerializationHelper.ToJson(data.GetValues());

            return(View());
        }
Example #15
0
        public JsonResult GetPaySign(string openid)
        {
            string nonceStr       = WxPayApi.GenerateNonceStr();                       //随机字符串,不长于32位
            string outTradeNo     = WxPayApi.GenerateOutTradeNo();                     //订单号:32个字符内、不得重复
            string spbillCreateIp = WxPayConfig.GetIP(System.Web.HttpContext.Current); //用户端IP
            int    total_fee      = 1;                                                 //订单金额(单位:分),整数
            string trade_type     = "JSAPI";                                           //JSAPI,NATIVE,APP,WAP

            #region 调用统一支付接口获得prepay_id(预支付交易会话标识)
            WxPayData wxPayData = new WxPayData();
            wxPayData.SetValue("appid", WxPayConfig.APPID);            //appid
            wxPayData.SetValue("body", WxPayConfig.BODY);              //支付描述
            wxPayData.SetValue("mch_id", WxPayConfig.MCHID);           //商户id
            wxPayData.SetValue("nonce_str", nonceStr);                 //随机字符串
            wxPayData.SetValue("notify_url", WxPayConfig.NOTIFY_URL);  //回调地址
            wxPayData.SetValue("openid", openid);                      //openid
            wxPayData.SetValue("out_trade_no", outTradeNo);            //订单号
            wxPayData.SetValue("spbill_create_ip", spbillCreateIp);    //客户端ip地址
            wxPayData.SetValue("total_fee", total_fee.ToString());     //订单金额(单位:分),整数
            wxPayData.SetValue("trade_type", trade_type);              //交易类型
            wxPayData.SetValue("sign", wxPayData.MakeSign());          //签名
            string data     = wxPayData.ToXml();
            string prepayId = WeChatTools.UnifiedOrder(data);
            #endregion

            #region 支付参数
            string timeStamp = WxPayApi.GenerateTimeStamp();
            nonceStr = WxPayApi.GenerateNonceStr();
            WxPayData wxPaySign = new WxPayData();
            wxPaySign.SetValue("appId", WxPayConfig.APPID);
            wxPaySign.SetValue("timeStamp", timeStamp);
            wxPaySign.SetValue("nonceStr", nonceStr);
            wxPaySign.SetValue("package", string.Format("prepay_id={0}", prepayId));
            wxPaySign.SetValue("signType", "MD5");
            string paysign = wxPaySign.MakeSign();
            wxPaySign.SetValue("paySign", paysign);
            #endregion

            return(Json(new { data = wxPaySign.GetValues(), openid = openid }, JsonRequestBehavior.AllowGet));
        }
Example #16
0
        // GET: Mob/Share
        public async Task <ActionResult> Index(string id = "")
        {
            if (SessionHelper.Mob.IsNullSession())
            {
                return(Redirect("/Mob/Home/Index/" + id));
            }

            if (string.IsNullOrEmpty(id))
            {
                Member member = SessionHelper.Mob.GetSession <Member>();
                if (member != null)
                {
                    id = member.ShareCode;
                }
            }

            WxPayData data = await WxPayApi.GetJSSDKConfig();

            ViewBag.WxConfig = data == null ? "" : SerializationHelper.ToJson(data.GetValues());

            return(View((object)id));
        }
Example #17
0
        public ActionResult RefundAmount(string OrderID, decimal?Amount = null)
        {
            var recordEntity = new RecordService().SelectByID(OrderID);
            var refundEntity = new RefundService().SelectByID(OrderID);

            if (recordEntity != null)
            {
                JsApiPay jsApiPay = new JsApiPay(this);

                var userEntity = new UserService().SelectByID(recordEntity.UserID);
                jsApiPay.op_user_id = userEntity != null ? userEntity.WeiXin_Openid : "";

                jsApiPay.order_no      = recordEntity.OrderNo;
                jsApiPay.out_refund_no = refundEntity != null ? refundEntity.RefundNo : WxPayApi.GenerateOutTradeNo();
                jsApiPay.total_fee     = Convert.ToInt32(recordEntity.Amount * 100);
                jsApiPay.refund_fee    = Amount != null?Convert.ToInt32(Amount * 100) :
                                             (refundEntity != null ? Convert.ToInt32(refundEntity.Amount * 100) : 0);

                try
                {
                    WxPayData result = jsApiPay.GetRefundOrderResult();
                    if (result.IsSet("result_code") && result.GetValue("result_code").ToString() == "SUCCESS")
                    {
                        return(Content(JsonHelper.SerializeObject(Common.MessageRes.OperateSuccess.SetResult("SUCCESS"))));
                    }
                    else
                    {
                        MYLog.Error("退款申请失败:" + SessionTools.UserName, JsonHelper.SerializeObject(result.GetValues()));
                        return(Content(JsonHelper.SerializeObject(result.GetValue("err_code_des").ToString().SetResult(null))));
                    }
                }
                catch (Exception ex)
                {
                    MYLog.Error("退款申请失败,请返回重试:" + SessionTools.UserName, ex.ToString());
                    return(Content(JsonHelper.SerializeObject("退款申请失败,请返回重试".SetResult(null))));
                }
            }
            return(Content(JsonHelper.SerializeObject(Common.MessageRes.OperateFailed.SetResult(null))));
        }