随笔

天道酬勤,知行合一

虚机安装与配置

支付系统基础架构-1

安装Centos Linux的开源操作系统,可以选择Ubuntu, Centos等。 这里以Centos为例来介绍支付微服务的虚机安装与配置过程。 下载Centos7.4, 直接从官网下载every thing的版本, 是一个IOS文件,这里下载的是Everything的版本。 制作一个U盘启动盘用于安装操作系统,使用UltraIso软件来制作。安装完成后, 首先选择文件–打开,...

GitHub工作流程

GitHub-1

Pull请求是通过fork一个新的代码库用来独立开发,并将变更贡献回原始代码库。当某一个模块的开发工作完成后,可以发送一个pull请求给代码库所有者,来合并我们的代码更改。Pull请求本身可以引起合作者之间的评论,包括代码质量,功能,甚至总体战略等。 注意,一次代码提交不要包含太多内容,代码行数控制在50行以内。太长的代码行不利于审核。 一、准备工作 建议大家在Linux环境下...

对账

支付系统设计-2

2017-02-16, 补充对账系统架构图 支付系统的开发和运维同学,最常见的投诉,应该就是客户说,某渠道已经扣款钱了,你看,回执都有了,可是买的东西怎么还没得到呢? 往往开发同学一查,还真是这么回事。在系统中明明记着这个订单是未支付状态呢。 那怎么办? 这就得从渠道拿对账单做一个核对。 这里要说的,就是怎么对账了。 一、对账的定义 那什么是对账? 对账指对前一个清算周...

充值记账

支付清结算-5


收单记账

支付清结算-5

本文描述在电商支付系统的支付记账和会计处理流程。注意,这个流程和第三方支付平台以及银行等渠道的处理是不一样的。主要表现在: 电商支付系统的支付记账处理,不需要考虑备付金的情况。 用户的扣款是通过银行直接入账的, 不考虑担保交易的场景。 第三方平台支付系统的记账处理,支持担保交易。 用户交易资金是通过备付金来进行周转。 这两个流程区分的关键在于是否有备付金。 本文考虑第一种情况,即无...

账户体系

支付清结算-4

在设计支付系统前,首先需要完成账户体系的梳理。 账户是用来记录会计科目所反映的业务内容的工具,它根据会计科目来开设的。因而在设计账户体系时,首先需要完成会计科目的设置,之后按照会计科目来设置账户。 一、会计科目 如上文所述, 会计科目是会计对象具体内容内容分类的标志。 会计科目分类,一般按照公司的规模和业务复杂度,划分为3~5级,甚至更多。 大类别 即按照经济要素,根据我国企业会计制...

三户模型

支付系统设计

