“支付又称付出、付给,多指付款,是发生在购买者和销售者之间的金融交换,是社会经济活动所引起的货币债权转移的过程。支付包括交易、清算和结算。”
从上述定义可以看出,一个完整的支付流程是由三部分组成的,分别是交易、清算和结算。
大多数人眼中的支付其实就是交易,可以看成是狭义的支付。比如我们用微信扫码付了款,我们会认为这是支付。
确实,对于用户来说,我已经付钱了,这笔交易便完成了,所以笔者认为,我们也可以把这个交易动作当成是支付,问题不大。
但如果你是支付行业或者与支付行业有关联的从业者,仅仅认识到狭义的支付,肯定是不够的,我们还需要进一步了解支付背后的清算与结算。
这就涉及到两个新的概念,信息流与资金流。
在一个完整的支付过程中,交易动作或者说是支付动作,代表的就是信息流。而清算则代表资金流。
清算其实是两个动作,先是清分,然后结算。
通俗来说,清分就是在用户完成支付动作后,清楚的算出谁付谁多少钱,谁欠谁多少钱,最终得出谁该付谁多少钱的。
而结算就是根据清分的结果,进行执行,并发生资金的实际划拨。
支付渠道
支付渠道是钱走的路,即资金转移的通道。
从第三方支付公司的角度出发,支付渠道有网联、银联、直连银行、或者其他第三方支付等渠道。
从支付平台类电子商务公司的角度出发,支付渠道有第三方支付平台、银联、直联银行。例如:微信、支付宝、苏宁支付对于电商平台来说,都是可供选择的支付渠道。
从银行类平台(银行、银联、网联)的角度出发,支付渠道有人行的大小额系统、超级网银系统。
支付路由
有句话说“条条大路通罗马”,理论上没错的,但是每条路的通勤成本可能都不一样的,支付路由的作用就是根据各种因素的综合考虑,整合并提供最优的支付渠道。它考虑的因为包括但不限于支付渠道的稳定性、费率、限额、卡类型、卡银行。
支付
狭义上,支付可以认为是用户通过银行类平台或者第三方/四方支付平台,使用银行卡进行付款的过程。
代付
即付费企业在提供收款人(企业或个人)相关账户信息以及对应款项后,完成向目标账户划款的业务模式,一般用于余额提现、交易结算等场景。
清算
清算,包括清分与结算。
清分——
指对交易日志中记录的成功交易,逐笔计算交易本金及交易费用(手续费、分润等),然后按清算对象汇总轧差形成应收或应付金额。简言之,就是搞清楚今天应该向谁要多少钱?应该给谁多少钱?
结算——
从商户与收单机构(第三方支付平台或银行)的角度出发,结算即交易完成后,收单机构根据清算结果将资金划入卖家账户的过程。这一过程的背后又依赖着银行与银行之前的结算、银行与收单机构之间的结算。
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
我遇到了这个奇怪的错误.../Users/gideon/Documents/ca_ruby/rubytactoe/lib/player.rb:13:in`gets':Isadirectory-spec(Errno::EISDIR)player_spec.rb:require_relative'../spec_helper'#theuniverseisvastandinfinite...itcontainsagame....butnoplayersdescribe"tictactoegame"docontext"theplayerclass"doit"musthaveahumanplay
我需要使用ActiveMerchant库在我们的一个Rails应用程序中设置支付解决方案。尽管这个问题非常主观,但人们对主要网关(BrainTree、Authorize.net等)的体验如何?它必须:处理定期付款。有能力记入个人帐户。能够取消付款。有办法存储用户的付款详细信息(例如Authotize.netsCIM)。干杯 最佳答案 ActiveMerchant很棒,但在过去一年左右的时间里,我在使用它时发现了一些问题。首先,虽然某些网关可能会得到“支持”——但并非所有功能都包含在内。查看功能矩阵以确保完全支持您选择的网关-http
我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende
我使用raise(ConfigurationError.new(msg))引发错误我试着用rspec测试一下:expect{Base.configuration.username}.toraise_error(ConfigurationError,message)但这行不通。我该如何测试呢?目标是匹配message。 最佳答案 您可以使用正则表达式匹配错误消息:it{expect{Foo.bar}.toraise_error(NoMethodError,/private/)}这将检查NoMethodError是否由privateme
我最近一直在查看一些gem的源代码。我经常看到的一个习惯用法是使用嵌套模块,其中包含连接到版本字符串中的版本常量,即围绕此类事物的变体:moduleChunkyBaconmoduleVersionMAJOR=0MINOR=6TINY=2endVERSION=[Version::MAJOR,Version::MINOR,Version::TINY].compact*'.'end以这种方式存储库版本信息有什么好处(如果有的话)?为什么不这样做:moduleChunkyBaconVERSION='0.6.2'.freezeend 最佳答案
如何使用如下两个数组构建一个数组:名称=[a,b,c]how_many_of_each[3,5,2]得到my_array=[a,a,a,b,b,b,b,b,c,c] 最佳答案 使用zip、flat_map和数组乘法:irb(main):001:0>value=[:a,:b,:c]=>[:a,:b,:c]irb(main):002:0>times=[3,5,2]=>[3,5,2]irb(main):003:0>value.zip(times).flat_map{|v,t|[v]*t}=>[:a,:a,:a,:b,:b,:b,:b,:b
如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack