前段时间项目要接工银聚富通,上网找个好多有关资料感觉都不太合适,后来自己一点点摸索,最后完成了需求.项目是微信小程序商城.用户下单到门店,发起支付,并将工行支付返回的参数返回给前端,前端根据参数调起微信小程序支付,其大致流程是,用户下单->门店->微信支付发起->返回支付参数->微信唤醒支付页面->用户输入密码支付.
前提:在用户下单的门店必须有工行的商户号,否则无法支付,所以在代理商App那里加了一个工行注册接口,就是说代理商在代理商App注册成功后,还需要向工行注册为子商户.代理商下包含多个门店,只需要代理商注册商户号,其下门店都是可以支付成功的.首先得使你支付的门店或代理商成为工银聚富通的子商户,接下来我们可以看下子商户是怎样注册的.

聚富通商户注册页

聚富通子商户注册页

子商户注册页详细信息都在以上超链接中,在这里有一个坑人的地方,请求地址,文档介绍中的请求地址是V2,实际需要V3
唯一注意点:请求路径:**https://gw.open.icbc.com.cn/ui/jft/ui/vendor/register/V3**
还有一点就是:这个请求是一个servlet,因为现在大部分项目都是springBoot微服务项目的,在加入servlet需要在启动类加入以下注解,在项目启动能保证你的servlet能被扫描到

以下是工行聚富通给的测试代码
 String APP_ID = "Oikeclo001";String MY_PRIVATE_KEY = "[需替换]应用方私钥,由应用方生成公私钥对,并将公钥上传至工行API开放平台";String host = "[需替换]工行API网关地址";String apiUrl= host+"/ui/jft/ui/vendor/register/V2";String SIGN_TYPE = "RSA2";
//签名类型为RSA2时,需传入appid,私钥和网关公钥,签名类型使用定值IcbcConstants.SIGN_TYPE_RSA2,其他参数使用缺省值UiIcbcClient client = new UiIcbcClient(APP_ID, SIGN_TYPE, MY_PRIVATE_KEY, IcbcConstants.CHARSET_UTF8);JftUiVendorRegisterRequestV2 request = new JftUiVendorRegisterRequestV2();request.setServiceUrl(apiUrl); JftUiVendorRegisterRequestV2Biz bizContent = new JftUiVendorRegisterRequestV2Biz();//必输bizContent.setAppId("10000000000000004473");//必输bizContent.setOutVendorId("66666666622001234001");//bizType 为07时 不输;普通子商户必输bizContent.setOutUserId("66666666660055005501");//bizType 为07时 不输;普通子商户必输bizContent.setOutUpperVendorId("66666666633456768843");// 票据子商户必输 且必须为07;分润客户必输,且必须为26bizContent.setBizType("07");request.setBizContent(bizContent);resp.setHeader("Content-Type", "text/html;charset=" + IcbcConstants.CHARSET_UTF8);PrintWriter out = resp.getWriter();// System.out.println(client.buildPostForm(request));out.write("<html>");out.write("<head>");out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset="+ IcbcConstants.CHARSET_UTF8 + "\">");out.write("</head>");out.write("<body>");out.write(client.buildPostForm(request));out.write("</body>");out.write("</html>");
其实说白了就是我们填写一些必要参数向工行发送请求,请求成功会唤起工行聚富通的注册页面,如果你的参数都是对的话,启动项目请求你的servlet就会出现工行聚富通的子商户注册页,如下图:

以下是我的demo,可以根据实际情况在项目需要接入的时候来进行接入
访问地址:  http://localhost:10001/test?outUserId=1000000097&outVendorId=1100000001
@WebServlet(urlPatterns = "/test")
public class RegisterServlet extends HttpServlet {protected static final String APIGW_PUBLIC_KEY = "网关公钥";String APP_ID = "appId";String MY_PRIVATE_KEY ="私钥";private static final String host = "https://gw.open.icbc.com.cn";private static final String apiUrl = host+"/ui/jft/ui/vendor/register/V3";@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {String outUserId = req.getParameter("outUserId");String outVendorId = req.getParameter("outVendorId");UiIcbcClient client = new UiIcbcClient(APP_ID, IcbcConstants.SIGN_TYPE_RSA2, MY_PRIVATE_KEY,IcbcConstants.CHARSET_UTF8);JftUiVendorRegisterRequestV2 request = new JftUiVendorRegisterRequestV2();request.setServiceUrl("https://gw.open.icbc.com.cn/ui/jft/ui/vendor/register/V3");JftUiVendorRegisterRequestV2Biz bizContent = new JftUiVendorRegisterRequestV2Biz();bizContent.setAppId(APP_ID);bizContent.setOutUserId(outUserId);bizContent.setOutVendorId(outVendorId);bizContent.setOutUpperVendorId(APP_ID);
//        bizContent.setBizType("07");request.setBizContent(bizContent);resp.setHeader("Content-Type", "text/html;charset="+ IcbcConstants.CHARSET_UTF8);PrintWriter out = resp.getWriter();out.write("<html>");out.write("<head>");out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset="+ IcbcConstants.CHARSET_UTF8 + "\">");out.write("</head>");out.write("<body>");try {out.write(client.buildPostForm(request));} catch (IcbcApiException e) {e.printStackTrace();}out.write("</body>");out.write("</html>");System.out.println(resp.getStatus());}
}
参数一定要对,不然当你发起请求的时候会出现好多诸如以下的错误,切记多看文档给的参数

工行(工银聚富通)支付-子商户注册相关推荐

