예제 #1
0
 public async Task <ActionResult> PressConferenceRegister(Wx_PressConferenceRegisterViewModel model)
 {
     if (ModelState.IsValid)
     {
         WxPressConferenceUser user = new WxPressConferenceUser();
         user.Open_Id     = model.Open_Id;
         user.HeadImgUrl  = model.HeadImgUrl;
         user.CompanyName = model.CompanyName;
         user.NickName    = model.NickName;
         user.Name        = model.Name;
         user.Sex         = model.Sex;
         user.Mobile      = model.Mobile;
         user.AccessToken = model.AccessToken;
         var existuser = payDB.WxPressConferenceUser.SingleOrDefault(m => m.Open_Id == model.Open_Id);
         if (existuser == null)
         {
             payDB.WxPressConferenceUser.Add(user);
             await payDB.SaveChangesAsync();
         }
         return(RedirectToAction("PressConferenceHome", new { openid = model.Open_Id }));
     }
     else
     {
         ModelState.AddModelError("", "发生错误");
         return(View(model));
     }
 }
예제 #2
0
        public async Task <string> WxRedPackCreateAsync(string openid, int amount, string mch_billno, string act_name, string send_name, string remark, string wishing)
        {
            //Wx_WebOauthAccessToken webToken = utilities.getWebOauthAccessToken(code);
            string nonce_str = CommonUtilities.generateNonce();
            //string mch_billno = "WXREDPACK" + CommonUtilities.generateTimeStamp() + random.Next(1000, 9999);
            string mch_id       = WeUtil.getMchId();
            string wxappid      = WeUtil.getAppId();
            string re_openid    = openid;
            int    total_amount = amount;
            int    total_num    = 1;
            string client_ip    = WeChatUtilities.getConfigValue(WeChatUtilities.IP);
            List <QueryParameter> redpackParameter = new List <QueryParameter>();

            redpackParameter.Add(new QueryParameter("nonce_str", nonce_str));
            redpackParameter.Add(new QueryParameter("mch_billno", mch_billno));
            redpackParameter.Add(new QueryParameter("mch_id", mch_id));
            redpackParameter.Add(new QueryParameter("wxappid", wxappid));
            redpackParameter.Add(new QueryParameter("send_name", send_name));
            redpackParameter.Add(new QueryParameter("re_openid", re_openid));
            redpackParameter.Add(new QueryParameter("total_amount", total_amount.ToString()));
            redpackParameter.Add(new QueryParameter("total_num", total_num.ToString()));
            redpackParameter.Add(new QueryParameter("wishing", wishing));
            redpackParameter.Add(new QueryParameter("client_ip", client_ip));
            redpackParameter.Add(new QueryParameter("act_name", act_name));
            redpackParameter.Add(new QueryParameter("remark", remark));
            string           sign     = WeChatUtilities.createPaySign(redpackParameter);
            string           content  = parseXml(redpackParameter, sign);
            string           post_url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
            var              request  = WebRequest.Create(post_url) as HttpWebRequest;
            string           certpath = @"D:\apiclient_cert.p12";
            string           password = "******";
            X509Certificate2 cert     = new X509Certificate2(certpath, password);

            request.ClientCertificates.Add(cert);
            try
            {
                request.Method = "post";
                StreamWriter streamWriter = new StreamWriter(request.GetRequestStream());
                streamWriter.Write(content);
                streamWriter.Flush();
                streamWriter.Close();
                var response = await request.GetResponseAsync();

                StreamReader reader = new StreamReader(response.GetResponseStream());
                //return reader.ReadToEnd();
                XmlSerializer   xmldes = new XmlSerializer(typeof(WxHBSend_Result));
                WxHBSend_Result info   = xmldes.Deserialize(reader) as WxHBSend_Result;
                // 是否成功
                string err_code_des = "";
                if (info.return_code == "SUCCESS")
                {
                    if (info.result_code == "SUCCESS")
                    {
                        WxRedPackOrder item = new WxRedPackOrder()
                        {
                            act_name      = act_name,
                            mch_billno    = mch_billno,
                            err_code_desc = err_code_des,
                            status        = "SENDING",
                            send_time     = DateTime.Now,
                            re_openid     = openid,
                            send_name     = send_name,
                            total_amount  = amount,
                            total_num     = 1,
                            remark        = remark,
                            wishing       = wishing
                        };
                        PaymentDb.WxRedPackOrder.Add(item);
                        await PaymentDb.SaveChangesAsync();

                        return("SUCCESS");
                    }
                    else
                    {
                        err_code_des = info.err_code_des;
                    }
                }
                else
                {
                    err_code_des = info.return_msg;
                }
                WxRedPackOrder redpack = new WxRedPackOrder()
                {
                    act_name      = act_name,
                    mch_billno    = mch_billno,
                    err_code_desc = err_code_des,
                    status        = "FAILED",
                    re_openid     = openid,
                    send_name     = send_name,
                    total_amount  = amount,
                    total_num     = 1,
                    remark        = remark,
                    wishing       = wishing
                };
                PaymentDb.WxRedPackOrder.Add(redpack);
                await PaymentDb.SaveChangesAsync();

                return("FAIL");
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }