支付宝的支付流程

来源:互联网 发布:unity3d 动态加载 编辑:程序博客网 时间:2024/06/10 09:03

希望大家能够感受的我的辛苦  哈哈哈  多多关照 【多提意见,欢迎点评】互相学习!!

  支付宝的支付流程: 

单刀直入  最直接从服务器返回给客户端的一个唯一标示: 订单号开始,首先呢 我们的app中一定已经加载了支付宝的SDK了,在SDK中可以帮我门来调取支付宝 以及 相应的参数加密的生成。

那么他帮我们把什么加密了呢?!三个重要的数据【商户的PID,商户收款账号,商户的私钥 pkcs8格式】(既然写到了私钥那就来扩展一下!这种加密类型是RSA类型   是在1977年的时候由三个小伙子提出来的 并且在1987年的时候发布的。它是一种非对称密码算法。所谓非对成型,就是指该算法需要一对密钥 使用其中一个用来加密而使用另外一个密钥来解密。看得出 商户的私钥是用来加密的  而同时存在的是商户的公钥是用来解密的【不知道这么解释对不对吐舌头】)。

后在SDK的支付方法中,我们可以用订单信息工具生成一个订单信息,这里边有三个参数: 一个是商品名,一个是商品详情,另一个是商品价格。还有一个是需要从App的服务器上得到的一个唯一的订单编号,而其他的都属于固定值【例如:签约合作者的身份ID,签约卖家支付宝账号,服务器异步通知页面路径,服务器接口名称,支付类型,参数编码,设置未付款交易的超时时间,支付成功后页面跳转到商户指定页面的路径,调用银行卡支付需要配置参数,签名】

接下来就是对刚刚生成的String进行签名【也就是加密】:使用的是签名工具 参数有刚刚得到商品信息的String 和 商户的私钥 来进行签名。那么常用的加密是128位的 厉害的大牛在自己写的加密算法中用的是256位的。在加密的工具中会看到一个Base64,他是用来将客户端要发向服务端的内容进行转码,转成ask码在发送给服务器,后服务器也用ask码进行解析。这样做是应为有些时候,当客户端向服务端发送String的时候会在服务器端出现乱码,而是用了转码后就不会再出现了。【还有一种加密类型 是MD5,他是非可逆的加密模式,解密就只能使用碰撞来进行。】

把加密好的字符串设置URL的编码 “utf-8”,接着我们就得到了一个完整的符合支付宝参数规范的订单详情信息,其包括:订单信息,加密签名,加密类别。

接着就是构造PayTask的对象,异步调用支付宝接口获取支付结果。说白了就是异步调用支付宝的SDK。微笑{在支付流程结束之前还有一个重点}

在支付之前会用App服务器生成一些列相应的信息,例如:商品交易信息,签名,签名类型。服务器会给App一个接口进行调用并生成。这样对于比较重要的数据【商户的PID,商户的收款账号,商户的私钥】在安全方面有所提高,除了安全并很方便的可以切换对公账号【如有需要的话!】。实际上就是一些重要的逻辑,例如签名逻辑需要在放在服务端,切勿将私钥放在代码中!!

感谢大家,多提意见!!!!

0 0
原创粉丝点击