支付宝网站即时到账支付流程(沙箱)

时间:2024-04-08 09:43:07

这篇文章不贴代码,很多文章贴出代码也看不懂(我的感受)。主要讲讲支付的流程。

对签名不太理解的朋友,建议先看这篇文章https://blog.csdn.net/yt_php/article/details/80522303

不然很难往下进行。

支付宝网站即时到账支付流程(沙箱)

支付宝网站即时到账支付流程(沙箱)

支付宝网站即时到账支付流程(沙箱)

 

开发中需要的配置:(对应上图)

RETURNURL      //同步通知地址  return回调

NOTIFYURL       //异步通知地址  notify通知

APPID =            // 应用ID           app应用

PRIKEY =          //商户私钥         private私有 key钥
ALIPUBKEY =   //支付宝公钥      ali阿里 pub公共 key钥

PAYWAY =      //支付网关          pay支付 way路径

步骤:

引导用户到结算页面

支付宝网站即时到账支付流程(沙箱)

->买家点击结算->商家服务器:

(1)整合业务参数,商户订单号、支付金额等。

(1)组装请求参数:包括应用id,告诉支付宝我们是哪个商家,支付宝好读取上图我们的配置,主要是读取我们上传的公钥,用来验证我们的签名。包括同异步地址,告诉支付宝支付成功后通知我们的服务器地址。包括业务参数。

(2)生成签名:用原参数+我们的私钥,生成签名(字符串)。

(3)把签名作为一个参数添加进去 'sign'=>123rgroifjwoe

(4)请求支付网关:https://openapi.alipay.com/gateway.do?请求参数=...&sign=...

->转到支付宝支付页面(和我们服务器无关):

支付宝网站即时到账支付流程(沙箱)

->买家确认付款->支付宝后台->收到支付请求:

(1)读取参数中应用id对应的配置信息,找到我们上传的公钥。

(2)用请求参数+上传的公钥,生成签名,与我们发送的签名,作对比,相等说明数据正确完整。

(3)根据我们的业务参数等,对商家和买家发起交易。

->交易成功,同步回调(给用户看支付结果这里不做介绍)、异步回调(商家服务器<-->支付宝之间一些数据验证)

异步回调notify.php:

支付宝返回的数据格式,通知参数+签名+通知id+支付状态

1/验证签名:商家用 除了签名的其他参数(通知参数+通知id+支付状态)+支付宝公钥 生成签名,与支付宝发送过来的签名作对比,如果相等说明数据完整准确。

2/验证是否来自支付宝的通知:同时发送过来一个通知id,防止请求被拦截,返回伪造的异步回调,商家用获得的 通知id 发送到支付宝。请求url为'https://mapi.alipay.com/gateway.do?service=notify_verify&partner=PID '&notify_id='通知id,返回true,则验证成功。

3/查看支付状态,'trade_status' == 'TRADE_SUCCESS' 交易状态:支付成功。或者  'trade_status' == 'TRADE_FINISHED'交易状态:交易完成。则完成支付。

4/修改数据库操作。

5/echo 'success' 支付宝接收到我们确认成功的字符串,交易结束,如果支付宝收不到确认字符串,将重复发送请求,直到有响应为止。

end;