常用的第三方支付和聚合支付平台介绍
什么是第三方支付
- 第三方支付是指具备一定实力和信誉保障的独立机构,采用与各大银行签约的方式,通过与银行支付结算系统接口对接而促成交易双方进行交易的网络支付模式
- 通俗的例子:
- 支付宝,微信支付,百度钱包,PayPal(主要是欧美国家)
- 拉卡拉(中国最大线下便民金融服务提供商)
优点
- 支付平台降低了政府、企业、事业单位直连银行的成本,满足了企业专注发展在线业务的收付要求。
- 使用方便。对支付者而言,他所面对的是友好的界面,不必考虑背后复杂的技术操作过程
缺点
- 风险问题,在电子支付流程中,资金都会在第三方支付服务商处滞留即出现所谓的资金沉淀,如缺乏有效的流动性管理,则可能存在资金安全和支付的风险
- 电子支付经营资格的认知、保护和发展问题
什么是聚合支付也叫第四方支付
- 聚合支付是相对之前的第三方支付而言的,作为对第三方支付平台服务的拓展,第三方支付是介于银行和商户之间的,而聚合支付是介于第三方支付和商户之间
- 出现的场景
- 一堆第三方支付出现,并通过大量的钱补贴线上商家使用它们的支付,导致商户收银台堆满各种,POS机器,扫码设备,商户还需要去各家支付公司申请账号,结算等
- 聚合支付产品,其实聚合的是一种支付能力(支付宝支付、微信支付、百度钱包、ApplePay……),将这些收款能力聚合在一起,统一打包提供给电商网站或一些线下商家
- 解决的问题
- 聚合支付公司提供的二维码,支付多种方式支付,不再是一种,各个公司的竞争,就是支付渠道和方式的支持
蚂蚁金服开放平台介绍和支付宝支付应用申请
蚂蚁金服开放平台
- 地址:https://openhome.alipay.com/docCenter/docCenter.htm
- 介绍:https://opendocs.alipay.com/open/200/105304
- 支付宝扫码登录即可
网页移动应用开发指南
- 地址:https://opendocs.alipay.com/open/200
- 申请应用:https://openhome.alipay.com/platform/developerIndex.htm
- 核心是获取APPID
支付宝沙箱环境介绍和应用权限申请
- 支付宝沙箱环境介绍
蚂蚁沙箱环境 (Beta) 是协助开发者进行接口功能开发及主要功能联调的辅助环境
在开发者应用上线审核前,开发者可以根据自身需求,先在沙箱环境中了解、组合和调试各种开放接口,进行开发调试工作,从而帮助开发者在应用上线审核完成后,能更快速、更顺利的完成线上调试和验收
- 文档地址:https://opendocs.alipay.com/open/200/105311
沙箱地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info
支付接入:有时不稳定,或者一直报错等等,一般就是支付宝沙箱环境问题
Beta 测试阶段每周日中午 12 点至每周一中午 12 点为维护时间,在此时间内沙箱环境部分功能可能不可用,敬请谅解。
- APPID: 2016092000555936
买家信息
买家账号mqvsso5323@sandbox.com
登录密码111111
支付密码111111
用户名称沙箱环境
证件类型身份证(IDENTITY_CARD)
证件号码285405199408130839
- 商家信息
商家账号bqnism8671@sandbox.com
商户UID2088102176491744
登录密码111111
密码学的那些事情-非对称加密和对称加密介绍
- 对称加密
优点:操作比较简单,加密速度快,秘钥简单
缺点:秘钥上面,一旦被窃取,信息会暴露,安全性不高
场景:消息发送方需要加密大量数据时使用
常见的算法:
DES: 全称:Data Encryption Standard,现已被破解
3DES:全称: Triple Data Encryption Algorithm, 暂时未被破解
解释: 3DES 是在 DES 基础算法上的改良,该算法可向下兼容 DES 加密算法,但计算性能不高,暂时还未被破解
AES: 全称:Advanced Encryption Standard,暂未被破解
- 非对称加密
注意:非对称加密具有双向性,即公钥和私钥中的任一个均可用作加密,此时另一个则用作解密
解释:加密与解密的过程不是对称的,不是用的同一个秘钥,一把是公钥,一把是私钥,在加密的时候,用公钥去加密,接收方再用对应的私钥去解密
优点:安全性更高,公钥是公开的,秘钥是自己保存的,不需要将私钥给别人。
缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密
场景: 数字签名与验证
常见的算法:RSA,DSA,ECC等,ECC也是比特币底层用的比较多的算法
应用对接支付宝里面的非对称加密流程梳理
应用对接支付宝加密流程
手机网站支付文档地址:
项目依赖包添加和样例代码
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.10.218.ALL</version>
</dependency>
支付宝开发助手简介和非对称加密钥生成工具下载
支付宝开发助手简介
- 支付宝开放平台开发助手即密钥生成工具,用于对应用的客户端服务端之间的交互进行加密保护。
- 工具主要功能有生成密钥、签名、验签、格式转换、密钥匹配、智能反馈、开放社区
- https://opendocs.alipay.com/open/291/introduce
秘钥生成工具下载
代码新建配置类
手机网站支付宝支付样例代码+单例设计模式应用
- 编写样例代码
private volatile static AlipayClient instance = null;
/**
* 单例模式获取, 双重锁校验
*
* @return
*/
public static AlipayClient getInstance() {
if (instance == null) {
synchronized (AlipayConfig.class) {
if (instance == null) {
instance = new DefaultAlipayClient(PAY_GATEWAY, APPID, APP_PRI_KEY, FORMAT, CHARSET, ALIPAY_PUB_KEY, SIGN_TYPE);
}
}
}
return instance;
}
- 测试参数配置使用
//商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
String no = UUID.randomUUID().toString();
log.info("订单号:{}",no);
content.put("out_trade_no", no);
content.put("product_code", "FAST_INSTANT_TRADE_PAY");
//订单总金额,单位为元,精确到小数点后两位
content.put("total_amount", String.valueOf("111.99"));
//商品标题/交易标题/订单标题/订单关键字等。 注意:不可使用特殊字符,如 /,=,& 等。
content.put("subject", "杯子");
//商品描述,可空
content.put("body", "好的杯子");
// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
content.put("timeout_express", "5m");
沙箱环境常见的坑和手机网站支付宝支付样例问题修复
简介:手机网站支付宝支付样例代码问题修改
- Bug修改
- 沙箱环境的坑
- 如果支付页面出现 “支付存在钓鱼风险” ,清空浏览器缓存,只开一个支付宝支付窗口
- 每周日中午12点至每周一中午12点沙箱环境进行维护,期间可能出现不可用