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); }
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); }
/// <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); }
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); }
/// <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); }