浏览代码

添加盒易付费率

lcl 2 年之前
父节点
当前提交
7da2535a14
共有 1 个文件被更改,包括 113 次插入0 次删除
  1. 113 0
      AppStart/Helper/SetDepositPostService.cs

+ 113 - 0
AppStart/Helper/SetDepositPostService.cs

@@ -320,6 +320,24 @@ namespace MySystem
                                             db.SaveChanges();
                                         }
                                     }
+                                    else if(pos.BrandId == 11 || pos.BrandId == 12) //盒易付
+                                    {
+                                        string content = BoxFee(merchant.KqMerNo, Fee.ToString("f2"));
+                                        JsonData obj = JsonMapper.ToObject(content);
+                                        if(obj["resultCode"].ToString() == "1")
+                                        {
+                                            pos.SeoDescription = "设置成功";
+                                            SetRecordResult(db, RecordId, 1, "设置成功");
+                                            db.SaveChanges();
+                                        }
+                                        else
+                                        {
+                                            string msg = obj["errorDesc"].ToString();
+                                            pos.SeoDescription = msg;
+                                            SetRecordResult(db, RecordId, -1, msg);
+                                            db.SaveChanges();
+                                        }
+                                    }
                                 }
                             }
                         }
@@ -1120,5 +1138,100 @@ namespace MySystem
 
         #endregion
 
+        
+        #region 盒易付
+
+        //测试环境
+        // string BoxRequestUrl = "https://openapi-test.iboxpay.com/api";
+        // string BoxAppId = "8840021411446784";
+        // string BoxAppSecret = "xgwGnmYGjVy0GOWOWkQtRk8Hk8ur5tCV";
+        // string BoxPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjMQxp24mjxDTr13uPW0y+tiO1yXFGw7P/pPQ0oZKK7F6KstEaus7pLEywBZ5XRXE5jgkhR2TS7Ne7djJfbpn5yFc6pPlz3ZsOfBVeB88NEwhx6xzCGX2eqSSkO33n8w2G0xc2ss5HpYBarT00NBZWhrwOXpdRPYLOYHKVU3Rl+FA9xDw/wYfoWvrr+JSfHRGn/ENMmQFEdckAbPauKaQMrZD2kz+PRrhq56eWnCuVQPcaz/jroVT8qQEgkg2IsNy+DwfLOIqm8IySEpxnQ5wN/KvsQJc2wXDQNf9F5kvWwjoqSSP0qJS+oPRXET+zJb+WTk2y5M6AYoC9NodwsC4NwIDAQAB";
+        // string BrhCode = "039001";
+
+        //生产环境
+        string BoxRequestUrl = "https://openapi.iboxpay.com/api";
+        string BoxAppId = "AP5879017839106039808";
+        string BoxAppSecret = "DGtftIyl6R3nzwPr5YuV5fnmkfwufXRj";
+        string BoxPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjmjoQirIYZBD9Qon2HkF4j/NAINXtJ7Lzq/WXxTF7t7mg7LNARt0+ZZaeWx8caq2fv5zdsGyyoInL23cBtDI5KmFfK69iA0ygQMK0WbiKqsUB1OpPbT3+9zLuadIJAznjA223lY6CIjTpdLZhaRjImNVqc60bdkx6YsQcA+xW+3r1JH4PPHb7yBEbkKIX8OhyX7U4p0TkbDkAobbjHr5YB9gmYLoSFJMOPfTtSExkv7/Y7IVR9poZAHcr3teFoAiXW3RzxelRtnXxIkl/6AUOKoL5fhr/UTUN+Q18uzNljYWr6SwnTI3EmtzgykaewWtZvV85Xdhe/BjiQ5Xor7YbwIDAQAB";
+        string BrhCode = "039004";
+
+        public string BoxFee(string MerNo, string Fee)
+        {
+            function.WriteLog(DateTime.Now.ToString(), "设置盒易付机具费率");
+            function.WriteLog(MerNo, "设置盒易付机具费率");
+            Dictionary<string, object> reqdic = new Dictionary<string, object>();
+            Dictionary<string, string> headdic = new Dictionary<string, string>();
+            string batchNo = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
+
+            string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            headdic.Add("appid", BoxAppId);//开发者id
+            headdic.Add("appsecret", BoxAppSecret);//开发者密码
+            headdic.Add("X-Up-AppId", BoxAppId);
+            headdic.Add("X-Timestamp", timestamp);
+            headdic.Add("X-Sign-Type", "SHA-256");
+
+            reqdic.Add("mchtNo", MerNo);//终端列表
+            reqdic.Add("brhCode", BrhCode);//机构号
+            reqdic.Add("tNDiscId", Fee == "0.6" ? "MHN10916" : "MHN10917");//费率模型
+            reqdic.Add("effectiveFlag", "1");//立即生效
+            string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
+
+            headdic.Add("X-Sign", BoxSHA256Sign(timestamp + BoxAppSecret + req));
+            string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic);
+            function.WriteLog("请求头\n" + head, "设置盒易付机具费率");
+            function.WriteLog("请求参数\n" + req, "设置盒易付机具费率");
+            function.WriteLog("请求地址:" + BoxRequestUrl + "/inst/mcht/update_disc", "设置盒易付机具费率");
+            string result = PostWebRequest(BoxRequestUrl + "/inst/mcht/update_disc", req, headdic);
+            function.WriteLog("返回\n" + result + "\n\n", "设置盒易付机具费率");
+            return result;
+        }
+
+        public string BoxSHA256Sign(string toSignStr)
+        {
+            byte[] toSignByte = Encoding.UTF8.GetBytes(toSignStr);
+            SHA256 sha256 = SHA256.Create();
+            byte[] signByte = sha256.ComputeHash(toSignByte);
+            string sign = Convert.ToBase64String(signByte);
+            return sign;
+        }
+
+        public bool BoxVerifySign(string toSignStr, string signStr)
+        {
+            byte[] toSignByte = Encoding.Default.GetBytes(toSignStr);
+            byte[] signByte = Convert.FromBase64String(signStr);
+            var toKey = Convert.FromBase64String(BoxPublicKey);
+            var rsaroot = RSA.Create();
+            rsaroot.ImportSubjectPublicKeyInfo(toKey, out _);
+            var publicKeyParameters = rsaroot.ExportParameters(false);
+            using (var rsa = RSA.Create())
+            {
+                rsa.ImportParameters(publicKeyParameters);
+                var sha256 = SHA256.Create();
+                var hash = sha256.ComputeHash(toSignByte);
+                return rsa.VerifyHash(hash, signByte, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
+            }
+        }
+
+        public string BoxSignData(string toSignStr)
+        {
+            byte[] toSignByte = Encoding.UTF8.GetBytes(toSignStr);
+            var toKey = Convert.FromBase64String(BoxPublicKey);
+            var rsaroot = RSA.Create();
+            rsaroot.ImportSubjectPublicKeyInfo(toKey, out _);
+            var publicKeyParameters = rsaroot.ExportParameters(false);
+            using (var rsa = RSA.Create())
+            {
+                rsa.ImportParameters(publicKeyParameters);
+                var sha256 = SHA256.Create();
+                var hash = sha256.ComputeHash(toSignByte);
+                byte[] endByte = rsa.SignData(toSignByte, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
+                return Convert.ToBase64String(endByte);
+            }
+        }
+
+        #endregion
+
+
+
     }
 }