20191204 支付后端文档

JSAPI支付:公众号接入文档(支付系统对比.pdf 文档)

商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时(公众号),可以调用微信支付完成下单购买的流程。

 

立即支付---->确认支付---->支付成功

调起微信支付控件,用户开始输入支付密码。密码验证通过,支付成功。商户后台得到支付成功的通知。

返回商户页面,显示购买成功。该页面由商户自定义。

微信支付公众号下发支付凭证。

 

(1)在网页通过JavaScript调用getBrandWCPayRequest接口,发起微信支付请求,用户进入支付流程。

(2)用户成功支付点击完成按钮后,商户的前端会收到JavaScript的返回值。商户可直接跳转到支付成功的静态页面进行展示。

(3)商户后台收到来自微信开放平台的支付成功回调通知,标志该笔订单支付成功。

(2)和(3)的触发不保证遵循严格的时序。JS API返回值作为触发商户网页跳转的标志,但商户后台应该只在收到微信后台的支付成功回调通知后,才做真正的支付成功的处理。

 

支付服务生产环境现状

1、单节点部署,没做高可用:生产环境只有一个payment服务,如果此节点出现问题,整个支付业务失败;

2、硬件配置信息: 2核8G,但是当前系统上同时运行了其他服务,暂无法评估支付接口TPS。

3、支付类型单一:现在只有微信支付(优惠券支付,但是缺少优惠券使用场景),缺少支付宝支付,银联支付等;

4、缺少支付对账功能,比如每天凌晨计算上一天收款总金额与收款记录是否一致,不一致则立即进行报警,防止出现盗刷。

5、没有支付管理后台,客服暂无法查询订单以及支付状态。

6、下单已经通过唯一索引做了幂等性校验,防止用户多次重复下单。

7、所有微信weixin.pay.appid,weixin.pay.key全部都在配置中心,尽量减少开发人员的接触,保证数据安全

 

JSAPI支付(公众号支付)

JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付。应用场景有:

  1. ◆ 用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付;
  2. ◆ 用户的好友在朋友圈、聊天窗口等分享商家页面连接,用户点击链接打开商家页面,完成支付;
  3. ◆ 将商户页面转换成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付;

APP支付:APP支付又称移动端支付,是商户通过在移动端应用APP中集成开放SDK调起微信支付模块完成支付的模式。

H5支付:H5支付主要是在手机、ipad等移动设备中通过浏览器来唤起微信支付的支付产品。

 

微信开放平台是商户APP接入微信支付开放接口的申请入口,通过此平台可申请微信APP支付。

 

微信商户平台

微信商户平台是微信支付相关的商户功能集合,包括参数配置、支付数据查询与统计、在线退款、代金券或立减优惠运营等功能。

平台入口:http://pay.weixin.qq.com

 

微信支付系统

微信支付系统是指完成微信支付流程中涉及的API接口、后台业务处理系统、账务系统、回调通知等系统的总称。

 

商户证书:(调用微信支付后台接口时,需要传递当前证书,用户身份凭据)

商户证书是微信提供的二进制文件,商户系统发起与微信支付后台服务器通信请求的时候,作为微信支付后台识别商户真实身份的凭据。

 

签名:商户后台和微信支付后台根据相同的密钥和算法生成一个结果,用于校验双方身份合法性。签名的算法由微信支付制定并公开,常用的签名方式有:MD5、SHA1、SHA256、HMAC等。

 

微信支付商户号,微信支付appId。

下载api证书,api密钥;

微信支付商户平台;

下载最新的文档进行开发;

 

AppSecret是APPID对应的接口密码,用于获取接口调用凭证access_token时使用。先获取接口调用凭证,才能调通接口。

 

交易类型trade_type:JSAPI--JSAPI支付(或小程序支付)、NATIVE--Native支付、APP--app支付,MWEB--H5支付,不同trade_type决定了调起支付的方式,请根据支付产品正确上传。

货币类型:境内商户号仅支持人民币。CNY:人民币。

 

从哪些角度对比两个系统?

 

openid是微信用户在公众号appid下的唯一用户标识(appid不同,则获取到的openid就不同),可用于永久标记一个用户,同时也是微信JSAPI支付的必传参数。

 

微信支付要求商户订单号保持唯一性(建议根据当前系统时间加随机序列来生成订单号)。重新发起一笔支付要使用原订单号,避免重复支付;已支付过或已调用关单、撤销(请见后文的API列表)的订单号不能重新发起支付。

 

1、界面功能(前端、后端管理)

2、业务模块与流程 3、接口详情与接口流程 4、表 5、存在问题;

刚我找的问题太泛了,不具有针对性。需要对比分析两套系统的优缺点。

 

先理解业务才能进行编码。

配置中心修改了配置,重新启动config Server服务;然后重新启动具体的某个业务员服务,重新拉取配置即可。

 

下单业务逻辑

前端调用接口传递参数---->参数校验---->"商品描述为空""商品描述过长"订单号为空,"订单号过长""订单金额不正确""用户终端IP不正确""支付有效时间不正确""openid为空""订单优惠标记过长"。

 

订单服务与支付服务分离。

订单号由订单服务生成。

支付服务:下单时要校验订单好的唯一性,做好接口幂等性。

 

什么是预下单接口流程,支付流程?

什么时候关闭订单? 客服系统关闭订单接口;如果不关闭当前订单,重新下单,调用微信后台,数据不一致的问题。

 

手机端支付,后端没有支付接口;

某笔支付使用了代金券,把代金券信息存储到代金券信息表中。

 

生成订单接口------>下单接口------>支付接口

 

支付状态接口回调,退款状态接口回调

这是两个异步回调接口,主要用于数据落库和保持一致性。需要把地址贴到微信商户开放平台上供微信支付平台回调。

支付结果通知,退管结果通知,商户管理后台,把url配上去。微信直接调用这两个url。

 

支付系统表设计:预支付表,支付状态表,退款表,对账表,代金券表,代金券退款表;

 

表设计:表之间的关联关系。

 

微信商户平台下载证书放在项目的resources目录下的cert文件夹下.

 

将来肯定会做的,所以还是现在学会,做一遍比较好。

 

用户是否安装支付宝App,分为两种情况: 如果没有安装支付宝,就会激活支付宝网页支付收银台,用户需要登录支付宝。

创建应用并获取APPID,并且申请开通开放产品使用权限。

RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。

开发者需要在开放平台开发者中心进行密钥配置,配置完成后可以获取支付宝公钥。ALIPAY_PUBLIC_KEY,配置的详细步骤请参考《配置应用环境》

如何在支付宝进行密钥配置?

支付宝开放平台SDK封装了签名和验签过程,只需配置账号及密钥参数,建议开发者使用。

客户端sdk 与服务器端sdk。

服务端SDK需要商户集成在自己的服务端系统中,用于协助解析并验证客户端同步返回的支付结果和异步通知。

如何集成客户端sdk? 如何集成服务器端sdk?

SDK调用前需要进行初始化

对这个方法的调用进行封装。

AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);

把当前重复调用的地方封装起来。支付宝网关地址不能硬编码。

 

用alipayClient 来调用具体的API 了。alipayClient 只需要初始化一次,后续调用不同的API都可以使用同一个 alipayClient 对象。

只初始化一次,启动的时候初始化,进行对象注入就好了。

 

生产环境,沙箱环境。

App中需要传递的参数return_url;

服务器端调用传递的参数notify_url.;

 

沙箱联调指南

安卓端沙箱环境测试支付调通支付。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值