Ejemplo n.º 1
0
        public async Task <ResponseViewModel <string> > AliPaySign([FromBody] RequestViewModel obj)
        {
            ResponseViewModel <string> response = null;
            string result = string.Empty;

            obj = JsonHelper.DeserializeJsonToObject <RequestViewModel>(Content(User.Identity.Name).Content);
            var  sysCode = SysCode.Ok;
            bool isLog   = _token.VerifyToken(obj.HendInfo.UserOpenId, obj.HendInfo.SessionToken);

            if (isLog)
            {
                string json    = RedisHelper.StringGet($"{CacheKey.Token}{obj.HendInfo.UserOpenId}", RedisFolderEnum.token, RedisEnum.Three);
                var    userLog = JsonHelper.DeserializeJsonToObject <UserLoginDto>(json);
                int    itemId  = StringExtension.ToInt((string)obj.Data.itemId); //; //商品Id
                RechargeCommodityDto rechargeCommodity = await _recharge.GetRechargeCommodityByIdAsync(itemId);

                if (rechargeCommodity == null)
                {
                    sysCode = SysCode.RechargeCommodityIsNULL; //充值商品不存在,
                }
                if (sysCode == SysCode.Ok)
                {
                    string order = Guid.NewGuid().ToString();
                    result = _recharge.CreateAlipaySign(rechargeCommodity, order);
                    AliPayOrderDto AliPayOrder = new AliPayOrderDto()
                    {
                        Commodity_id = itemId,
                        Out_trade_no = order,
                        Createtime   = DateTime.Now,
                        Updatetime   = DateTime.Now,
                        Gmt_payment  = DateTime.Now,
                        Userid       = userLog.Userid,
                        Total_amount = rechargeCommodity.Money
                    };
                    await _recharge.RecordAlipayOrderAsync(AliPayOrder);//记录支付宝订单。

                    RechargeDto recharge = new RechargeDto()
                    {
                        Amount     = rechargeCommodity.Amount,
                        createtime = DateTime.Now,
                        Pay_type   = 1, //支付类型 1支付宝,2微信,3苹果内购
                        Status     = 1, //1 待处理 2 已支付 3 支付失败 4 超时
                        updatetime = DateTime.Now,
                        UserId     = userLog.Userid,
                        Order_id   = AliPayOrder.Out_trade_no,
                    };
                    await _recharge.RecordRechargeLogAsync(recharge); //记录充值订
                }
            }
            else
            {
                /*短令牌失效*/
                sysCode = SysCode.SessionTokenLose;
            }
            response = new ResponseViewModel <string>(sysCode, sysCode == SysCode.Ok ? result : null, obj.Encrypt, _sys, obj.Secret);
            return(response);
        }
