您的位置:首页 > 编程语言 > Java开发

java在线支付---02_分析易宝支付的工作流程

2013-06-02 23:53 399 查看
2013/5/30

02_分析易宝支付的工作流程

Java技术qq交流群:JavaDream:251572072

------------------------------------------------

1.易宝支付的接入规范:

  交易过程的加密:MDF-hmac加密

  DigestUtil加密类:

  使用方法:StringBuffer sValue = new StringBuffer();

  sValue.append("lidewei");

  sValue.append("08129010");

  String hmacMD5 = DigestUtil.hmacSign(sValue.toString(),"123456");

  加密后生成一个32位的加密后的字符串.

  第一个参数为加密的原文,第二个参数为密钥.

  密钥:密钥是企业和易宝公司都知道的.

  a.这里首先企业通过加密类对元数据加密,然后发给易宝,那么易宝也会对

    这段数据进行加密,加密之后会拿着加密后生成的字串和企业发送来的

    字串进行对比,如果一样的话那么说明信息没有被串改过,注意双方生成

    加密后元数据的时候,用的相同的密钥所以生成的加密后数据也应该是一

    至的.这样就可以验证元数据是否被改过.

  -------------------------------------

  b.支付流程:

     1.通过http请求,向易宝支付的网关发送请求,请求地址:

       https://www.yeepay.com/app-merchant-proxy/node

       请求可以是get或者是post,一般易宝要求页面要使用GBK/GB2312编码

     2.具体支付流程:

       <form name="yeepay"

        action = "https://www.yeepay.com/app-merchant-proxy/node" method="post">

   这里省略了一些请求参数

   <input type="hidden" name="p8_url" value="http://wwww.credream.com/payment/response">

   <!--MD5-hmac验证码-->

    <input type="hidden" name="hmac" value="2a8de8147356d97c364d1874410528dd">

    </form>

    3.对交易流程的解析:

     (1).首先当企业需要交易的时候,会把自己需要发送给易宝支付的数据进行加密,

         value="2a8de8147356d97c364d1874410528dd"这是加密后的数据,

  http://wwww.credream.com/payment/response这是加密之前的元数据,

     (2).发给易宝的时候,需要把加密前和加密后的数据都发送给易宝.

         当易宝接收到企业的加密前的数据http://wwww.credream.com/payment/response

  时,会对数据进行加密:得到加密后的数据:2a8de8147356d97c364d1874410528dd

  然后会拿易宝进行加密后的数据,和企业向易宝发来的加密后的数据进行比对,如果

  相同的话,说明数据没有被串改过.

     (3).注意:企业和易宝都是用相同的密钥进行加密的.

    4.当验证成功的时候,易宝会把连接重定向到银行进行支付,当支付完成后,银行会

      返回到易宝支付,然后,易宝支付会把支付的结果返回给企业,企业接收到结果后

      会进行处理.

-----------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: