博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎么让自己的java系统使用支付接口
阅读量:7037 次
发布时间:2019-06-28

本文共 4347 字,大约阅读时间需要 14 分钟。

  昨天花了好久的时间学习了支付接口的教,我看了前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 易宝支付会员ID103   * @param r8_MP 商户扩展信息104   * @param r9_BType 交易结果返回类型105   * @param keyValue 密钥106   * @return107   */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   // 易宝支付会员ID130   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.一些我看视频的截图,你尝试看看

 

 

转载于:https://www.cnblogs.com/zzzzw/p/4734785.html

你可能感兴趣的文章
JDK源码学习笔记——HashMap
查看>>
Java第四次作业
查看>>
Oracle自制事务
查看>>
for练习相关
查看>>
C语言函数的变参实用与分析
查看>>
ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)
查看>>
通过单选按钮控制页面之间的切换
查看>>
Fedora下安装ORACLE 11g
查看>>
了解SSL必须要懂得密码技术
查看>>
nodejs项目进程管理器之pm2
查看>>
二十六、oracle pl/sql 分页
查看>>
很不错的前端页面
查看>>
Currency 货币 filter
查看>>
微信小程序中用户唯一ID的获取
查看>>
Tomcat6,7,8的日志切割
查看>>
mysql 启动错误-server PID file could not be found
查看>>
seleium_元素定位
查看>>
在VS2008中调用Matlab的m文件
查看>>
读Xamarin文档记录
查看>>
Mysql Commands
查看>>