1. 工行的接口文档详见:工行开放平台地址
  2. 生成二维码
/*** 获取支付二维码* * @param outTradeNo* @param orderAmt* @param attach* @param notifyUrl* @return*/public static JSONObject getPayQrCode(String outTradeNo, String orderAmt, String attach, String notifyUrl) {Date date = new Date();JSONObject json = new JSONObject();try {// 签名类型为RSA2时,需传入appid,私钥和网关公钥,签名类型使用定值IcbcConstants.SIGN_TYPE_RSA2,其他参数使用缺省值DefaultIcbcClient client = new DefaultIcbcClient(IcbcConfig.APP_ID, IcbcConstants.SIGN_TYPE_RSA2, IcbcConfig.MY_PRIVATE_KEY, IcbcConfig.APIGW_PUBLIC_KEY);QrcodeGenerateRequestV2 request = new QrcodeGenerateRequestV2();request.setServiceUrl(IcbcConfig.SERVICE_URL);QrcodeGenerateRequestV2Biz bizContent = new QrcodeGenerateRequestV2Biz();// 商户线下档案编号(特约商户12位,特约部门15位)bizContent.setMerId(IcbcConfig.MER_ID);// e生活档案编号bizContent.setStoreCode(IcbcConfig.STORE_CODE);// 商户系统订单号bizContent.setOutTradeNo(outTradeNo);// 订单总金额,单位:分bizContent.setOrderAmt(orderAmt);// 商户订单生成日期,格式:yyyyMMddbizContent.setTradeDate(DateFormatUtils.toIntYMD(date));// 商户订单生成时间,格式:HHmmssbizContent.setTradeTime(DateFormatUtils.toIntHMS(date));// 商户附加数据,最多21个汉字字符,原样返回bizContent.setAttach(attach);// 二维码有效期,单位:秒,必须小于24小时bizContent.setPayExpire(IcbcConfig.PAY_EXPIRE);// 商户接收支付成功通知消息URL,当notify_flag为1时必输bizContent.setNotifyUrl(notifyUrl);// 商户订单生成的机器IPbizContent.setTporderCreateIp(InetAddress.getLocalHost().getHostAddress());// 扫码后是否需要跳转分行,0-否;1-是;非1按0处理bizContent.setSpFlag(IcbcConfig.SP_FLAG);// 商户是否开启通知接口,0-否;1-是;非1按0处理bizContent.setNotifyFlag(IcbcConfig.NOTIFY_FLAG);request.setBizContent(bizContent);QrcodeGenerateResponseV2 response = new QrcodeGenerateResponseV2();try {response = client.execute(request, System.currentTimeMillis() + RandomStringUtils.random(5, Num62.N10_CHARS));if (response.isSuccess()) {json.put("success", true);json.put("qrCode", response.getQrcode());} else {json.put("success", false);json.put("msg", response.getReturnMsg());}} catch (IcbcApiException e) {json.put("success", false);json.put("msg", e.getMessage());}} catch (Exception e) {json.put("success", false);json.put("msg", e.getMessage());}return json;}
  1. 二维码回调接口
/*** 期刊订阅支付回调* * @param request* @param response*/@RequestMapping(value = "/subscribeNotifyNotice.jspx")public void subscribeNotifyNotice(HttpServletRequest request, HttpServletResponse response) throws Exception {log.info("支付成功, 进入通知接口...");Map<String, String> params = new HashMap<String, String>();Map<String, String[]> requestParams = request.getParameterMap();for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {String name = (String)iter.next();String[] values = (String[])requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";}valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");params.put(name, valueStr);}String sign = (String)params.get("sign");params.remove("sign");String path = "/jkcms/subscribeNotifyNotice.jspx";String content = WebUtils.buildOrderedSignStr(path, params);boolean signVerified = IcbcSignature.verify(content, IcbcConfig.SIGN_TYPE_RSA, IcbcConfig.APIGW_PUBLIC_KEY, IcbcConfig.CHARSET_UTF8, sign);if (signVerified) {JSONObject json = JSONObject.fromObject(params.get("biz_content"));if (json != null) {if (json.getInt("return_code") == 0) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");JournalSubscribe journalSubscribe = journalSubscribeMng.findBySubscribeId(json.getString("out_trade_no"));if (journalSubscribe != null) {journalSubscribe.setState(1);journalSubscribe.setMerchantOrderNo(json.getString("order_id"));journalSubscribe.setPayTime(simpleDateFormat.parse(json.getString("pay_time")));journalSubscribeMng.update(journalSubscribe);} else {log.info("订单不存在...");}} else {log.info("支付失败,error={}", json.getString("return_msg"));}} else {log.info("biz_content转换json失败...");}} else {log.info("支付验签失败...");}}

工行二维码支付接口及回调接口相关推荐

  1. 工行二维码支付时代来了

    全球最大商业银行工商银行和福州拾方易科技网络公司签署了特约商户联盟商圈协作拓展合作,为商家和用户的便捷推出了,你赚钱我买单!各大零售,商户,餐饮,百货入住商家和用户都可享受,二维码支付,千分二费率,满 ...

  2. 工银二维码支付,商户福利等你拿

    随着时代进步,技术的改进,2014年底就已经有银行和第三方支付机构开始布局二维码支付. 央行已发文确认二维码支付的市场地位,定位于传统线下银行卡支付业务的补,同时中国支付清算协会也召集专题会议,推动二 ...

  3. 微信二维码支付快速入门

    目录 一.二维码生成插件qrious 二.HttpClient 三.微信扫码支付 1.申请步骤 2.开发文档 四.入门Demo 1.工程搭建 2.myStudy-pay-interface 3.myS ...

  4. JAVA实现的微信扫描二维码支付

    支付项目采用springMvc+Dubbo架构实现,只对外提供接口. 话说,为什么微信支付比支付宝来的晚了那么一点,一句话,那一阵挺忙的,然后就没有时间整理,最近做完支付宝支付,顺便也把微信支付的也整 ...

  5. Java支付宝二维码支付和退款,微信二维码支付

    在蚂蚁金服开发平台下载demo 打开 TradePayDemo 项目,里面的main可以直接运行,在配置文件zfbinfo.properties中改为自己支付宝的信息 # 支付宝网关名.partner ...

  6. Java 支付对接之银联电子商务(海南)聚合二维码支付(POS 通插件 C 扫 B 业务)

    写在前面: 二维码支付宝有两种表现形式:第一种是动态的二维码,就是每生成一个订单就会生成一个二维码:第二种是固定的二维码,就是每个订单都是同一个二维码作为入口.本文主要描述的是如何使用银联的线下C扫B ...

  7. springboot整合微信二维码支付

    微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/api.shtml 下图是微信支付的一个流程图: 我们需要做的是: 1.调用 ...

  8. 微信支付--商户二维码支付(JAVA)

    先创建Springboot项目 已上传至github库 https://github.com/gaoruiqiang2017/weixinpay.git pom文件添加依赖 <!--微信支付SD ...

  9. 关于微信支付(二维码支付)

    关于微信支付(一) 微信支付有两种方式 1.第三方网站弹出二维码客户扫描支付 2.在微信内部H5直接发起支付 这篇文章先讲 第一种最常用的 弹出二维码支付 二维码支付 大概流程如下 用户选择支付-&g ...

最新文章

  1. 如何开发属于自己的第一个Java程序
  2. 电脑安装python为什么显示的是程序丢失-python报错:无法启动此程序,因为计算机中丢失...
  3. 为什么“无人问津”的Lisp可以这么狂?
  4. Python__数据结构与算法——树、二叉树(实现先、中、后序遍历)
  5. php类的实例化和调用,PHP:如何使用另一个类中的参数实例化一个类
  6. ADSL MODEM巧设置解决BT、电驴等下载软件掉线问题
  7. 巴菲特:伯克希尔没有所谓的5G核心能力 子公司会涉足相关行业
  8. 江苏机器人竞赛南航_挑战不止 热血不息!1000余名青少年决战江苏省机器人普及大赛!...
  9. LeetCode-Plus One
  10. 从0到1开发自动化测试框架(硬货太多,建议阅读)
  11. 【python】打造一款自动扫描全网漏洞的扫描器
  12. 十张思维导图掌握javascript重点
  13. Webpack 配置: 自定义网站图标 favicon
  14. 2021-BUPT计组课设硬布线控制器
  15. 外汇mt4 软件在哪里下载比较正规?
  16. 强制OOALV运行数据修改事件
  17. git init 命令详解
  18. 前端:给中国奥运金牌数做可视化
  19. 根据美光内存颗粒上的编码查询对应型号
  20. hive的大表join小表

热门文章

  1. 高德地图完整功能的html,揭秘高德地图八大不为人知的强大功能
  2. 基于SSM技术的医院在线预约诊疗系统设计与实现 毕业设计-附源码011130
  3. 欧拉函数定义及其性质
  4. uni-app前端开发(零)
  5. 批量查找替换excel单元格中的软回车(alt + enter)
  6. FastDB 高效率的内存数据库系统
  7. 下午三点半,公司空空荡荡
  8. hdu 5473 There was a kingdom(dp+几何)
  9. Android修行手册之从头到尾学Kotlin【全】
  10. WARNING: Ignoring invalid distribution -ip 解决方案