怎么让自己的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.一些我看视频的截图,你尝试看看

时间: 2024-11-07 09:45:55

怎么让自己的java系统使用支付接口的相关文章

四方支付系统开发支付接口解决方案聚合支付系统开发

什么是聚合支付? 所谓聚合支付,就是依托银行.三方支付或清算组织的支付通道与清算能力,为客户提供接口.集成.对接.订单处理.数据统计等的支付服务机构. 通过锋锐程序搭建的的聚合系统,可实现聚合SDK,聚合支付场景.聚合支付方式.聚合支付通道,无需寻找想要的支付通道.无需重复对接集成繁琐的支付接口,链接商户和通道.降低接入的技术.沟通门槛.降低通道成本,方便快捷的实现支付接入. 聚合支付是移动互联网时代的结构性的支付服务解决方案! 最近人民银行关于<提升收单服务水平规范和促进收单服务市场的指导意见

Java调用支付宝支付接口

一.场景:公司需要在网站上进行支付宝支付. 二.API:使用支付宝开放平台的支付能力-即时到账接口.支付宝开放平台链接 三.分析: 1.支付宝的文档比较容易看,主要是有相应的DEMO,我这里看的DEMO是 JAVA-UTF-8版本. ? 2.导入DEMO,在com.alipay.config中填入对应的partner和key(在对应的商户后台获取)就可以直接运行了解支付流程了. ? 3.改写:我这边使用的是springmvc+mybatis.商品发起购买(走支付宝支付).跳转到支付宝.支付宝回调

java对接微信支付

对接微信扫码支付(模式2),前端使用velocity技术 (1)调用微信支付接口(view层)  此部分业务逻辑部分可以省略 1 @RequestMapping("/wxpay.htm") 2 public ModelAndView wxpay(HttpServletRequest request,HttpServletResponse response, String id, String type, 3 String payment_id) 4 { 5 ModelAndView m

【Java EE 学习 21 下】【 使用易宝支付接口实现java网上支付功能】

一.网上支付分为两种情况,一种方法是使用直接和银行的支付接口,另外一种方法是使用第三方支付平台和银行对接完成支付. 1.直接和银行对接. 2.使用第三方支付平台 3.常见的第三方支付平台 二.使用易宝支付接口实现java网上支付功能(农业银行). 1.完整源代码:https://github.com/kdyzm/day21_2_pay 2.实现过程的时序图 3.技术要点 (1)使用GET请求的时候必须将全部参数都带上,参数名称参考开发者文档中的请求参数列表 (2)使用PaymentUtil类实现

探讨一下常见支付系统的对外接口

本文作者为我的朋友 Terry Gao,某互联网架构师,首发于其个人公众号[PHP架构] 经授权允许本账号转载. 看了之后,感觉写的非常到位,对于测试人员也很有帮助,故原文直接发布. 如果有朋友想了解支付相关测试,请点击-->互联网产品支付功能如何测试? 点击尾部 阅读原文,进入对方公众号. 原文如下 作为一个具备用户交易能力的网站,丰富它的支付渠道对于获客和提高日活都 有不可估量的积极作用.算起来,我接触过的支付系统也有几十个了,在这里总结一下我所接触过的支付系统对外接口的设计方案. 1. 支

java 反射调用支付SDK

在android开发中会遇到各种SDK的接入,很是麻烦.最初在想能不能把所有的SDK都 融合到一个当中,发现有点异想天开.但是也可以解决SDK资源不小心没有引入,导致程序调用接口崩溃问题.经过查资料,还是写了一个小Demo,仅供参 考!很早之前写的了,估计移动基地SDK,有变动,不过道理是一样的. 仅以移动基地SDK举例. 1.移动支付需要的SO文件导入 public class CarrotApplication extends Application { //是否含有移动支付SDK bool

java网上在线支付

/**----------------------java网上在线支付-------------------------------------1.创建WEB项目2.创建前端支付页面表单3.导入支付平台端口类jar4.创建类读取用户的平台账号密钥5.创建Servlet6.(重点)request.getparameter获取相应平台所需支付信息7.(重点)引用平台类提供方法对交易数据进行hmac加密8.(重点)request.setAttribute()发送平台所需支付信息到转接页面9.(重点)创

获取Java系统相关信息

1 package com.test; 2 3 import java.util.Properties; 4 import java.util.Map.Entry; 5 6 import org.junit.Test; 7 8 public class SystemTest { 9 10 /** 11 * 获取Java系统相关信息 12 * @throws Exception 13 */ 14 @Test 15 public void testSys() throws Exception { 1

java系统开发框架

 做项目的时候,最需要快速开发框架来辅助.好的快速安全的开发框架,使得开发起来得心应手.只需要关注业务的细节,业务流程出来了,设计完成,就可以快速开发实现. 最近在做的一个项目就是如此,本身是一个开发平台,集成了e表报表工具,使得复杂的多变统计分析报表做起来事半功倍. 集成eworkflow工作流系统,主要业务流程都可以先图形化的设计好,表单可以用eform的电子表单也可以集成定制的页面.多变的业务流都可以先定义好,图形化的方式展现出来,业务流程实例也可用图形的方式追踪管理. java开发框