Esempio n. 1
0
        /// <summary>
        /// 用于对商户企业付款到银行卡操作进行结果查询
        /// </summary>
        /// <param name="partner_trade_no">商户订单号,需保持唯一(只允许数字[0~9]或字母[A~Z]和[a~z]最短8位,最长32位)</param>
        /// <returns></returns>
        public static async Task <QueryBankProgressResponse> QueryBankProgress(string partner_trade_no)
        {
            const string api = "https://api.mch.weixin.qq.com/mmpaysptrans/query_bank";

            /*1.生成签名*/
            var dictionary = new SortedDictionary <string, object>
            {
                { "mch_id", WxPayConfig.mchId },
                { "partner_trade_no", partner_trade_no },
                { "nonce_str", WeChatUtil.getNoncestr() },
            };

            dictionary.Add("sign", WeChatUtil.CreateSign(dictionary, WxPayConfig.key));
            /*2.生成xml数据*/
            var xml = WeChatUtil.WeChatSignXml(dictionary);

            /*开始请求接口*/
            try
            {
                var xmlStr = WeChatUtil.WxCerHttpPost(api, xml, WxPayConfig.cerPath, WxPayConfig.mchId);
                if (!string.IsNullOrWhiteSpace(xmlStr))
                {
                    var returnXml = WePayXmlUtil.XmlToObect <QueryBankProgressResponse>(xmlStr);
                    return(returnXml);
                }
            }
            catch (Exception ex)
            {
                return(null);
            }

            return(null);
        }
Esempio n. 2
0
        public static async Task <string> Getpublickey()
        {
            const string api        = "https://fraud.mch.weixin.qq.com/risk/getpublickey";
            var          dictionary = new SortedDictionary <string, object>
            {
                { "mch_id", WxPayConfig.mchId }, { "nonce_str", WeChatUtil.getNoncestr() }, { "sign_type", "MD5" }
            };

            dictionary.Add("sign", WeChatUtil.CreateSign(dictionary, WxPayConfig.key));
            var xml = WeChatUtil.WeChatSignXml(dictionary);

            var cerPath = $"{Environment.CurrentDirectory}/{ConfigHelper.Configuration["WeChatPay:Certificate"]}";

            try
            {
                var response = WeChatUtil.WxCerHttpPost(api, xml, cerPath, WxPayConfig.mchId);

                if (string.IsNullOrWhiteSpace(response))
                {
                    return("");
                }
                var returnXml = WePayXmlUtil.XmlToObect <PublicKeyModel>(response);
                if (returnXml.return_code != "SUCCESS")
                {
                    return("");
                }
                return(returnXml.result_code == "SUCCESS" ? returnXml.pub_key : "");
            }
            catch (Exception e)
            {
                return("");
            }
        }
Esempio n. 3
0
        public void GetSignature(string url, string callback)
        {
            var appid     = WeChatUtil.AppId;
            var timeStamp = WeChatUtil.GetTimeStamp();
            var nonceStr  = WeChatUtil.GetNonceStr();
            var signature = WeChatUtil.GetSignature(timeStamp, nonceStr, url);
            var obj       = JsonConvert.SerializeObject(new { appid = appid, timeStamp = timeStamp, nonceStr = nonceStr, signature = signature });
            var jsonp     = $"{callback}({obj})";

            HttpContext.Response.ContentType = "application/json";
            HttpContext.Response.Write(jsonp);
        }
Esempio n. 4
0
        /// <summary>
        /// 企业付款到银行卡
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public static async Task <PayToUserResult> PayToBank(WxPayToBankRequest dto)
        {
            const string api = "https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank";

            /*1.生成签名*/
            var dictionary = new SortedDictionary <string, object>
            {
                { "mch_id", WxPayConfig.mchId },
                { "partner_trade_no", dto.PartnerTradeNo },
                { "nonce_str", WeChatUtil.getNoncestr() },
                { "enc_bank_no", await WeChatUtil.RSAEncrypt(dto.EncBankNo) },
                { "enc_true_name", await WeChatUtil.RSAEncrypt(dto.EncTrueName) },
                { "bank_code", dto.BankCode },
                { "amount", dto.Amount }
            };

            dictionary.Add("sign", WeChatUtil.CreateSign(dictionary, WxPayConfig.key));
            /*2.生成xml数据*/
            var xml = WeChatUtil.WeChatSignXml(dictionary);

            /*开始请求接口*/
            try
            {
                var xmlStr = WeChatUtil.WxCerHttpPost(api, xml, WxPayConfig.cerPath, WxPayConfig.mchId);
                if (!Regexs.IsNull(xmlStr))
                {
                    var returnXml = WePayXmlUtil.XmlToObect <PayToUserResult>(xmlStr);
                    return(returnXml);
                }
            }
            catch (Exception ex)
            {
                return(null);
            }

            return(null);
        }
Esempio n. 5
0
 public void GetSignatureTest()
 {
     WeChatUtil.GetSignature("1", "2", "3");
 }