zoukankan      html  css  js  c++  java
  • 怎么让自己的java系统使用支付接口

      昨天花了好久的时间学习了支付接口的教,我看了前7集,就够用了,大家上网搜索一下传智播客在线支付还不错。

     1.一开始有一个form表单

     2.这个表单是他帮你写好的,有很多银行,银行的name都是特定的

     3.这个表单要提交,教程中使用的是servlet,我使用的是struts2,原理其实也差不多,就是跳转之后要处理事务,servlet处理的功能跟struts中的dao+action是差不多的

     4.提交之后,要定义一些属性,有一些属性如果你的表单是有上传上来的,那就使用一些手段去获取,如果没有赋值的你就要自己给他赋值。

     5.他有一个加密类,你在给一个属性赋值的时候是要用到的。这个属性叫做md5hmac、

     6.之后这些属性都传到另外一个表单,这个表单是要跳转到支付接口的,这个表单是不用给用户看到的(我用的方法就是用js语言设置这个表单自动提交)

     7.最后就会跳转到这个支付页面的

    备注:

    1.这个需要有两个属性,如截图的前两个,是需要这个企业提供给你,我截图的这个过期了,我用时候跳转到页面,但是用不了

    2.加密类

      1  /**
      2   * @param aValue
      3   * @return
      4   */
      5  public static String digest(String aValue) {
      6   aValue = aValue.trim();
      7   byte value[];
      8   try {
      9    value = aValue.getBytes(encodingCharset);
     10   } catch (UnsupportedEncodingException e) {
     11    value = aValue.getBytes();
     12   }
     13   MessageDigest md = null;
     14   try {
     15    md = MessageDigest.getInstance("SHA");
     16   } catch (NoSuchAlgorithmException e) {
     17    e.printStackTrace();
     18    return null;
     19   }
     20   return toHex(md.digest(value));
     21 
     22  }
     23  
     24 // public static void main(String[] args) {
     25 //  System.out.println(hmacSign("AnnulCard1000043252120080620160450.0http://localhost/SZXpro/callback.asp这
     26 
     27 4564868265473632445648682654736324511","8UPp0KE8sq73zVP370vko7C39403rtK1YwX40Td6irH216036H27Eb12792t"));
     28 // }
     29 }
     30 ----------------------
     31 b./payment/src/com/credream/utils/PanymentUtil.java
     32  package com.credream.utils;
     33 
     34 public class PanymentUtil {
     35  /**
     36   * 生成hmac方法
     37   *
     38   * @param p0_Cmd 业务类型
     39   * @param p1_MerId 商户编号
     40   * @param p2_Order 商户订单号
     41   * @param p3_Amt 支付金额
     42   * @param p4_Cur 交易币种
     43   * @param p5_Pid 商品名称
     44   * @param p6_Pcat 商品种类
     45   * @param p7_Pdesc 商品描述
     46   * @param p8_Url 商户接收支付成功数据的地址
     47   * @param p9_SAF 送货地址
     48   * @param pa_MP 商户扩展信息
     49   * @param pd_FrpId 银行编码
     50   * @param pr_NeedResponse 应答机制
     51   * @param keyValue 商户密钥
     52   * @return
     53   */
     54  public static String buildHmac(String p0_Cmd,String p1_MerId,
     55    String p2_Order, String p3_Amt, String p4_Cur,String p5_Pid, String p6_Pcat,
     56    String p7_Pdesc,String p8_Url, String p9_SAF,String pa_MP,String pd_FrpId,
     57    String pr_NeedResponse,String keyValue) {
     58   StringBuffer sValue = new StringBuffer();
     59   // 业务类型
     60   sValue.append(p0_Cmd);
     61   // 商户编号
     62   sValue.append(p1_MerId);
     63   // 商户订单号
     64   sValue.append(p2_Order);
     65   // 支付金额
     66   sValue.append(p3_Amt);
     67   // 交易币种
     68   sValue.append(p4_Cur);
     69   // 商品名称
     70   sValue.append(p5_Pid);
     71   // 商品种类
     72   sValue.append(p6_Pcat);
     73   // 商品描述
     74   sValue.append(p7_Pdesc);
     75   // 商户接收支付成功数据的地址
     76   sValue.append(p8_Url);
     77   // 送货地址
     78   sValue.append(p9_SAF);
     79   // 商户扩展信息
     80   sValue.append(pa_MP);
     81   // 银行编码
     82   sValue.append(pd_FrpId);
     83   // 应答机制
     84   sValue.append(pr_NeedResponse);
     85   
     86   String sNewString = DigestUtil.hmacSign(sValue.toString(), keyValue);
     87   return sNewString;
     88  }
     89  
     90  /**
     91   * 返回校验hmac方法
     92   *
     93   * @param hmac 支付网关发来的加密验证码
     94   * @param p1_MerId 商户编号
     95   * @param r0_Cmd 业务类型
     96   * @param r1_Code 支付结果
     97   * @param r2_TrxId 易宝支付交易流水号
     98   * @param r3_Amt 支付金额
     99   * @param r4_Cur 交易币种
    100   * @param r5_Pid 商品名称
    101   * @param r6_Order 商户订单号
    102   * @param r7_Uid 易宝支付会员ID
    103   * @param r8_MP 商户扩展信息
    104   * @param r9_BType 交易结果返回类型
    105   * @param keyValue 密钥
    106   * @return
    107   */
    108  public static boolean verifyCallback(String hmac, String p1_MerId,
    109    String r0_Cmd, String r1_Code, String r2_TrxId, String r3_Amt,
    110    String r4_Cur, String r5_Pid, String r6_Order, String r7_Uid,
    111    String r8_MP, String r9_BType, String keyValue) {
    112   StringBuffer sValue = new StringBuffer();
    113   // 商户编号
    114   sValue.append(p1_MerId);
    115   // 业务类型
    116   sValue.append(r0_Cmd);
    117   // 支付结果
    118   sValue.append(r1_Code);
    119   // 易宝支付交易流水号
    120   sValue.append(r2_TrxId);
    121   // 支付金额
    122   sValue.append(r3_Amt);
    123   // 交易币种
    124   sValue.append(r4_Cur);
    125   // 商品名称
    126   sValue.append(r5_Pid);
    127   // 商户订单号
    128   sValue.append(r6_Order);
    129   // 易宝支付会员ID
    130   sValue.append(r7_Uid);
    131   // 商户扩展信息
    132   sValue.append(r8_MP);
    133   // 交易结果返回类型
    134   sValue.append(r9_BType);
    135   String sNewString = DigestUtil.hmacSign(sValue.toString(), keyValue);
    136 
    137   if (hmac.equals(sNewString)) {
    138    return true;
    139   }
    140   return false;
    141  }
    142 }

    3.记得你调试的时候要用企业给的测试环境下的支付网址

    4.一些我看视频的截图,你尝试看看

    ---- 动动手指关注我!或许下次你又能在我这里找到你需要的答案!ZZZZW与你一起学习,一起进步!
  • 相关阅读:
    iOS 证书错误 Certificates下面的 App Store and Ad Hoc是灰的?? 点不了
    iOS 发布证书错误 Your build settings specify a provisioning profile with the UUID, no provisioning profile was found
    不能修改“System Roots”钥匙串 即下载的.cer 文件添加不到钥匙串
    修改 “嗨加游-Prefix.pch” 或者 “嗨加游-Info.plist ” 方法
    Java基础1(2015-8-2)
    认识modernizr----前端
    VS2013的C#项目与SQL Server2012无法连接的问题
    安装完SQL Server 2012后,由Windows身份验证设置为混合型的身份验证
    C#项目,在controller文件夹右击鼠标没有“添加控制器”的问题
    复制已存在的数据库结构(不包括库中的数据)
  • 原文地址:https://www.cnblogs.com/zzzzw/p/4734785.html
Copyright © 2011-2022 走看看