最近把beecloud,芝麻信用,智能门锁接入了系统。闲下来把遇到的一些坑排下,也能给后人一些指导

一些代码片段为.net
1.beecloud。
这个其实没有什么好说的,主要就是直接用sdk就好了。
但也是有一些注意的点,因为我主要做的是扫码枪这块的东西,所以下面对这部分有一个详细的讲解。
a:扫码枪这个东西其实是自带一个提交操作的,意思就是在我们进行扫码枪扫码后其实就已经是提交了,所以在布局这块应该是先输入金额等等信息,最后扫码枪然后自动提交,这样是可以免除一次人工的操作的。
b.判断扫码枪传回的是支付宝码还是微信的码(目前主要使用场景是这两块)beecloud的sdk是需要我们来指定是支付宝还是微信的,现在支付宝的条形码规则是28开头的18位数字,微信条形码规则:18位纯数字,以10、11、12、13、14、15开头

if (model.corder.Substring(0, 2) == "28")//支付宝

如果说我们的用户只是针对支付宝和微信的话,其实下面直接else就好了,但是有比如百度钱包等,这时候就需要我们对这些进行详细的判断区分了。

  BCBill paybill = new BCBill(BCPay.OfflinePayChannel.BC_ALI_SCAN.ToString(), Convert.ToInt32(model.Money * 100), model.Number,"扫码枪支付宝支付");
                            paybill.store_id = BaseService.GetBranchidByBeecloud(model.BranchID) == null ? null : BaseService.GetBranchidByBeecloud(model.BranchID);
                            paybill.authCode = model.corder;
                            Dictionary<string, string> dic = new Dictionary<string, string>();
                            dic.Add("branchid",model.BranchID.ToString());
                            dic.Add("billid",model.BillID.ToString());
                            dic.Add("number",model.Number);
                            paybill.optional = dic;
                            BCBill resultbill = BCPay.BCOfflinePayByChannel(paybill);
                            isboll = resultbill.result;

在beecloud中,对于金钱是int类型,所以我们在进行传值的时候需要进行*100保证数据正取。
在代码中我们有两种方式来接收是否支付成功,一种便是代码上中 isbool = resultbill.result。这个返回的是一个Bool类型。当然beecloud也是支持回调返回,具体采用那种可以根据自己的需求进行选择。
对于beecloud就到这里。
下面是芝麻信用
2.芝麻信用
a.这个的话私钥,公钥应该是一个比较坑的地方,.net的话必须进行去头去尾的操作,根据官方api的是需要进行很多次的解密操作才能获得这个秘钥,其实我们可以直接下载一个安装包就好了。不需要去c++的环境去捣鼓。

    DefaultZmopClient client = new DefaultZmopClient(gatewayUrl, appId, privateKey, zhimaPublicKey, charset);
            ZhimaAuthInfoAuthorizeRequest request = new ZhimaAuthInfoAuthorizeRequest();
            request.SetChannel("apppc");
            request.SetPlatform("zmop");
            request.IdentityType = "2";  //必要参数             
            request.IdentityParam = "{\"name\":\"" + Username + "\",\"certType\":\"IDENTITY_CARD\",\"certNo\":\"" + UserCard + "\"}";  //必要参数             
            request.BizParams = "{\"auth_code\":\"M_H5\",\"channelType\":\"app\",\"state\":\"" + Str + "\"}";//自定義參數
            string url = client.generatePageRedirectInvokeUrl(request);
            return url;

一般来讲我们的自定义参数要将我们当前获取芝麻信用的用户的id,或者token等标识信息作为参数传递过去,因为我们需要将用户的信息进行更新嘛。
在这步最后我们会得到一个url,这个url是支付宝提供的一个挂起页面具体页面会根据你应用的场景不同,调用的api也不同。
最后就是解析回调

string Parmar = Request.QueryString["params"];
string SignStr = Request.QueryString["sign"];

这个是我们要拿到的参数。这两个参数是加密过的,所以我们要对这两个参数进行解签

//判断串中是否有%,有则需要decode
            if (Parmar.IndexOf("%") != -1)
            {
                Parmar = HttpUtility.UrlDecode(Parmar);
            }
            if (SignStr.IndexOf("%") != -1)
            {
                SignStr = HttpUtility.UrlDecode(SignStr);
            }

string decryptedParam = client.decryptAndVerifySign(Parmar, SignStr);

decryptedParam就是我们最后所需要的信息,里面包括tokenid,还有我们的一些自定义参数

            //获取芝麻分
            string datetimestr = DateTime.Now.ToString("yyyyMMddhhmmssfff");
            string numberstr = "0000000000001";
            ZhimaCreditScoreGetRequest request = new ZhimaCreditScoreGetRequest();
            request.SetChannel("apppc");
            request.SetPlatform("zmop");
            request.TransactionId = datetimestr + numberstr;  //必要参数             
            request.ProductCode = "w1010100100000000001";  //必要参数             
            request.OpenId = tokenid;  //必要参数             
            ZhimaCreditScoreGetResponse response = client.Execute(request);
            ZhimaCreditScoreGetResponse resp = response;

最后resp会返回当前查询用户的芝麻分数和业务编号。然后进行我们的业务操作就好了。
3.智能门锁-云盯
智能门锁的话其实就是添加密码,删除密码,修改密码,更主要的是我们自身的业务逻辑,本身的api使用还是比较简单的
1.获取token

 string getjsonstr =  GetDdingApi.CreateHttpPostResponse(url, canshu);
            JObject obj = (JObject)JsonConvert.DeserializeObject(getjsonstr);//将json字符串转换成一个json对象
            string tokenstr = obj["access_token"].ToString();

token是整个api的一个重要的参数,所有的操作都是通过整个token来进行的。
然后云盯的api进行传参是以dic字典进行传参数。
主要的参数为home_id,room_id,这两个参数也是云盯提供给我们,为了方便我们还是存在我们的库中比较好,room_id是唯一的。
如果是做密码模块的话,password_id是一个重要的参数,在后期的密码修改删除时,password_id是重要的参数进行判断的。

 Dictionary<string, object> canshu = new Dictionary<string, object>();
            string token = DEVService.GetToken();
            Random rad = new Random();//实例化随机数产生器rad;
            int password = rad.Next(100000, 999999);//用rad生成大于等于100000,小于等于999999的随机数;6位密码
            DateTime DateStart = new DateTime(1970, 1, 1, 8, 0, 0);
            int totime = Convert.ToInt32((DateTime.Now - DateStart).TotalSeconds);//当前时间的时间戳
            int edtime = Convert.ToInt32((Enddate - DateStart).TotalSeconds);//结束时间的时间戳
            canshu.Add("access_token", token);
            canshu.Add("home_id", home_id);
            canshu.Add("room_id", room_id);
            canshu.Add("password_id", Password_id);
            canshu.Add("password", password);
            canshu.Add("is_send_location", true);
            canshu.Add("phonenumber", Newbill.UserMobile);
            canshu.Add("name", Newbill.UserName);
            canshu.Add("permission_begin", totime);
            canshu.Add("permission_end", edtime);

云盯的api是可以我们将用户的姓名手机号传递过去进行发送短信的操作的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值