• 使用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();
                }
            }

  • 相关阅读:
    MySQL优化
    上PICO,沉浸式观看亚运直播,参与跨国界游戏竞技
    【MindSpore】【自定义数据集】GeneratorDataset 可迭代,但是model.train跑不动
    1004. 最大连续1的个数 III
    软件项目管理判断题
    【UniApp】-uni-app全局样式和局部样式
    Ubuntu22.04 & Win11 双系统hibernate冷切换实现
    使用Kubernetes和Docker部署Java微服务
    Linux开发工具之调试器gdb
    JavaScript 在前端开发中有什么应用?
  • 原文地址:https://blog.csdn.net/goodyatou/article/details/127768808