无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。

1.支付能力介绍:

支付宝的支付能力有当面付、手机网站支付转为Native支付、App支付和手机网站支付。线下当面付产品支持条码支付、扫码支付、声波支付,不在本次讨论之列。手机网站转native支付与手机网站支付的主要区别是:如果用户手机安装了支付宝App,手机网站转Native支付方式会跳转到支付宝App中进行订单支付,用户体验和支付成功率均优于手机网站支付方式。除此之外,还能使用手机网站支付没有提供的功能,例如:指纹支付、手环、手表支付、免密支付等。

2.App支付

【适用场景】适用于商家在App应用中集成支付宝支付功能。商家APP调用支付宝提供的SDK调用支付宝客户端内的支付模块,商家APP会跳转到支付宝中完成支付,支付完后跳回到商家APP内,最后展示支付结果。

目前支持手机系统有:iOS(苹果)、Android(安卓)。

这里注意,如果客户端没有支付宝App,那么就调起网页支付。

【接入步骤】创建应用并获取APPID、配置密钥、集成并配置SDK、调用接口。具体见https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.SG4ygV&treeId=193&articleId=105297&docType=1

支付宝的App支付和网站内支付需要首先在蚂蚁金服开发平台签约支付能力。

其中配置密钥比较重要,单独强调:

生成和配置的步骤:

https://doc.open.alipay.com/doc2/detail?treeId=200&articleId=105310&docType=1

配置的地方:

https://open.alipay.com/platform/detailApp.htm?appId=2016050601369602&tab=appSetting

【调用流程】

Android:

https://doc.open.alipay.com/doc2/detail.htm?treeId=204&articleId=105296&docType=1

iOS:

https://doc.open.alipay.com/doc2/detail.htm?treeId=204&articleId=105295&docType=1

第4步:调用支付接口:此消息就是本接口所描述的支付宝客户端SDK提供的支付对象PayTask,将商户签名后的订单信息传进payv2方法唤起支付宝收银台,交易数据格式具体参见请求参数说明。

partner=\"2088121902895429\"&seller_id=\"esstx_cd@163.com\"&out_trade_no=\"158629010\"

&subject=\"Z93\"&body=\"Z93\"&total_fee=\"13800.0\"

¬ify_url=\http://120.27.128.207:8080/cqyh/alipay/payNotify\

&service=\"mobile.securitypay.pay\"

&payment_type=\"1\"&_input_charset=\"utf-8\"&it_b_pay=\"30m\"

&sign=\"NK0f20ZBWc4p7Ab5wUhJvnKeSpGZlHPvPcd8fSVwxTRty%2FqcDFRtrVr3D\"

&sign_type=\"RSA\"
第5步:支付请求:支付宝客户端SDK将会按照商户客户端提供的请求参数发送支付请求。第8步:接口返回支付结果:商户客户端在第4步中调用的支付接口,会返回最终的支付结果(即同步通知),参见客户端同步返回。
第13步:用户在支付宝APP或H5收银台完成支付后,会根据商户在手机网站支付API中传入的前台回跳地址return_url自动跳转回商户页面,同时在URL请求中附带上支付结果参数。同时,支付宝还会根据原始支付API中传入的异步通知地址notify_url,通过POST请求的形式将支付结果作为参数通知到商户系统,详情见支付结果异步通知。

除了正向支付流程外,支付宝也提供交易查询、关闭、退款、退款查询以及对账等配套API。

特别注意:构造交易数据并签名必须在商户服务端完成,商户的应用私钥绝对不能保存在商户APP客户端中,也不能从服务端下发。

同步返回的数据,只是一个简单的结果通知,商户确定该笔交易付款是否成功需要依赖服务端收到支付宝异步通知的结果进行判断。

商户系统接收到通知以后,必须通过验签(验证通知中的sign参数)来确保支付通知是由支付宝发送的。建议使用支付宝提供的SDK来完成,详细验签规则参考异步通知验签。

同步通知验签:

1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号;

2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);

3、校验通知中的seller_id(或者seller_email)是否为out_trade_no这笔单据对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email);

4、验证app_id是否为该商户本身。上述1、2、3、4有任何一个验证不通过,则表明同步校验结果是无效的,只有全部验证通过后,才可以认定买家付款成功。

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.J4q0im&treeId=193&articleId=105302&docType=1

异步通知验签:

1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,

2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),

3、校验通知中的seller_id(或者seller_email)是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email),

4、验证app_id是否为该商户本身。上述1、2、3、4有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.aItv6w&treeId=193&articleId=105301&docType=1

3.手机网站支付

【适用场景】适用于商家在移动端网页应用中集成支付宝支付功能。

商家在网页中调用支付宝提供的网页支付接口调起支付宝客户端内的支付模块,商家网页会跳转到支付宝中完成支付,支付完后跳回到商家网页内,最后展示支付结果。若无法唤起支付宝客户端,则在一定的时间后会自动进入网页支付流程。

【支付流程】

其他的操作类似

【注意事项】

1.网页版发起请求的时候,demo中是使用表单自动提交的方式,这样没问题也可以,但是为了和其他支付方式统一,最好将数据封装成json返回,然后在ajax的回调中再发起支付。如此,可以很方便地处理一些异常情况。

2.另外支付宝网页支付不能再微信环境使用。

3.支付宝App支付和网页支付的异步回调可以使用同一入口。

3.如果加密方式选择的是RSA方式,那么需要在支付宝商户后台配置openssl工具生成的公钥,自己保存私钥,往支付宝传输信息的时候用私钥加密,支付宝后台用公钥解密;获取到支付宝的公钥,支付宝后台用其私钥加密,我们用公钥解密。是两对公私钥。