Ejemplo n.º 2
0
        public async Task <ResponseViewModel <object> > UploadingReceipt([FromBody] RequestViewModel obj)
        {
            ResponseViewModel <object> response = null;

            obj = JsonHelper.DeserializeJsonToObject <RequestViewModel>(Content(User.Identity.Name).Content);
            var  sysCode = SysCode.Ok;
            bool isLog   = _token.VerifyToken(obj.HendInfo.UserOpenId, obj.HendInfo.SessionToken);

            if (isLog)
            {
                string     strJson = RedisHelper.StringGet($"{CacheKey.Token}{obj.HendInfo.UserOpenId}", RedisFolderEnum.token, RedisEnum.Three);
                var        userLog = JsonHelper.DeserializeJsonToObject <UserLoginDto>(strJson);
                ReceiptDto receipt = new ReceiptDto
                {
                    AppleId = (string)obj.Data.appleId,
                    Id      = (string)obj.Data.productId,
                    OrderId = (string)obj.Data.orderId,
                    Receipt = (string)obj.Data.receipt
                };
                AppleReceiptDto appleReceipt = new AppleReceiptDto()
                {
                    Updatetime = DateTime.Now,
                    Receipt    = receipt.Receipt,
                    Order_id   = receipt.OrderId,
                };
                if (_recharge.VerifyReceipt(receipt))
                {
                    //获取商品信息
                    RechargeCommodityDto rechargeCommodity = await _recharge.GetAppleProductAsync(receipt.AppleId);

                    //充值虚拟币
                    double amount = double.Parse(rechargeCommodity.Amount.ToString());

                    //关闭章鱼充值
                    //if (_accout.Recharge_php(userLog.Userid, receipt.OrderId, amount, "充值", "hiAlipay"))
                    //从php充值
                    if (_accout.Recharge_php(userLog.Userid, receipt.OrderId, amount, "充值", "yibiyibaidekey"))
                    {
                        //更新苹果订单
                        await _recharge.UpdateAppleOrderAsync(appleReceipt);

                        //更新充值记录
                        await _recharge.UpdateRechargeLogAsync("2", receipt.OrderId);
                    }
                }
            }
            else
            {
                /*短令牌失效*/
                sysCode = SysCode.SessionTokenLose;
            }
            response = new ResponseViewModel <object>(sysCode, null, obj.Encrypt, _sys, obj.Secret);
            return(response);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 生成支付宝订单
        /// author:陶林辉
        /// </summary>
        /// <param name="recharge">商品对象</param>
        /// <param name="order">订单号</param>
        /// <returns></returns>
        public string CreateAlipayReceipt(RechargeCommodityDto recharge, string order)
        {
            string privateKeyPem             = _appSettings.PrivateKeyPem;              //商户私钥
            string out_trade_no              = order;                                   //订单号
            double total_fee                 = double.Parse(recharge.Money.ToString()); //交易金额
            string app_id                    = _appSettings.App_id;                     //app支付,支付宝中该应用的ID
            string charset                   = "utf-8";                                 //utf-8
            string timestamp                 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            string notify_url                = _appSettings.Notify_url;                 //回调地址
            string body                      = recharge.Name;
            string subject                   = "乐趣海南充值";
            Dictionary <string, string> dic  = new Dictionary <string, string>();
            Dictionary <string, object> dic2 = new Dictionary <string, object>();

            dic.Add("app_id", app_id);
            dic.Add("method", "alipay.trade.app.pay");
            dic.Add("version", "1.0");
            dic.Add("charset", charset);
            dic.Add("notify_url", notify_url);
            dic.Add("sign_type", _appSettings.Sign_type);
            dic.Add("timestamp", timestamp);
            dic2.Add("out_trade_no", out_trade_no); //商户订单号
            dic2.Add("total_amount", total_fee);    //支付金额
            dic2.Add("product_code", _appSettings.Product_code);
            dic2.Add("body", body);
            dic2.Add("subject", subject);
            dic.Add("biz_content", JsonHelper.SerializeObject(dic2));
            string sign = AlipaySignature.RSASign(dic, privateKeyPem, "utf-8", false, _appSettings.Sign_type);

            sign = HttpUtility.UrlEncode(sign, Encoding.GetEncoding(charset));
            string Parms     = string.Empty;
            var    testparms = string.Empty;

            foreach (KeyValuePair <String, string> k in dic)
            {
                testparms += k.Key + "=" + k.Value + "&";
                if (Parms == string.Empty)
                {
                    Parms = k.Key + "=" + HttpUtility.UrlEncode(k.Value, Encoding.GetEncoding(charset));
                }
                else
                {
                    Parms += "&" + k.Key + "=" + HttpUtility.UrlEncode(k.Value, Encoding.GetEncoding(charset));
                }
            }

            Parms = Parms + "&sign=" + sign;
            return(Parms);
        }
Ejemplo n.º 4
0
        public async Task <ResponseViewModel <WeChatResponse> > AcquireWeCharPaySign([FromBody] RequestViewModel obj)
        {
            ResponseViewModel <WeChatResponse> response = null;
            WeChatResponse result = null;

            obj = JsonHelper.DeserializeJsonToObject <RequestViewModel>(Content(User.Identity.Name).Content);
            var  sysCode = SysCode.Ok;
            bool isLog   = _token.VerifyToken(obj.HendInfo.UserOpenId, obj.HendInfo.SessionToken);

            if (isLog)
            {
                string json    = RedisHelper.StringGet($"{CacheKey.Token}{obj.HendInfo.UserOpenId}", RedisFolderEnum.token, RedisEnum.Three);
                var    userLog = JsonHelper.DeserializeJsonToObject <UserLoginDto>(json);
                int    itemId  = StringExtension.ToInt((string)obj.Data.itemId); //; //商品Id
                RechargeCommodityDto rechargeCommodity = await _recharge.GetRechargeCommodityByIdAsync(itemId);

                if (rechargeCommodity == null)
                {
                    sysCode = SysCode.RechargeCommodityIsNULL; //充值商品不存在,
                }
                if (sysCode == SysCode.Ok)
                {
                    string        strUrl = _lqhnweChatPay.Url;
                    WeCharRequest weChar = new WeCharRequest();
                    weChar.userOpenId   = obj.HendInfo.UserOpenId;
                    weChar.itemId       = (string)obj.Data.itemId;
                    weChar.sessionToken = obj.HendInfo.SessionToken;
                    WeCharRequestList requestList = new WeCharRequestList();
                    requestList.data = weChar;
                    string strJson = JsonHelper.SerializeObject(requestList);
                    result = JsonHelper.DeserializeJsonToObject <WeChatResponse>(_sys.PostJsonData(strUrl, strJson, Encoding.UTF8));
                }
            }
            else
            {
                /*短令牌失效*/
                sysCode = SysCode.SessionTokenLose;
            }
            response = new ResponseViewModel <WeChatResponse>(sysCode, sysCode == SysCode.Ok ? result : null, obj.Encrypt, _sys, obj.Secret);
            return(response);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 生成支付宝H5支付
        /// author:陶林辉
        /// </summary>
        /// <param name="recharge"></param>
        /// <param name="order">订单号</param>
        /// <returns></returns>
        public AliPayH5View CreateAlipayH5Receipt(RechargeCommodityDto recharge, string order)
        {
            DefaultAopClient client = new DefaultAopClient(_appSettings.Gatewayurl, _appSettings.App_id, _appSettings.PrivateKeyPem, "json", "1.0",
                                                           _appSettings.Sign_type, _appSettings.PublicKey, _appSettings.CharSet, false);
            AliPayH5View aliPayH5View = new AliPayH5View();
            // 组装业务参数model
            AlipayTradePagePayModel model = new AlipayTradePagePayModel
            {
                Body        = recharge.Name,             //商品描述
                Subject     = "乐趣海南充值",                  //订单名称
                TotalAmount = recharge.Money.ToString(), //付款金额
                OutTradeNo  = order,                     //订单号
                ProductCode = "QUICK_WAP_PAY"
            };
            AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();

            request.SetReturnUrl(_appSettings.Return_url);
            // 设置异步通知接收地址
            request.SetNotifyUrl(_appSettings.Notify_url);
            request.SetBizModel(model);
            aliPayH5View.html = _alipayService.pageExecute(request).Body;
            return(aliPayH5View);
        }