西米支付:支付宝/微信支付/银联支付通道的接入介绍
本文以电脑网站支付为例,着重对第三方支付通道的接入进行了分析,包括支付宝支付接入、微信支付接入及银联支付接入。
1、支付宝支付接入
支付宝支付能力主要有当面付、刷脸付、App支付、手机网站支付、电脑网站支付和花呗分期等,本文采用电脑网站支付实现聚合支付系统的支付宝支付功能。
要在应用中开通电脑网站支付能力首先需要登录支付宝开放平台在开发者中心创建应用并且申请开通相关开放产品使用权限,为了保证交易双方的身份和数据安全,开发者在调用接口前需要配置双方密钥对交易数据进行双方校验。如下图1所示为支付宝开发接入流程简单示意图。
图1 支付宝支付开发接入流程
支付宝开发平台支持RSA(SHAlWithRSA)和RSA2(SHA256WithRSA)两种签名算法,RSA2签名算法比RSA有更强的安全能力。签名的过程即生成签名方将传送的消息用私钥加密的过程,验签则是指验签方使用公钥对消息进行验证的过程。签名和验签的具体内容如下:
生成签名方:首先对参数放入一个字符串数组signFields,将参数和值保存在一个对象或Map里,通过JSONObject将其变更为JSON对象,接着是签名原文的生成,在生成的过程中可以通过Java的Arrays.sort实现参数按照字典的次序进行排序,继而通过RSA的私钥对其实施签名。
验签方:与签名构建方一样先生成签名原文,其次通过RSA的公钥生成签名方传入的签名,把签名原文对生成签名方传入的签名进行验证,验证结果为true则表示验证成功。
应用创建、应用配置以及SDK集成并配置完成后就可以调用具体的接口了。
如下图2所示为支付宝电脑网站支付的接口调用时序图。
图2 支付宝电脑网站支付接口调用时序图
其中returnUrl表示同步回调即前台通知:第三方支付系统以浏览器重定向的形式将支付结果返回给商户端。notifyUrl表示异步通知即后台通知:第三方支付系统使用类似于HttpClient技术调用商户接口进行通知。前台通知的作用主要是提示给用户支付的状态,异步通知将支付结果安全的推送给商户端从而进行修改对应的订单状态,支付是否成功以异步通知为准。
2、微信支付接入
微信支付主要支持付款码支付、Native支付、JSAPI支付、APP支付、H5支付和小程序支付等,本文采用微信Native支付实现聚合支付系统的微信支付功能。
如下图3所示为微信支付开发接入流程简单示意图。
图3 微信支付开发接入流程
其中,微信Native支付可分为两种模式,商户可根据支付场景选择相应的支付模式。本文采用的是微信Native支付中的模式二,模式二与模式一相比流程更为简单,不依赖设置的回调支付URL。为了保证交易双方数据的安全性,需要对发送的数据进行签名,签名算法可以采用MD5算法或者HMAC-SHA256算法,请求和接收数据均需要校验签名,具体的签名方法如下:
第一步,用集合M表示全部发送或者接收到的内容,按参数名ASCII码从小到大以字典序将集合M内非空参数值的参数进行排序,根据URL键值对的格式(即 keyl=valuel&key2=value2...)拼接成字符串 stringA。
第二步,将key拼接至stringA结尾生成字符串stringSignTemp,同时使用MD5算法或HMAC-SHA256算法实施对stringSignTemp的计算,接着把运算结果中所有字符变更成大写,从而得到sign值sign Value。
要接入微信支付开发者还需要集成服务端SDK,应用创建、支付申请以及SDK集成并配置完成后就可以调用具体的接口了。如下图4所示为微信Native支付的支付接口调用时序图。
图4 微信Native支付接口调用时序图
3、银联支付接入
银联支付主要支持在线网关支付、无跳转支付、手机网页支付以及企业网银支付等,本文采用的支付方式是银联全渠道支付的在线网关支付。如下图5所示为银联支付开发接入流程简单示意图。
图5 银联支付开发接入流程
要为应用开通银联在线网关支付能力,开发者首先需要登陆到银联官网进行注册登陆并申请入网,然后申请获取签名证书、验签证书以及敏感信息加密证书等相关证书,签名证书和验签证书的使用方法如下:
签名证书:首先通过key=value的方式根据名称来将报文里签名域(signature)以外的全部数据元排序,并且使用“&”将其拼接成待签名串。此外,使用SHA-256算法对待签名串进行摘要运算,通过银联颁发的签名证书中的私钥以及SHA-256签名算法对摘要进行签名运算。
然后对签名串进行Base64编码操作并放入签名表单域中,而后利用HTTP Post的传输形式把签名表单域连同其他表单域一块传输至银联支付平台。
验签证书:首先通过key=value的方法将报文中签名域(signature)以外的全部数据元根据名称实现升序排序,并且使用“&”将其拼接成待签名串。除此之外,还需要使用SHA-256算法对待签名串执行摘要运算,然后还需要通过在银联申请的验签证书里的公钥对摘要以及报文中的签名信息执行签名验证运算。
要接入银联在线网关支付还需要在项目中集成并配置银联SDK,应用创建、入网申请、证书获取以及SDK集成并配置完成后就可以调用具体的接口了。如下图6所示为银联网关支付的支付接口调用时序图。
图6 银联在线网关支付接口调用时序图
西米支付:支付宝/微信支付/银联支付通道的接入介绍相关推荐
- 银联支付java代码实现_[VIP源码]【S008】Java实现支付宝、微信、银联支付项目实例项目源码 百度云 网盘...
java源码项目名称:Java实现支付宝.微信.银联支付项目实例项目源码 支付项目源码& X3 U' W# h0 z# K 百度网盘下载链接: ( y! x% n" V9 F9 s ...
- ios 支付宝、微信、银联支付集成
一 .支付宝集成 支付宝官方集成文档 1.下载支付宝官方demo,将AlipaySDK.bundle.AlipaySDK.framework两个框架导入到项目中,如下图: 2.选择工程中 Build ...
- 微信支付宝服务器分布,支付宝微信扫码支付中间件「第二届立创商城电子制作节30强作品」...
原标题:支付宝微信扫码支付中间件「第二届立创商城电子制作节30强作品」 本作品为第二届立创商城电子制作节30强入围作品,作者立创社区ID:云逸Baby:转载请注明出处,未经允许不得用作商业用途.作品原 ...
- PHP开发支付宝微信个人免签支付接口实例
2019独角兽企业重金招聘Python工程师标准>>> 这是一个PHP开发支付宝微信个人免签支付接口实例,支付宝微信即时到帐接口,使用原生支付宝即时到帐接口修改而来,即可实现多接口收 ...
- 四方支付OEM|个人免签跳转支付|支付宝个人跳转支付|微信个人跳转支付|自动回调跳转
四方支付OEM|个人免签跳转支付|支付宝个人跳转支付|微信个人跳转支付|自动回调跳转 本系统为四方支付系统,可对接支付宝微信通道,本系统亮点,可实现个人微信和个人支付宝收款自动跳转支付.
- 微信二维码支付支付宝二维码支付(主扫模式)开发指南
微信二维码支付 熟悉微信支付全家桶的童鞋应该都清楚,微信支付是没有提供PC网关支付的,那么传统的网站需要怎么接入微信支付产品呢? 我们可以选择微信支付中的Native支付产品,官方介绍: Native ...
- php验证是否是微信支付,利用thinkphp判断微信中的支付还是微信扫码支付还是手...
进行判断,根不同的客户端,显示不同的内容,如果不是手机,则只显示扫码微信支付,如果是微信公众号中,则只显示公众号支付 阿里西西web开发网为大家整理了这篇利用thinkphp判断微信中的支付还是微信扫 ...
- java对接支付宝微信银联_经典设计模式之策略模式【如何重构聚合支付平台,对接【支付宝,微信,银联支付】】(示例代码)...
写在前面:设计模式源于生活,而又高于生活! 为什么要使用设计模式重构代码 使用设计模式可以重构整体架构代码.提高代码复用性.扩展性.减少代码冗余问题. Java高级工程师装逼的技能! 什么是策略模式 ...
- Android-移动支付 支付宝 微信 银联
前言 这里开篇讲解一系列的Android相关的移动支付.移动支付也称为手机支付,用户使用移动的设备,完成对所购买商品或者服务的支付功能.包括远程支付(网上支付.短信支付),近场支付(刷卡.滴卡.pos ...
最新文章
- python使用fpdf创建pdf并写入hello world
- php关于apache配置,关于PHP和apache的配置
- [NOIP2003] 提高组 洛谷P1041 传染病控制
- 和老师们合作,注定了是打工的(转)
- 中国税负68%,世界排名12
- Ubuntu 18.04 网易云音乐通过修改DPI 放大字体的方法
- 如何快捷地下载知乎中的视频
- 如何避免拼多多售后?拼多多售后有哪些规则?
- 浏览器内核之渲染基础
- conenct的用法(2种方法)
- Groovy Script 获取当前时间函数
- 如何截取视频片段 批量截取片段的方法
- 非理工科编程零基础文科生秒懂python学习笔记:pandas库数据表格创建和运算基础有哪些?
- Arista教你如何讨容器、白盒基础架构数据中心玩家的欢心
- 【实操】如何安装及查看云监控
- Java毕设项目-商城管理系统-基于J2EE/SSM化妆品商城系统的设计与实现
- Linux主机之间配置免密登录
- 首款windows 8 平板使用心得
- 软件开发者的精力管理(一)
- Python 程序设计快速入门简易教程