参考资料:

蚂蚁金服开放平台官方资料

支付宝这种回调比较合理,请求之后返回一个success才不发,否则按照非幂等时间(隔1/2/4/8/16/32等)发起请求,这样可以一定程度上避免客户服务器响应太慢的问题。建行的就比较蛋疼,他不管你返回什么,直接连续发三次,如果这三次不行的话,客户服务器就收不到这个回调了。不管哪种方式,我们都需要验证该订单的状态,否则可能引发逻辑错误。比如订单状态已经到已发货,或者已经办理过充值这种业务了。

支付宝开发流程及注意事项相关推荐

  1. 程序员需求开发流程及注意事项

    建议先关注博主,哈 更多精彩就在公众号:BiggerBoy 需求开发流程及注意事项 企业中,程序员如何开发,流程是什么样的,注意事项是什么. 前言 在这个春风得意马蹄急,金三银四跳槽季的日子里,相信很 ...

  2. linux内核开发入门二(内核KO模块介绍、开发流程以及注意事项)

    linux内核开发入门二(内核KO模块介绍.开发流程以及注意事项) 一.什么是内核模块 内核模块:ko模块(Kernel Object Module)是Linux内核中的可加载模块,它可以动态地向内核 ...

  3. java支付宝开发流程

    不管是支付宝支付,还是微信支付,还是银联支付等,大部分的支付流程都是相似的,学会了其中的思想,那么其他支付方式也就很简单了. 支付宝支付流程: 1.A网站以POST请求方式提交参数给支付宝接口,在支付 ...

  4. 【转载】需求开发流程及注意事项

    原文地址:https://blog.csdn.net/ibigboy/article/details/89173315 前言 在这个春风得意马蹄急,金三银四跳槽季的日子里,相信很多小伙伴都拿到了心仪的 ...

  5. 网页设计、web前端、后台的开发流程和注意事项

    工作2年了,总感觉每次做项目的时候,都是赶时间,赶时间,加班几班,可是最后总结一看,百分之50的时间都浪费在做无用功上面了,甚至因为设计人员的失误,造成了前端和程序大量的返工,休整,加班,造成了开发人 ...

  6. 【APICloud系列|7】开发一个APP完整流程及注意事项

    APP开发流程其实并不复杂(想节约时间可以参考低代码开发相关的平台APICloud.Appcan.千牛云等),但是对于客户来说.一般移动APP开发都离不开UI设计师.前端开发.后端开发.测试专员.产品 ...

  7. ui测试怎么做?依据文档有哪些_微信小程序开发流程有哪些?各个环节注意事项...

    微信小程序开发流程有哪些?各个环节注意事项是什么?微信小程序开发有哪些注意事项,开发流程是怎样的?下面就一起来看看吧. 1.微信小程序开发之注册小程序 在开发小程序之前,首先就是要注册一个小程序.不过 ...

  8. 小程序开发—发布流程及注意事项

    小程序开发-发布流程及注意事项 本文旨在讲解小程序从0到1开发以及开发后发布正式版本所涉及到的所有中间过程.包含前期准备工作.开发到发布的具体流程和需要注意的相关事项. 一.小程序结构图 (一)小程序 ...

  9. JAVA支付宝扫码支付开发流程

    近期工作遇到支付宝扫码支付,经开发研究与3年前相比  API调用与配置更加简单方便,整体开发流程如下(后期会有对应的支付宝APP支付) 登录支付宝开发平台 -->开发接入    链接:https ...

最新文章

  1. java线程条件变量_多线程同步条件变量(转载)
  2. Android架构思考(模块化、多进程)
  3. 漂浮窗口拖动杂谈(续)
  4. axios打包放到服务器上接口地址404_如何把网页文件放到云虚拟主机
  5. 虚线 实现_redis跳跃表实现
  6. ssm java上传图片预览_ssm文件上传_上传图片
  7. STM32 - 定时器基础应用说明 - 03 - Application: timer clocking using external clock-source on ETR timer input
  8. Linux学习-X Server 配置文件解析与设定
  9. 完善你的Laravel异常处理
  10. 利用SCCM 2012 SP1为客户端进行软件批量自动安装
  11. R+python︱XGBoost极端梯度上升以及forecastxgb(预测)+xgboost(回归)双案例解读
  12. linux上数据库导入与导出(mysql)
  13. 关于ISIC数据集如何下载的问题
  14. 【java】蔡勒公式计算星期(switch语句方法和数组方法)
  15. 对打字练的小键人的网站91xjr.com站资源打包,gulp独立分文件夹打包
  16. 在生产环境中使用 Keras、Redis、Flask 和 Apache 进行深度学习
  17. cefsharp启动优化
  18. 蚂蚁区块链的新计划与BAT的新动向 |链捕手
  19. 邮件访问协议!IMAP协议解析
  20. 企业级计算机储存容量,家用NAS与企业级NAS功能大比拼

热门文章

  1. 从谷歌搜获更多~[一些谷歌搜索的提示和技巧]
  2. [ERROR Port-10250]: Port 10250 is in use
  3. 【批处理脚本】-2.4-打开命令start(典型应用:微信多开)
  4. CVE-2018-12613 --- 本地文件包含造成远程代码执行漏洞复现
  5. squid笔记下载_Squid笔记
  6. 离线安装tensorboardx_pytorch安装
  7. 多智能体通信:基于通信的多智能体强化学习研究综述
  8. 潮汕明代皇封御葬古墓受损追踪:当地相关部门介入
  9. 如果删掉微信中一个功能,你的选择是什么
  10. 【C语言编程--水仙花数II】