使用pfx文件的接口调用

   string orderid = "11071419409460972870";

 
            string sign = "";
            Dictionary<string, string> parameters = new Dictionary<string, string>();
            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();
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值