Ejemplo n.º 1
0
        public HttpResponseMessage OrderPay([FromBody] OrderPayReq request)
        {
            string openId = _bllUser.GetUserConnectByToken(request.token, request.deviceKey)?.OpenId;
            var    userId = this.CurrentUser.UserId;

            if (string.IsNullOrEmpty(request.orderNo?.Trim()))
            {
                return(ResponseHelper.OK(EnumApiStatusCode.Fail, message: "参数错误"));
            }
            var order = _bllOrder.GetOrder(request.orderNo);

            if (order == null)
            {
                return(ResponseHelper.OK(EnumApiStatusCode.Fail, message: "订单未找到"));
            }

            object result = null;

            if (order.PayFrom == EnumPayWay.Weixinzhifu.GetHashCode())
            {
                try
                {
                    LogHelper.Info("微信支付开始...");
                    string totalMoney = ((int)(order.TotalFee + order.Fare - order.DiscountFee)).ToString();
                    var    payConfig  = new WxOrderPay()
                    {
                        AppId       = ConfigUtils.WxAppId,
                        PartnerKey  = ConfigUtils.WxPayMchId,
                        PaySecret   = ConfigUtils.WxPaySecret,
                        orderNo     = order.OrderNo.ToString(),
                        tradeAmount = totalMoney,
                        openId      = openId,
                        body        = "性之助商城购物",
                        notifyUrl   = ConstDataValues.WxOrderPayNotifyUrl
                    };

                    result = new WeiXinPayClient().WxAppPay(payConfig);
                    LogHelper.Info("微信支付成功...");
                }
                catch (Exception ex)
                {
                    LogHelper.Error("微信支付失败", ex);
                    return(ResponseHelper.OK(EnumApiStatusCode.OrderPayError, message: ex.Message));
                }
            }

            return(ResponseHelper.OK(EnumApiStatusCode.Success, data: result));
        }
Ejemplo n.º 2
0
        public HttpResponseMessage GetTokenByCode([FromBody] UserTokenUpdateReq req)
        {
            string wxappId  = ConfigUtils.WxAppId;
            string wxSecret = ConfigUtils.WxSecret;
            var    wxConfig = new WeiXinPayConfig()
            {
                AppId     = wxappId,
                AppSecret = wxSecret
            };
            var wxClient = new WeiXinPayClient(wxConfig);
            var wxInfo   = wxClient.GetSessionkeyOpenIdByCode(req.code);

            if (wxInfo.errcode > 0)
            {
                return(ResponseHelper.OK(Entity.Enum.EnumApiStatusCode.Fail, message: wxInfo.errmsg));
            }
            string errmsg;
            var    token = _bllUser.UpdateUserToken(wxInfo.openid, req.deviceKey, out errmsg);

            if (!string.IsNullOrEmpty(errmsg?.Trim()))
            {
                LogHelper.Warning($"openid:{wxInfo.openid} 生成token信息失败");
                return(ResponseHelper.OK(Entity.Enum.EnumApiStatusCode.Fail, message: $"{errmsg};" + $"openid:{wxInfo.openid} 生成token信息失败"));
            }

            var request = new SHLServiceClient.Entity.Users.UserConnectUpdateRequest()
            {
                OpenId     = wxInfo.openid,
                OpenSource = ConstDataValues.OpenSource,
                UserIP     = Utils.GetIP(),
                NickName   = $"wx_{Guid.NewGuid().ToString("N")}",
                RegSource  = "wx_App",
                RegType    = "wxApp",
                HeadImgURL = "",
                Platform   = req.platform//使用终端 1:Android ,2:Ios,3:WindowsPhone 4-PC商城
            };
            var result = _bllUser.UpdateUserConnect(request, out errmsg);

            if (result == null)
            {
                LogHelper.Warning($"openid:{wxInfo.openid} 生成用户信息失败,错误消息:{errmsg}");
                return(ResponseHelper.OK(Entity.Enum.EnumApiStatusCode.Fail, message: $"{errmsg};" + $"openid:{wxInfo.openid} 生成用户信息失败"));
            }

            return(ResponseHelper.OK(Entity.Enum.EnumApiStatusCode.Success, data: token));
        }
Ejemplo n.º 3
0
        private bool CheckSign(OrderNotifyUrlReq request)
        {
            WeiXinPayConfig config = new WeiXinPayConfig();

            config.AppId      = ConfigUtils.WxAppId;
            config.PaySecret  = ConfigUtils.WxPaySecret;
            config.PartnerKey = ConfigUtils.WxPayMchId;
            WeiXinPayClient             client     = new WeiXinPayClient(config);
            SortedList <String, String> postParams = new SortedList <String, String>();

            postParams.Add("appid", request.appid);
            postParams.Add("mch_id", request.mch_id);
            postParams.Add("nonce_str", request.nonce_str);
            postParams.Add("body", "性之助商城购物");
            postParams.Add("out_trade_no", request.out_trade_no);
            postParams.Add("total_fee", request.total_fee.ToString());
            postParams.Add("spbill_create_ip", HttpContext.Current.Request.UserHostAddress);
            postParams.Add("notify_url", ConstDataValues.WxOrderPayNotifyUrl);
            postParams.Add("trade_type", "JSAPI");//APP
            string sign = client.CreateSign(postParams);

            return(request.sign == sign);
        }