- 博客(34)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 流程图式编程
问题抛出:在实际编程情况下,我们经常会遇到一大串连续的操作(甚至可以理解为所有程序基本都是由一个个节点组成),类似以下这也是对于一个高档一点点的程序员,每次实际动手写程序前要做的一件事(画流程图)。这算是一个极其简单的流程图,但是,落实到实际代码里面,庞大的代码量,错综复杂的回调,最终导致的结果就是,这个程序感觉主逻辑代码很“飘”。也给后期的审查带来一定的不方便。问题解决:如果我们的主逻辑代码,就...
2018-06-11 20:19:21
11607
3
原创 13. PCI PIN
到了收单系统后台后,收单系统需要把数据发送给卡组,当然,收单系统和卡组传输PIN时,也必然不是明文传输,也是加密传输,这里就会有个加密秘钥K1,POS机安全芯片里面也有一个加密秘钥K2,这2个相同,其实就可以让收单系统后台完全无需知道PIN明文,直接把密文PIN丢到卡组就完事了。这里就需要引入专用的支付加密机HSM,AWS的云支付加密机很好支持了这个功能,叫做转加密,它有个API,可以支持,你传入密文的PIN,然后传入解密K2和加密K1的KEY 索引,在加密机里面帮你完成这个转加密的过程。
2024-09-05 11:28:11
234
原创 12. PCI DSS
支付行业,如果明文的卡信息通过了你的后台,那后台必须有PCI DSS的安全认证。这个认证是做支付系统的敲门砖,如果没有这个证书,基本到哪里都行不通。具体的认证过程和项目可以查看PCI 官网介绍。本篇着重在技术层面讲解需要满足的要求。
2024-09-04 19:35:44
295
原创 11. 风控
当前面提到的授权,清算,结算都已经做完时,是不是就大功告成了呢?答案不是,我们还缺非常重要的一环,风控是一个笼统的概念,没有标准答案,也是一项做不完的模块。风控也分为技术层面的风控和业务层面的风控。
2024-09-03 16:52:54
914
原创 2.2 用卡方式(Entry Type)
那就是在浏览器里面进行付款,比如支付宝在电脑浏览器付款时,会显示一个二维码在浏览器上面让用户去扫码付款,这种最终是用扫码付款,但是对于支付来说,是属于In web的方式,只是你启动了In web后,支付软件用它内部最合适的方式处理这笔付款。如果你用手机浏览器打开的话,很有可能还会跳转到支付宝/微信的app里面进行付款,这种使用deep link技术做到的web Call app的方式,也是In web的一种实现方式,都属于In Web。这种在大陆用的比较多,就是商家用扫描枪扫用户手机展示的二维码方式。
2024-09-03 11:56:48
251
原创 数据库ID优化设计
常规的Mysql ID设计方案自增ID UUID 雪花ID优缺点:自增ID: 如果需要迁移,那就是灾难,不在过多赘述,太简单UUID: 无序,对于Mysql的B+树数据结构来说非常不友好,严重降低了插入速度,因为无序就会导致页数据重新排列雪花ID: 宏观来说是有序的,但是每台机器的时间不可能完全相同,在并发比较频繁的时候,必然会存在后面的ID比前面ID更小的情况。雪花ID先来个扫盲,雪花ID其实就是一个Uint64的整数,组成形式是40位时间戳 + 13位机器识别码 + 1
2021-07-09 21:06:14
967
原创 登录接口设计
问题引入每个系统都有自己的账户系统,有账户系统,那就必然面临登录的概念,登录就要在互联网中传输密码,在互联网中传输密码就存在被人攻击和窃取的可能,如何做到密码传输安全可靠呢?解决方案1Https就已经保证了传输安全,不需要再进行加密问题所在有些大厂,为了能监控员工的网络,防止重要数据外泄,会在你的电脑上面安装企业证书,到了企业网关时,都会被拦截下来,由于电脑上面安装了企业证书,浏览器就信任了企业的“非法”证书,那网关就可以把所有请求数据明文解析出来,如果说我们的重要账号密码(比如银行)被
2021-02-17 11:18:13
1161
原创 7. Applepay 解码实操-golang
文档参考apple 官网的文档:Applepay解密过程源码路径:Apple Pay源码路径原始数据Base64解码这里以RSA作为介绍,源码里面包含了Ecc的,文章不重复写{ "version": "RSA_v1", "data": "N6h9l7hs9bUn1DGfc9MEEhP9/COm5AVsIuzKSXMcG85P7FkR058VuQnYRCY+EiTx3Kde7EUfrCnHWeGurDEB5v5au0Omo8uLyKAMsFeEJYntgLw8Wnhf98UlrlT0
2020-11-14 17:19:02
1338
原创 6. 支付常见坑总结(持续更新中……)
我们失败了,银行成功了这是支付里面,最最最常见的一种错误,如果是没有接触过支付的人,100%会踩的一个坑。这种问题基本都出在网络交互的原理理解上面:最常规的http交易来说,如果http报了错误,大部分码农是直接认为这笔交易失败。这是非常致命的一种想法,一次Http交互,大致可以分为以下4步:建立连接 发送数据 接收数据 断开连接这里,每一步都有可能存在错误。但是并不代表每个地方出错的处理方式都是一样的。建立连接时失败了,这笔交易是失败的,这是毫无疑问 发送数据失败,我们知道h
2020-10-11 22:30:29
257
原创 5. 支付里面的常用加密
加密类型:对称加密:DES,AES 非对称加密:RSA,ECC对称加密的概念用一个加密和解密的Key是相同的。属于可逆运算非对称加密加密和解密是不同的Key,属于不可逆运算,一般叫做公钥和私钥。公钥一般用来加密,私钥用来解密。私钥用来签名,私钥用来验签。常规问题:是否可以用私钥加密,公钥解密,公钥签名,私钥验签?先告诉大家,答案是可以的。签名 = 原始数据计算Hash + 用私钥对Hash进行RSA加密所以,本质上来说,签名,其实就是用私钥加密,反过来当然也是成立的,
2020-10-11 21:12:43
1799
1
原创 4. Applepay 详解
Applepay其实,我们在上一篇文章说过,其实就是一种电子钱包+3DS组合而成,那我们分解这2个过程来剖析Applepay。谣言:我们先来扫盲一下,其实国内大部分小伙伴都很熟悉微信支付宝,交易过程大概是这样,调用微信支付宝,然后他们返回给我们成功,这笔交易就完成,类似如下时序图:其实,applepay不是这种时序图!!Applepay交易时序图Note:这种是最原始的applepay交易时序图,可能有很多第三方SDK封装了很多层,会把中间的很多流程给封装一次,让时序看起来不是这
2020-10-09 21:18:23
1477
2
原创 3. 卡安全认证
卡号直接输入 卡号,有效期进行交易。这种是风险最高最高的交易,国内一般来说不允许,海外可以(所以要保护好自己的卡号不要轻易告诉别人)。非常容易盗刷,产生ChargeBack,这种交易对商户费率来说一般也是最高的。磁条卡也就是刷磁条卡,这种交易也是风险比较高,国内已经不发行磁条卡了,磁条卡就是卡片里面有一串肉眼看不到的数据,通过刷磁条的方式读取出来,进行交易,所以,只要拿到你的卡片,分分钟可以复制出来一张一模一样的卡片。EMV卡接触式IC卡,非接触式IC卡。 这种芯片卡,包含程序代码和数据
2020-09-30 19:36:51
696
原创 2. 支付方式(Payment Methods)
支付方式国内常见的:微信支付(Wechat Pay),支付宝支付(Alipay),云闪付(Unionpay QR),银联(Unionpay) 海外常见支付:Visa,Mastercard,JCB,PayPal,JCB,American Express 电子现金:公交卡,八达通(HK)用卡方式卡存在方式:刷磁条卡,就是我们信用卡背后有一条黑色的磁条 接触式IC卡,银行卡有一小块金属,把卡片插入POS机进行读取数据 非接触式IC卡,银行卡里面有NFC线圈,就和我们刷公交卡一样,拍一下就可以
2020-09-30 19:27:18
7192
原创 1. 支付机构
机构名词:发卡行(Issuer):发行银行卡的机构,比如中国银行,农业银行,工商银行,建设银行……真正存钱的地方 卡组织(Card Brand):Visa,MasterCard,Unionpay,JCB,American Express,JCB…… 收单行(Acquirer):签约商户,直接处理交易,清算机构 商户(Merchant): 就是实际进行经营的商户 机构之间的关系图:正常来说,商户和收单行之间还会有一层自己的后台服务。如果需要做这个服务,请注意,服务器需要通过PCI D...
2020-09-30 19:02:19
646
原创 android https 双向认证--高级
https双向认证,这种一般不会在android遇到,因为这种正常是服务器和服务器之间通信采用,而且是银行金融类用的比较多。用在android端的话,不仅起不到安全作用,反而会让https不安全,因为加密对称秘钥的公私钥需要存放在客户端。具体为什么不安全,这是很基础的知识,这里不讲。正常需要用到双向认证时,会给我们2个证书:Ca证书 和 .p12结尾的证书, 这种做法比较简单,网上到...
2019-06-12 16:26:35
1361
原创 android 使用crt/cer/pem格式的公钥证书
问题:android在网络各种教程里面,都是只有BKS的格式,但是一般后端给我们的公钥证书都是crt/cer/pem格式的,这种时候,常用的做法就是用keytools转换成bks格式。 个人感觉,这种做法很low,一眼就能让别人感觉你完全不懂证书其实我们常用的证书就2大种:16进制的 16进制进行base64编码后(这种尤其常用),添加 ----BEGIN CERTIFICATE...
2019-06-12 16:12:32
7333
1
原创 TFlow排队顺序处理循环事件
同样,抛出问题:我们会遇到会有一大串数据,需要重复去操作。比如,把整个文件夹下面的所有文件,上传到我们的服务端。这个LoopAction,我们可以分成几个部分:生成Bean模块,循环参数控制(每次循环获取的输入参数) 消费Bean模块(执行上送操作) 每次执行消费模块的结果返回 全部循环结束后,对整个循环过程结果进行外报TFlow解决方案:// <List...
2019-04-20 17:40:06
877
原创 TFlow的超时检测,delay操作
1. 同样,先抛出问题:我们常常会有担心一个功能比较复杂的SDK会出现bug,导致程序一直卡在这个点,影响程序继续进行,我们通常需要在这种操作单独添加一个定时器,当定时器超时时,认为这个Action已经异常,需要执行异常处理。TFlow如何解决这种问题:在添加Action时,可以设置一个action超时参数:RunParameters setTimeout(long timeou...
2019-04-20 17:10:58
298
原创 Lifecycle获取Activity和Fragment生命周期
抛出问题: 经常,我们会用到单例模式,也就是静态类,并且静态类会传入一些回调(Listener)。但是,这个回调(Listener)会被单例模式所持有,此时问题来了,activity就会无法回收。导致内存泄漏。解决方法:1. 单例模式开放一个释放资源的接口(listener = null 的方法),activity在onDestory时,主动去调用一下,用来释放,这种方法可以...
2018-07-11 21:03:01
5274
原创 流程图式编程2(流程打断)
在实际开发情况下,我们会经常遇到这么一个问题:流程1->流程2->流程3->流程4……这些流程都是自动执行的,并且耗时的,如果,在流程执行过程中,用户需要终止流程。通常按照我们的做法,就是设置一个标志位,每个流程启动前,都判断一下标志位,是否停止,再考虑是否继续往下执行。这种操作,对于我个人观点来说,简直就是狗屎吧。。正好TFlow框架正好可以提供一个很好的解决这种问题的方法,因...
2018-06-21 13:58:27
981
原创 解耦合
广大程序猿同胞,经常会看到“解耦合”,也有很多人,会用这个词来装X,但是,实际真正能理解的人,并不多。接下来,带大家深入浅出的走一遍,如何解耦合。首先,我们要知道,为什么要解耦合:通常,我们做一个项目,会用到很多基础功能块,比如xxx通信协议,xxxView等等,我们会把这种功能块封装成一个库,如果这个库,只能在这个指定的项目运行,这就叫高耦合,这就导致了,如果下次再次遇到一个类似的项目,需要用到...
2018-04-05 15:43:24
17466
1
原创 android 跑马灯效果
项目地址:https://github.com/superTruth/AutoScrollLayout<cn.supertruth.autoscrolllayout.AutoScrollLayout android:layout_width="match_parent" android:layout_height="wrap_content"> ...
2018-04-05 14:25:34
217
原创 简化使用android ble使用(TBBLE)
项目地址:https://github.com/superTruth/TBBLE-android项目简介本项目用于简化android BLE的使用,解决了:1.android手机适配2.发送数据自动拆包,无需关注拆包问题3.解决android BLE假连接问题4.数据发送扁平化(把所有数据串行发送,避免资源竞争)使用方法1. 创建/获取蓝牙管理对象 TBBLEManager tbbleMan...
2018-04-05 11:24:41
428
原创 IOS BLE从入门到精通
**系统要求:IOS7.0开始支持BLE,但是这里使用swift语言,swift是需要IOS8.0以上,所以,这里系统都是IOS8.0以上 硬件要求:iphone 4s以上(包含4s),才有BLE硬件。** 1.先获取到一个蓝牙的manager:// BLE需要蓝牙库支持,所以,需要导入蓝牙框架import CoreBluetoothmanager = CBCentralManager(de
2016-07-29 20:09:15
4017
原创 微信硬件平台从入门到精通(服务器端) 2
(网页方式)接下来,进行服务器(PHP,thinkphp框架)的代码编写: 1.获取令牌token,并且保存成公用的数据,因为token每天申请的次数是有限制的,所以,不能每次请求都去申请token,这样次数很快就用完了。namespace Home\Controller;use Think\Controller;class CommonController extends Controlle
2016-06-02 20:24:11
3051
原创 微信硬件平台从入门到精通(服务器端)
现在国内外各大厂家都在推自己的一套物联网方案,都想把智能家居协议推广到千家万户,所以,有了格力家电需要格力的app,美的需要美的的app,……最终,买好家电,自己手机就装了一大包app,谁也不爽。目前个人还是比较看好微信物联。毕竟微信有大量的活跃用户,这个推广起来会相对现实点。废话不多说,下面我们开始进入正题: 1.首先我们得需要一个公众号,公众号就相当于微信app的一个入口。 2.申请一个测试
2016-05-30 21:10:11
10157
1
原创 中兴部分手机BLE不能带参数扫描
今天刚刚发现一个问题:中兴手机android5.0以下手机,不能使用带参数的的BLE扫描。mBluetoothAdapter.startLeScan(serviceUuids, lescancallback);这种方式在中兴android5.0以下手机,会出现没有回调结果的现象。其他手机暂时没发现。所以,只能通过不带参数的扫描方式,自己分析广播数据,进行过滤
2016-05-30 19:42:08
767
原创 android 进程防止被杀死
每个公司都想把自己的app时时刻刻运行在用户的手机上面,就算当用户点击清理应用时,也能够不被杀死。这种app有几个典型的,就是微信,QQ,支付宝这类的。 网络上面,很多人提出各种方法: 1.提升应用等级 2.重启应用 3.守护进程 …… 实测,没有卵用,守护进程,会在杀死时,同时被杀死。微信,QQ,这类是怎么实现的,为什么只有这几个特别有名的app才能够实现不被杀死的呢?如果是说是什么特
2016-05-27 17:13:28
4242
1
原创 android BLE从入门到精通开发2
这次说一下BLE的广播数据格式,也就是android扫描回调里面byte[] scanRecord这个参数: 先假设这次扫描到的结果是: 上面的全部广播数据,就是byte[] scanRecord的所有数据,没有进过任何处理的。 下面的分析广播数据就是进过分析后的:有设备名,等等数据每条广播数据格式是这样的: 长度(1byte) key值(1byte)数据(长度-1 byte) 也就
2016-05-26 20:31:35
2876
1
原创 android BLE从入门到精通开发
目前智能家居都被看成是下一个科技爆发点,而智能家居里面使用的技术,响应最高的就算是BLE了,下面,我们说一下android怎么开发BLE,和要注意的一些问题:1.首先,得知道,android是从android4.3版本才开始支持BLE的,所以,开发的前提就是要知道系统的支持:if (android.os.Build.VERSION.SDK_INT < 18) { // 说明sdk不够高版本
2016-05-25 19:41:20
15506
9
原创 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-05-25 19:37:08
395
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人