  1. 工行(工银聚富通)-申请退款

    上篇文章谈了谈工银聚富通H5支付,有支付就得有退款,这是一个完整的流程,下面来说下聚富通的退款,在项目中的流程是,用户在小程序里点击申请退款,有门店App那边来审核,门店App审核通过后会向工行发送退 ...

  2. 工行(工银聚富通)-H5埋名支付

    上篇文章讲述了代理商注册商户号,因为接触的这个项目是一个微信小程序商城项目,里面包含用户小程序,门店App,代理商App三个端,每个代理商下有不同的门店,用户通过微信小程序下单,只会下单到具体的门店, ...

  3. 银汇通支付:第三方支付POS机备受商户青睐

    因为方便.快捷,POS机刷卡消费越来越被市民所接受--如今,POS机不再仅仅是大商场的"必备",已越来越多地走入中小商家.记者采访发现,随着POS机的普及,第三方支付公司也日渐增多 ...

  4. 银汇通支付解析固定pos机与移动pos机的优缺对比

    银汇通支付解析固定pos机的优点是: 1.软件升级和维护比较容易; 2.网络和电话拨号方式; 3.POS 交易清算比较容易; 银汇通支付解析固定pos机的缺点是:固定在吧台,要不与电话线连接,要不就是 ...

  5. 银汇通支付分析全球pos机市场发展趋势

    随着电子商务的加速发展,pos在商业自动化中的地位与作用正在发生巨大的变化.今天的Pos机已不仅用作记账,国外许多用户正在逐渐将他用作客户关系管理.商品促销.多渠道销售等方面的工具.为此,许多原来的用 ...

  6. 银汇通支付解析pos终端基础知识

    金融pos机定义:pos(Point Of Sales)是"销售点终端机具"的英文简称,是安装在特约商户内,为持卡人提供授权.消费.结算等服务的专用银行电子支付设备. pos功能简 ...

  7. 银汇通支付普及pos机功能常识

    摘要: pos机产生于上世纪70年代末,是商业经营者需求以及科技高速发展的产物.到目前为止,pos机在我国应用时间不长,仅16年左右,但已被广泛应用于零售业以及服务业.pos机的广泛应用取决它强大的功 ...

  8. 银汇通支付分析pos机代理“三分天下”格局

    短短的几年时间,我国第三方支付公司从最初的27家发展到现在的250多家.第三方支付的迅猛发展也使第三方支付pos机代理行业兴起发展.之所以发展迅速是因为pos机代理行业的赢利模式,出了挣机具的差价,还 ...

  9. 工银融e联服务器安全证书失败,注册工行工银融e联客户端时遇到您已经注册我......

    银融e联客户端登录密码连续输错分两种情况: 1.同步注册手机银行/网上银行的客户,当日输错3次无法登录,次日解冻.连续累计输错10次不会自动解冻. 2.未同步注册手机银行/网上银行的客户,当天输错5次 ...

最新文章

  1. 进一步提升用户信息安全保护意识 小米安全与隐私宣传月完满落幕
  2. 关于学习Python的一点学习总结(29->作用域)
  3. TypeScript里的类型合并操作符
  4. win10家庭版调出组策略_利用powershell为win10家庭版安装组策略
  5. linux rm命令详解
  6. matlab m序列,m序列(M序列与m序列区别)
  7. AM335 嵌入式 linux,am335x开发板建立嵌入式 Linux NFS 开发环境
  8. 震惊!printf 与scanf 不可告人的秘密
  9. html中div流光边框,CSS3 迷你的圆形流光边界
  10. 地热热泵系统行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  11. 师傅带徒弟 但是不能 教会徒弟饿死师傅!
  12. html5.0用什么编程语言,HTML5.0,求好心人详解,谢谢
  13. python3.8使用pyttsx3报错_使用pyttsx3实现python语音播报
  14. freemarker 使用简单笔记
  15. Atitit  深入理解命名空间namespace  java c# php js
  16. 汉印HPRT HY80BT 打印机驱动
  17. 卡西欧函数计算机广告词,卡西欧函数计算器,终身学习如有神助!
  18. 会员直推奖php程序_PHP自适应卡益源码 前台直销系统报单费直推奖
  19. SSM整合尚硅谷Spring
  20. 关于自动化测试的前期发展历史及未来发展趋势

热门文章

  1. 加服务器性能无提升,Turbo Boost技术对服务器性能的影响
  2. Cesium获取模型(Primitive)的位置与方向
  3. 南京邮电大学电工电子基础B实验六(组合逻辑电路)
  4. 【Unity2D入门教程】简单制作战机弹幕射击游戏⑥最终回扩展其它范围的内容
  5. 记录自己的支付集成(微信支付宝)
  6. Unity 之 LayaAir 的集成开发小程序之工具下载和基本使用
  7. vue2.0 class声明组件_案例精选 | 蘑菇街、滴滴、淘宝、微信的组件化架构解析
  8. Python字典的创建
  9. Android中Button点击事件
  10. 服务器托管一年的价格是多少