支付宝接口调用

1.申请商家合作伙伴pid和key(老版MD5生成签名需要的)

2.新版需要公钥换取支付宝公钥,以及pks8私钥(获取方式看文档)(新版RSA或DSA签名需要的)

3.确定调用的接口类型(当面付,app支付,手机网站支付,支付宝收款等)

4.根据文档确定不同接口所需要的基本参数和业务参数(非空和允许为空)

5.排序:讲参数剔除sing和sing_type(有些接口不必剔除sing_type),以及存在空值的参数,让后将参数字段(不是参数值)按照第一个字符键值ascii码递增排序,如果遇到相同参数字段,则根据第二个字符的ascii排序,以此类推

6.拼接:讲排序好的参数按照”参数=参数值”的格式,用&符号讲多个参数连接起来

7.调用签名函数生成签名:老版直接将排序后的字符串末尾加上MD5串(上面的key)进行MD5解析生成签名字符串。新版可以调用支付宝提供的签名(RSA或DSA)函数,讲pks8私钥以及排序后的字符串传参,返回签名字符串。此签名字符串就是sing的值.

8.讲所有参数通过http请求发送给支付宝,支付宝根据参数的notify_url讲结果发送给开发者,开发者根据参数进行验签,讲支付宝返回的参数去掉sing和sing_type然后排序并生成签名字符串(和上面操作一样,根据sing_type用不同方式生成),如果生成的签名与支付宝返回的参数的sing相同,验签成功,做后续开发者逻辑处理。

9.获得支付结果有很多种方式
支付宝的通知机制总共有三种方式:
主动回调
一般情况下,支付宝的接口请求参数列表中会携带参数notify_url(服务器异步通知页面路径),这个参数即是要求支付宝处理完成后主动发起回调通知,把处理的结果信息通知给商户。
这种回调方式是支付宝系统主动发起的,不受当前页面限制,但需要依赖互联网,支持非实时通知。

页面重定向回调
一般情况下,支付宝的接口请求参数列表中会携带参数return_url(页面跳转同步通知页面路径),这个参数即是要求支付宝处理完成后,在用户电脑里浏览器上的当前页面执行页面自动跳转功能,并顺带把处理结果信息通知给商户。
这种回调方式不是支付宝系统主动发起的,而是支付宝程序自动执行页面重定向代码,受用户电脑或手机的影响,并且重定向仅一次。
直接在当前页面输出结果

一般在请求阶段,把请求信息递交给支付宝时,支付宝端是无界面存在的。支付宝仅是把处理的结果直接打印在支付宝的系统页面上(XML格式、JSON格式、文本格式、隐藏控件hidden的HTML格式等)。
这种回调方式可与“主动回调”方式同时存在,但不能与“页面重定向回调”方式并存。

如果支付宝接口是这种回调方式,那么建议在请求阶段使用模拟远程HTTP传输方式实现。这样可以在请求之后马上获取到处理结果,并不需要通过肉眼能看到的界面交互过程。

10.验证是否支付宝发来的通知
该处的验证是指,对支付宝通知回来的参数notify_id合法性验证。这个验证动作实际上是调用了支付宝的另一个接口“通知验证接口(notify_verify)”来完成的。这个接口请求时使用的是模拟远程HTTP提交,回调模式是“直接在当前页面输出结果”,返回的数据是纯文本格式。
请求的完整链接如下:
1https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354&notify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg
得到的处理结果有两种:
成功时:true
不成功时:报对应错误

11.一切正常后进行业务逻辑处理

12.Notify_url和return_url的区别(需修改)
详情:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.ajOQDN&treeId=58&articleId=103541&docType=1

A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通知,对应的参数为return_url,支付宝通知使用GET方式 (通知地址不需要像以前一样去账户内设置,而是由客户在支付的时候通过参数传递给我地址。
2. notify_url为服务器通知,支付宝可以保证99.9999%的通知到达率,前提是您的网络通畅。 3. return_url为网页重定向通知,是由客户的浏览器触发的一个通知(由浏览器向商户网站发起的请求),若客户去网银支付,也会受银行接口影响,由于各种影响因素特别多,所以该种类型的通知支付宝不保证其到达率。 买家付款成功后,会跳到 return_url,由浏览器发起的请求, 有付款成功才会跳转,并且只跳转一次.. notify_url: 服务器后台通知,这个页面是支付宝服务器端自动调用, (支付宝服务器发起的请求),根据支付宝反馈过来的信息修改网站的定单状态,更新完成后需要返回一个success(out)给支付宝.,不能含有任何其它的字符包括html语言. 流程:买家付完款(trade_status=WAIT_SELLER_SEND_GOODS)—>支付宝通知 notify_url—>如果反馈给支付宝的是success(表示成功,这个状态下不再反馈,如果不是继续通知,一般第一次发送和第二次发送的时间间隔是3分钟)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值