本文部分内容来自“支付产品技术交流群” 内容的整理。 账户体系是支付系统的基础,它的设计直接影响整个系统的特性。这里探讨如何针对电子商务系统的账户体系设计。我们从一些基本概念开始入手,了解怎么建模。 一、三户模型 三户模型最早是在增强型电信运营图(Enhanced Telecom Operations Map,eTOM)中提出,在电信行业中得到广泛使用。 三户指客户(Custo...

配置管理系统设计和选型

支付系统设计

配置管理是每个系统中必不可少的一个组件,同时也往往是考察系统架构设计和程序员开发能力的一个重要方面。我们从当前配置管理实现机制演化来分析在支付系统以及微服务中应该如何对配置管理进行选型,以及如何选择合适的参数管理组件。 配置文件 需求 运营参数可以动态调整,无需重启 可以根据不同的stage、dc进行配置; 数据库迁移,可以批量修改并重启。 1、集中配置,所以的配置文件...

快捷支付产品

支付系统设计-4

快捷支付指用户在电商网站上执行支付时,不需要输入卡信息,仅根据短信或者其他的验证方式确认身份后,就可以执行扣款的支付方式。 这是目前电商网站采用的主要支付方式。 快捷支付分为首次支付和非首次支付,他们的流程是不一样的,区别就在于首次支付的时候,用户需要绑卡。而非首次支付则是直接使用已经绑定的卡来执行扣款,仅需做身份验证就行。注意,这里介绍的是电商网站为业务提供的快捷支付接口,而不是银行或者其...

在线支付流程简介

支付概述-01

相关概念 我们以收银台为例,详细说明支付的正确打开方式。 当用户提交订单后,就会被引导到收银台上。 以某东为例,手机上是这样的: PC上是这样的: 从这里我们可以看出,用户进入收银台之后,首先需要选择默认的支付方式。 支付方式指消费时付款的方式,比如现金支付、货到付款、信用卡支付、借记卡支付、扫码支付等。 那么有哪些支付方式适合在收银台上展示出来? 这就是支付应用和支付...

中国支付清算体系

支付概述-02


交易与支付

支付概述-01

支付系统设计需要对支付领域有一定的了解。这一系列的文章介绍点轻松的内容,首先介绍支付活动,其次是支持这些支付活动的国内支付体系组成,之后是介绍支付体系各个玩家的实际运作情况。 当然,这里仅做简单的介绍,而非对观点的考证,目的是为支付系统设计提供背景知识。 支付领域涉及的主要概念,包括市场、交易、货币、银行等。相关的概念和实体,是随着社会活动发展的需要而逐步诞生,教科书上都有详细的介绍,这里...

支付风控模型和流程分析

支付风控系统设计-3

接上一篇支付风控数据仓库建设。支付风控涉及到多方面的内容,包括反洗钱、反欺诈、客户风险等级分类管理等。 其中最核心的功能在于对实时交易进行风险评估,或者说是欺诈检测。如果这个交易的风险太高,则会执行拦截。由于反欺诈检测是在交易时实时进行的,在要求不能误拦截的同时,还有用户体验上的要求,即不能占用太多时间,一般要求风控操作必须控制在100ms以内,对于交易量大的业务,10ms甚至更低的性能要求...

支付产品服务的设计

支付系统设计-11

关于支付系统相关概念、支付主流程设计,请参考之前的文章: 支付路由设计 支付网关设计 本文接支付网关设计部分, 介绍支付产品模块的设计。 支付产品模块是按照支付场景来为业务方提供支付服务。这个模块一般位于支付网关之后,支付渠道之前。 它根据支付能力将不同的支付渠道封装成统一的接口,通过支付网关来对外提供服务。所以,从微服务的角度,支付产品本身也是一个代理模式的微服务,它透过支付...

微服务的基础设施建设

支付系统设计-8

快速迭代,持续交付是互联网和微服务开发的核心理念。 这需要大量完善的基础设施的支撑。 对支付系统开发来说,这些基础设施尤为重要。近年来随着互联网公司在金融领域上的发力,竞争越来越激烈,新产品推出速度也在加快,而对安全的要求却是越来越高,不断的有系统或者业务的安全问题爆发。如何在快速完成业务支持任务的同时,保证开发质量,是支付系统开发面临的难题。 微服务架构是解决这个问题的利器,不过也需要强大...

微服务与RPC

从SSH单体应用到微服务架构-7

在支付系统的微服务架构中,基础服务的构建是重中之重, 本文重点分析如何使用Apache Thrift + Google Protocol Buffer来构建基础服务。 一、RPC vs Restful 在微服务中,使用什么协议来构建服务体系,一直是个热门话题。 争论的焦点集中在两个候选技术: (binary) RPC or Restful。 以Apache Thrift...

微服务开发的软件过程

从SSH单体应用到微服务架构-6

不少同学询问到如何实施微服务,特别是对项目数量增加的担忧。 在支付渠道设计一文中提到,可以按照渠道来划分项目,一个渠道一个项目,有同学认为这会导致项目太多无法管理。 本文要回答这个问题,在微服务中,我们是如何管理项目的,即微服务的软件过程。 支付系统基础设施建设一文简单描述了持续集成的所需要的基础软件。这里我们从软件过程的角度,详细介绍这些步骤。 支持持续集成所需要的基础软件,在该...

支付路由设计

支付系统设计-9

春节后回来,工作重点转到现有系统的微服务改进上。继续支付系统设计的话题。 在此也特别感谢大家对凤凰牌老熊的公众号的关注和支持,祝大家新的一年工作顺利,万事如意。 接着回到支付系统设计的主题。阅读本文之前,有必要回顾下支付系统设计这篇文章。后续我们将深入到支付系统各个模块的设计,本文首先介绍支付核心模块支付路由的设计。 从支付系统设计一文我们可以知道,用户在前端选择一种支付方式,比...

支付清结算之账户和账务处理

支付清结算-4

2016年10月8日从IT系统设计角度写了一篇账户设计的文章。这里结合清结算的业务,详细介绍支付清结算中的账户和账务处理。 这是清结算系列的第四篇文章,本文重点介绍清结算中的账户和账务的处理。 请务必阅读这几篇文章以便理解这里的流程。 支付清结算之基本概念和入门 支付清结算之渠道侧处理 支付清结算之电商侧处理 一、账户体系 在设计清结算系统前,首先需要完成账户...

支付清结算之电商侧处理

支付清结算-3

近期重点在梳理清结算部分的业务和设计。临近年关,也预祝读者们新春快乐,万事如意。 本文重点介绍支付清结算在电商侧的处理,这是系列文章中的第三篇,前两篇文章请参阅: 支付清结算之基本概念和入门 支付清结算之渠道侧处理 这篇文章的内容比较枯燥,就是一堆的业务对应的会计分录。 下一篇文章将基于这个会计分录来设计账户结构。 后续和银行、渠道的对账,也需要基于这些会计分录来进...

支付清结算之渠道侧处理

支付清结算-2

上一篇文章还遗留的很多问题,这里我们一步步详细介绍清结算中在渠道侧如何进行。这里的渠道侧,既包括银行,也包括第三方支付以及银联。 支付 上一篇文章中的小明通过工行在老熊公司买了一张100元的会员卡,工行按照支付金额的0.1%收取手续费, 产生了如下会计分录 借: 银行存款-工行收款 100 贷: 主营业务收入-会员卡 100 借: 服务成本-工行手续费 0.1 贷:银行存款-工...

账户和账务

支付清结算-1

到了年底,业务多,有2周多没有更新了。最近开始做清结算相关的业务,因而暂停更新风控的文章,先完成这一篇清结算的入门。 对会计相关内容,理解也不深入,欢迎大家交流,指正。 搞明白了清结算,你就明白了支付业务是怎么运转的。 从技术上来说,清结算并不是最难的,风控、信用,实施起来比清结算难多了。但从业务的角度来说,清结算可以说是最难理解的支付业务过程了。 它牵扯到支付所有相关的概念。为了...

支付风控数据仓库建设

支付风控系统设计-2

这篇文章是支付风控系统设计的第二篇,重点介绍支持支付风控的数据仓库建设。关于支付系统在风控上的具体需求,参见上一篇文章 支付风控场景分析。 支付风控系统在数据存储设计上和其它业务不同的地方在于数据获取与使用的流程。一般业务系统会先确定系统数据需求,再设计如何在业务流程中采集数据,以及数据的格式怎么定义。而支付风控面临的是一个无法预知的场景,需要在实践中根据当前运行情况不断调整。它会...

支付风控场景分析

支付风控系统设计-1

风控是一个让人爱恨交加的话题。 对支付来说风控是必不可少的功能。只要老板不想把底裤都赔掉,那就必须上风控。可对互联网公司来说,风控是一个谜一般的话题,无论是对风控专家还是IT工程师而言。随着互联网和大数据技术的引入,风控变成了一个跨学科的领域,可这无疑是互联网公司里面最同床异梦的跨学科。机器学习,深度学习,规则推理,随机森林….光这些名词就足以让人风控专家望而怯步;而风险事件、尽职调查、巴塞...

现有系统做微服务架构改进经验分享

2016年11月29日在Docker社区的讲稿

背景介绍 应dockone社区邀请,于2016年11月29日晚在社区做关于微服务架构改造的技术分享。这里特别感谢docker社区的同学们的热心帮助,以及诸位技术同好们的热心捧场。 讲稿内容 大家好,我是凤凰牌老熊,很高兴能有机会和大家交流关于微服务系统建设相关的话题。 近期和微服务相关的话题非常地火,大家看到的各种开发技术网站,微服务都是一个热门的话题。 今天我也来凑凑热闹吧。 将要和...

支付系统的基础设施建设

支付系统设计-8

快速迭代,持续交付是互联网和微服务开发的核心理念。 这需要大量完善的基础设施的支撑。 对支付系统开发来说,这些基础设施尤为重要。近年来随着互联网公司在金融领域上的发力,竞争越来越激烈,新产品推出速度也在加快,而对安全的要求却是越来越高,不断的有系统或者业务的安全问题爆发。如何在快速完成业务支持任务的同时,保证开发质量,是支付系统开发面临的难题。 微服务架构是解决这个问题的利器,不过也需要强大...

支付网关的设计

支付系统设计-7

在支付系统中,支付网关和支付渠道的对接是最核心的功能。其中支付网关是对外提供服务的接口,所有需要渠道支持的资金操作都需要通过网关分发到对应的渠道模块上。一旦定型,后续就很少,也很难调整。而支付渠道模块是接收网关的请求,调用渠道接口执行真正的资金操作。每个渠道的接口,传输方式都不尽相同,所以在这里,支付网关相对于支付渠道模块的作用,类似设计模式中的wrapper,封装各个渠道的差异,对网关呈现...

支付系统的监控与报警

支付系统设计-6

关于监控,在各个技术网站,几乎都是一搜一大把。几个大的互联网公司,也都有开发自己的监控系统。 关于这方面也有不少分享。 这里介绍针对支付系统的监控和报警,但大部分内容,应该来说,对其他系统也是通用的 。 现在基本上 Zabbix 成为监控的标配了。 一个常规的 Zabbix 监控实现, 是在被监控的机器上部署Zabbix Agent,从日志中收集所需要的数据,分析出监控指标,发送到zabb...

支付系统之应用内支付

支付系统设计-5

2017.01.17, 补充苹果订阅部分处理的内容。 2016.11.17,补充和苹果公司沟通的关于自动续费的结果。 为什么要IAP 应用内支付指使用手机操作系统自带的支付功能来支持支付。目前国内主要的应用内支付有 Google Pay, Apple Pay, 小米支付、华为支付等。 其中Apple Pay是典型的一个应用内支付,Android平台的各种支付也一般是沿用Apple...

快捷支付产品

支付系统设计-4

快捷支付指用户在电商网站上执行支付时,不需要输入卡信息,仅根据短信或者其他的验证方式确认身份后,就可以执行扣款的支付方式。 这是目前电商网站采用的主要支付方式。 在快捷支付中,用户首次支付,需要提供卡的信息,之后就可以凭短信验证码,甚至不需要密码,也可以执行扣款。 接口概述 一般来说,快捷支付需要提供如下接口: 签约, 也叫“绑卡签约”、“开通交易”等,指用户在商户网站上开通快捷支付...

银行卡支付

支付系统设计-3

银行卡支付 先说大家比较熟悉的银行卡支付,它分为线上支付和线下支付两种形式。线下支付就是通常说的POS收单,这里不介绍这个内容。对线上支付,按照卡的类别,分为贷记卡支付,也叫motopay、ePOS,即信用卡支付;和借记卡支付。按照支付形态,又分为认证支付、网银支付、快捷支付几种形态。银行卡网银支付要求银行卡必须开通在线支付功能,而快捷支付并不需要开通在线支付功能。主要利用支付验证要素(卡...

支付系统的对账处理

支付系统设计-2

2017-02-16, 补充对账系统架构图 可以说,对账是支付系统最头疼的事情。每一笔交易,都要做到各参与者的记录能够吻合,没有偏差。对账系统的工作,是发现有差异的记录,即轧帐;然后通过人工或者自动的方式,解决这些差异,即平帐。 对电商系统来说,每一笔交易,在所有相关主体侧都要能对得上: 交易主体,如果发起人是个人,必须能够从个人交易历史记录中找到这笔交易。但大部分人不会...

账户模型

支付系统设计

账户体系是支付系统的基础,它的设计直接影响整个系统的特性。这里探讨如何针对电子商务系统的账户体系设计。我们从一些基本概念开始入手,了解怎么建模。 一、三户模型 账户和会计科目 账户体系设计首先要区分两个概念,支付账户和登录账号。 这是两个不同业务领域的概念。 支付账户 指用户在支付系统中用于交易的资金所有者权益的凭证。 登录账号 指用户在系统中的登录的凭证和个人信息。 一个用户可...

SSH框架微服务改进实战

从SSH单体应用到微服务架构-5

本文假定你已经阅读过之前的文章: 为什么要重构到微服务 重构中的外部准备工作 重构中的内部准备工作 使用微服务架构重构支付网关 上一篇文章使用微服务架构重构支付网关 是从横向的角度来分析如何分解服务以及建立微服务之间的关系。这篇文章从纵向详细介绍如何对SSH框架的支付系统实施具体的技改。这里不涉及具体代码写法,重点在于说明方法论。虽然以SSH(Apache Strut...

在以太坊上私链上实现一个简单的合约

区块链开发-3

本文是针对以太坊开发入门的教程。 纯开发人员版本。关于以太坊相关概念,比如合约、交易、以太币等,参考官方文档,或者中文版 开发合约,需要一个编译器。 就像开发Java程序一样,需要javac将文本代码变成可执行的代码。 最常用的是solidity编译器。 首先是准备开发和运行环境。这里我还是使用两台机器来跑,一台机器挖矿,一台机器运行合约。 整个环境都是在私链中运行的。 如何安...

在以太坊上私链上实现一个简单的交易

区块链开发-2

本文是针对以太坊开发入门的教程。 纯开发人员版本。关于以太坊相关概念,比如合约、交易、以太币等,参考官方文档,或者中文版 本文假定你已经看过上一篇文档码农的区块链:搭建一个私有区块链环境。 运行环境 这个实例是在三台机器上运行,dev011, dev012,dev013。 在这三台机器上启动以太坊。注意将其他两台机器加入到静态节点名单static-nodes.json中: [...

码农的区块链:搭建一个私有区块链环境

区块链开发-1

这篇文章参考区块链技术指南。但原文是Happy flow。这里把我安装过程中碰到的坑也都记录下来。我使用的是Ubuntu 14.10。这是以太坊推荐的版本。 最近在研究区块链。打算先搭建一个测试环境开始运行。这里记录整个搭建过程,供后来人参考。 整体上,分为三个步骤,安装相关软件,初始化系统,建立集群,以及最后一步,挖矿。 我们采用的是以太坊,相对其他区块链,这是一个成熟的环境。...

使用微服务架构重构支付网关

从SSH单体应用到微服务架构-4

这是微服务重构支付系统的系列文章。 之前的文章请参考: 为什么要重构到微服务 重构的外部准备工作 重构的内部准备工作 在支付系统改进中,我们对原有系统做了整体的评估,选择支付网关作为入手点来进行微服务架构的改进。这里详细介绍我们针对该模块的改进过程,供参考。 原有系统情况 早期启动的时候,对接的支付渠道不多,所有支付渠道和支付网关都实现在一个项目中,部署在一起。其中支...

支付渠道那些事

支付系统设计-10

昨晚刚回到家,就收到商务团队电话:我们是否有上线新功能,某付宝技术人员在联络群里说,我们支付系统发送过去的请求大量地出错了,赶紧看看! 又是某付宝,虽然在渠道流量占比中不算大,可是挖的坑确是最多的。今天聊聊这些不靠谱的渠道,以及如何规避。 HTTPS的坑 还是这个宝,年初的时候,有一天,系统毫无征兆的大量出错,日志中全是这个错误: javax.net.ssl.SSLHandshakeE...

支付系统整体架构

支付系统设计-1

修改记录: 2016-08-08 初稿,列举了现有主流公司的支付架构; 2017-03-04 补充支付系统架构的overview. 支付的典型架构 每个公司根据其业务和公司发展的不同阶段,所设计的支付系统也会有所不同。我们先看看互联网公司的一些典型的支付系统架构。 支付宝 先看看业内最强的支付宝系统,支付宝的支付系统整体架构设计 这个整体架构上并没有与众不同之处。在模块划分上...

重构中的内部准备工作

从SSH单体应用到微服务架构-3

随着系统改进工作的进行,一些架构性的问题也越来越突出。在开发中,一个遗留接口是否要迁移到微服务架构上,哪些接口应该放到同一个项目上,项目应该如何组织,日志、监控等基础性的工作应该怎么统一规划,都需要从架构的层面来进行设计。 确定目标 公司每一年都会有一个明确的战略目标,这个目标最终会被分解到每个业务上去实施。 对于支付业务,我们的目标是: 持续提升支付成功率 支付成功率是支付业务的最高...

重构中的外部准备工作

从SSH单体应用到微服务架构-2

技改在任何时候都是个敏感的事情。大量的问题需要摆平,天时地利人和,缺一不可。 天时 即选择合适时机进行技术改造工作。在时机的选择上,我们经历了三个阶段。 空闲时段 在开发企业应用时,技术改进也是常见的工作。企业应用开发的特点是有忙有闲。在版本发布前都紧锣密鼓进行开发工作;在老版本发布之后,新版本刚刚启动开发时,有相对空闲时间,可以进行技术改进。 而当这一套方法搬到互联网应用开发上时,却...

为什么要重构到微服务

从SSH单体应用到微服务架构-1

修订记录 2016.8.5 初稿; 2017.3.5 为了准备3月份的演讲,重新梳理微服务系列文章,对原文内容作补充,增加康威定律和微服务优势部分。 公司将支付业务从原来所在部门剥离出来,成为一个独立的团队,以应付迅速发展的业务需求。原团队负责支付系统开发的几位同学转到现团队,形成开发班底。此后开始招聘,三个月团队扩充到10多个人。与此同时,公司业务也在快速发展,6月份宣布会员突破...

备付金与自有资金

备付金与自有资金的区别与使用

客户备付金 客户备付金是指支付机构为办理客户委托的支付业务而实际收到的预收代付货币资金。 支付机构接收的客户备付金必须全额缴存至支付机构在备付金银行开立的备付金专用存款账户。 备付金专用存款账户是指支付机构在备付金银行开立的专户存放客户备付金的活期存款账户,包括备付金存管账户、备付金收付账户和备付金汇缴账户。 支付机构的备付金专用存款账户应当与自有资金账户分户管理,不得办理现金支取。...

支付行业词汇表

支付行业词汇表

机构和账户相关 金融机构:是指依法设立的从事金融业务的政策性银行、商业银行、信用合作社、邮政储汇机构、信托投资公司、证券公司、期货经纪公司、保险公司以及国务院反洗钱行政主管部门确定并公布的从事金融业务的其他机构。(中华人民共和国反洗钱法) 支付机构:是指取得《支付业务许可证》,获准办理“预付卡发行与受理”业务的发卡机构和获准办理“预付卡受理”业务的受理机...

Hello 2016

"Hello World, Hello Blog"

“Yeah It’s on. ” 前言 Shamphone 的 Blog 就这么开通了。 跳过废话,直接看技术实现 2016 年,总算找个地方可以记录东西了。 曾经搞过新浪博客,新浪就这么个好东西,被广告糟蹋了。 在技术博客上卖各种女性用品,也是醉了。广告比博客内容还多,不知道新浪博客运营人员是怎么想的。 正文 特别感谢github,以及Hux同学。这个博客是直...