• 使用pfx文件的接口调用


       string orderid = "11071419409460972870";

     
                string sign = "";
                Dictionary parameters = new Dictionary();
                parameters.Add("charset", "00");
                parameters.Add("version", "1.0");
                parameters.Add("signType", "RSA");
                parameters.Add("service", "DYRefund");
                parameters.Add("requestId", GenerateOrderSn("req"));// Helpler.CreateOrderNumber(0));
                parameters.Add("merchantId", merc_id);
                parameters.Add("refundId", GenerateOrderSn("refund")); //Helpler.CreateOrderNumber(0));
                parameters.Add("orderId", orderid);
                parameters.Add("refundAmount", "31");
                parameters.Add("offlineNotifyUrl", "http://XXX.aspx");
                parameters.Add("clientIP", "192.168.28.113");
                //parameters.Add("platformRefundAmt", "");
                //parameters.Add("mercDetail", "");

                string signContent = GetSignContent(parameters);
                string path = HttpContext.Current.Request.PhysicalApplicationPath;
                RSACryptoServiceProvider key = new RSACryptoServiceProvider();
                key.FromXmlString(EncryptPrivateKey);
                sign = Sign(signContent, key);
                string merchantCert = GetMerchantCert(path + "Cert/merchant.pfx", "1234qwer");
                parameters.Add("merchantCert", (merchantCert));
                parameters.Add("merchantSign", sign);
                SerializerHelper serializerHelper = new SerializerHelper();
                var jsonString = serializerHelper.GetJsonString(parameters, null);
                string url = "http://XXX/mrpos/cashier";
                string resultData = Post(jsonString, url, "", false);
                Response.Write("退款返回:" + resultData);
     

    //多次调用 rd.next值是一样的 此方法需要修改

           private string GenerateOrderSn(string prefix = "")
            {
                Random rd = new Random();
                // 请按照规则自定生成
                var bizNo = string.Format("{0:yyyyMMddHHmmssfff}{1}", DateTime.Now, rd.Next(1000, 9999));
                return string.Format("{0}{1}", prefix, bizNo);
            }

       public static string Sign(string contentForSign, RSACryptoServiceProvider privateKey)
            {
                var rsaClear = new RSACryptoServiceProvider();
                var paras = privateKey.ExportParameters(true);
                rsaClear.ImportParameters(paras);
                using (var sha256 = new SHA256CryptoServiceProvider())
                {
                    //var signData = privateKey.SignData(Encoding.UTF8.GetBytes(contentForSign), sha256);
                    //System.Text.Encoding.GetEncoding("GBK")
                    var signData = privateKey.SignData(System.Text.Encoding.GetEncoding("GBK").GetBytes(contentForSign), sha256);
                    return BytesToHex(signData).ToUpper();
                }
            }

  • 相关阅读:
    【分享】xpath的属性表达式
    【图像评价指标以及代码】 PSNR, SSIM, FID,NMSE讲解以及代码
    算法进修Day-38
    AI智能网关在工业物联网领域有哪些应用优势
    SpringBoot如何保证接口安全?
    GCC: Graph Contrastive Coding for Graph Neural NetworkPre-Training
    领先特斯拉,中国电车制造商“登陆”东南亚,电气化潮流一触即发
    Java Azure开发 使用已有token字符串创建GraphServiceClient
    实际应用效果不佳?来看看提升深度神经网络泛化能力的核心技术(附代码)
    Spring Cloud微服务治理框架深度解析
  • 原文地址:https://blog.csdn.net/goodyatou/article/details/127768808