Пример #1
0
        /// <summary>
        /// 红包支付
        /// </summary>
        /// <returns></returns>
        public static string RedPackPay()   //
        {
            //CheckAccount();//检查AccountInfo的对象属性值
            IDictionary <string, string> parameters = new Dictionary <string, string>();

            parameters.Add("nonce_str", StringOperate.GetRandomString(16)); //随机字符串
            parameters.Add("mch_billno", "201807311513001");                //商户订单号
            parameters.Add("mch_id", "1489094092");                         //商户号, 注意是mchid而非mch_id
            parameters.Add("wxappid", "wx6f67aee8f096b87f");                //微信分配的公众账号ID(企业号corpid即为此appId)。在微信开放平台(open.weixin.qq.com)申请的移动应用appid无法使用该接口。
            parameters.Add("send_name", "味达美餐饮");
            parameters.Add("re_openid", "o_-IA0YU6JgzTvKINab0B30y0L_Y");
            parameters.Add("total_amount", "0.5"); //终端ip
            parameters.Add("total_num", "1");      //终端ip
            parameters.Add("wishing", "谢谢");
            parameters.Add("client_ip", "58.57.17.2");
            parameters.Add("act_name", "尚品生抽活动");
            parameters.Add("remark", "多买多发");
            parameters.Add("scene_id", "PRODUCT_1");
            parameters.Add("risk_info", "");
            parameters.Add("consume_mch_id", "");

            parameters = parameters.OrderBy(p => p.Key).ToDictionary(p => p.Key, o => o.Value);
            parameters.Add("sign", StringOperate.Str2MD5(StringOperate.MakeSign(parameters, ConfigurationManager.AppSettings["APISecret"].ToString())));//最后生成签名

            string requestXml = XmlHelpler.GetRedPackPayXml(parameters);

            var url = string.Format("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack");
            var a   = WeiXinHelper.SendCorpPayWithCert(requestXml, url);

            return(a);
        }
Пример #2
0
        /// <summary>
        /// 企业付款(请求需要双向证书)
        /// 企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,
        /// 针对部分有开发能力的商户,提供通过API完成企业付款的功能。 比如目前的保险行业向客户退保、给付、理赔。
        /// 企业付款将使用商户的可用余额,需确保可用余额充足。查看可用余额、充值、提现请登录商户平台“资金管理”进行操作。https://pay.weixin.qq.com/
        /// 注意:与商户微信支付收款资金并非同一账户,需要单独充值。
        /// </summary>
        /// <param name="amount">企业支付数据</param>
        /// <param name="openid">微信openid</param>
        /// <returns></returns>
        public static string CorpPay(string amount, string openid)  //
        {
            string nowDay = DateTime.Now.ToString("yyyyMMddHHmmssffff");
            IDictionary <string, string> parameters = new Dictionary <string, string>();

            //parameters.Add("mch_appid", "wx6de1aa1032b410fc");//公众账号appid, 注意是mch_appid,而非wxappid
            parameters.Add("mch_appid", "wx9657251bde1a71c4");              //公众账号appid, 注意是mch_appid,而非wxappid  餐饮积分的
            //parameters.Add("mchid", "1489094092");//商户号, 注意是mchid而非mch_id
            parameters.Add("mchid", "1249285801");                          //商户号, 注意是mchid而非mch_id 餐饮积分的
            parameters.Add("nonce_str", StringOperate.GetRandomString(16)); //随机字符串
            parameters.Add("spbill_create_ip", "58.57.17.2");               //终端ip
            parameters.Add("partner_trade_no", nowDay);                     //交易单号
            parameters.Add("device_info", "");                              //终端ip
            parameters.Add("openid", openid);                               //我的openid用于测试
            parameters.Add("check_name", "NO_CHECK");
            parameters.Add("re_user_name", "");
            parameters.Add("amount", amount);
            parameters.Add("desc", "恭喜您,味达美尚品生抽的红包已领取成功!");
            parameters = parameters.OrderBy(p => p.Key).ToDictionary(p => p.Key, o => o.Value);
            parameters.Add("sign", StringOperate.Str2MD5(StringOperate.MakeSign(parameters, ConfigurationManager.AppSettings["APISecret"].ToString())));//最后生成签名

            string requestXml = XmlHelpler.GetCorpPayXml(parameters);

            var url         = string.Format("https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers");
            var responseXml = WeiXinHelper.SendCorpPayWithCert(requestXml, url);

            return(responseXml);
        }