############### 通过这个支付宝支付我能学到什么? ################
# 支付宝支付 # 从中我能学到什么? # 1,支付宝支付的逻辑 # 2,如何使用支付宝来接入项目,能够实现支付宝的支付 # 3,看看支付宝接口的规范,为自己写接口做参考,
############### 支付宝支付申请 ################
# 去支付宝申请 # 这是支付宝的开放平台:https://open.alipay.com/platform/home.htm # 正式环境: # 在开发者中心,点击网络&移动应用,支付接入,接入的时候需要创建一个应用,然后会给你一个appid,这是一个唯一的标识,现在我们没有资质,是需要公司的营业执照的, # 沙箱环境: # 进入沙箱环境,开发者中心中有一个研发服务,有一个沙箱,这是对支付宝真实环境的模拟,这是一个开发模拟的环境,这样你就可以进行一个程序的开发了, # 沙箱环境重要的内容: # 1,appid:这是一个唯一的标识, # 2,支付网关:https://openapi.alipaydev.com/gateway.do,通过这个地址就是转账了,dev是沙箱环境,去掉之后就是正式的了, # 3,秘钥设置: # 4,沙箱账号:包括商家的和买家的,
############### 支付宝支付流程 ################
# 对接支付宝的流程: # 需要看看支付宝开发者文档,https://docs.open.alipay.com/270,这是电脑的网站支付,文档中有一个使用的流程,
# 1,用户点击去付款, # 点击之后,访问django后端,然后后台有处理函数,会去调用支付宝支付的接口(alipay.trade.page.pay) # 调接口需要传什么参数:订单id,总金额,订单标题,这三个必须要传的, # 还有两个不是必传的,return_url,notify_url,这两个是django网站的地址,
# 2,调了支付接口之后,支付宝会返回什么? # 会返回一个付款界面,是一个二维码支付页面,我们需要引导用户到这个支付页面,然后这个登录支付的过程就是用户和支付宝之间的交互了, # 但是之后成功之后我们不知道,怎么办?
# 3,支付完成之后,支付宝会返回什么? # 我们需要在调支付接口的如果有 return_url,支付宝支付完成之后,马上会访问return_url这个地址,并且传递参数,告诉网站支付的结果, # 我们把这个叫做同步访问, # notify_url,这个是异步访问,也就是支付完成之后,不会马上访问,有一定的时间,目的都是告诉支付结果,只是一个同步一个异步, # 还是以异步为准,因为同步的可能不准, # 但是我们现在即使提供了这个地址,因为我们的地址不是公网的,所以支付宝也不能访问这个地址,怎么获取支付的结果? # 我们的网站可以访问支付宝的接口(alipay.trade.query),这是一个交易查询的接口,可以查询交易的结果,会返回用户支付的结果,
############### 使用sdk和配置秘钥 ################
# 使用sdk和配置秘钥 # 原生的接口需要我们自己调,自己传递参数,生成预付订单需要使用签名,签名的生成比较麻烦容易出错,所以提供了一个sdk,简化开发流程, # 怎么使用这个sdk? # 现在已经有了官方的python语言的sdk了 ################################# # 设置秘钥 # 请求之前需要一个参数的传递,这个传递的过程需要一个加密,这就是涉及到了公钥和私钥, # 私钥是为了加密,公钥是为了解密, # django网站发给支付宝平台的时候,需要通过自己的私钥加密数据,然后支付宝通过公钥解密,所以需要把自己的公钥告诉支付宝, # 支付宝给django回消息的时候,需要用支付宝的私钥加密,发给网站,然后网站需要支付宝的公钥进行解密, # 支付宝提供了生成公钥和私钥的工具,可以下载下来,然后生成, # 生成自己的公钥和私钥之后,要把自己的公钥放到支付宝,然后就会生成一个支付宝的公钥, # 然后要在项目中保存支付宝的公钥,和app的私钥
############### 支付逻辑 ################
# 点击支付按钮的逻辑 # 后端: # 1,获取到前端传过来的价格,购买的商品, # 2,生成订单, # 3,使用sdk构建我们需要的参数, # 3.1,实例化一个alipay的对象,传递需要的参数, # 3.2,构建我们的参数 # 4,拼接url,重定向到支付宝,请求支付宝的支付接口,
# 5,可以直接把这个url后端进行重定向,也可以给到前端,然后前端去处理,
# 前端跳转到支付页面之后,
# 登陆支付宝支付, # 支付成功之后,支付宝会自动调用notify_url,告诉我们是否成功, # 我们要处理这个post请求, # 后端: # 1,验证数据 # 2,如果支付成功,修改订单状态,
# 3,返回前端支付结果,
# 4,然后前端会返回给客户,失败返回失败的页面,成功了返回成功的页面,
############### 结束线 ################