php对接建行h5网页支付

  • 前言
    • H5页面支付
    • H5页面支付回调通知
    • 退款及其他的业务

前言

最近接到公司乙方要求,需要再支付上面增加建行的支付渠道。之前一直用的都是微信和支付宝这种第三方支付平台,银行直接对接比较少。没办法就只能上网搜索,搜索一番返现网上对接建行的资料比较少,没办法只好摸着石头过河,中间也借鉴了一些大佬的文章内容。

H5页面支付

根据建行的h5网页支付对接文档,还是可以看出是比较简单的。把重要的参数拼接之后,生成一条支付连接。我就用一些简单的代码作为列子看看:

 /*** 生成url,文档用js,此url用于跳转到建行支付页* @access  public* @return string*/public  function getUrl($order){/*** @var SystemOrder $order*/$this->ORDERID = $order->getSystemTradeNo();$this->PAYMENT = $order->getPrice()/100;$this->CURCODE = '01';$this->TXCODE = '520100'; //支付交易if($order->getType() == SystemOrder::TYPE_LIVE_HOSPITAL_PREPAY){ //住院和门诊的公钥不同$this->POSID   =   $this->POSIDTwo;$this->PUB32TR2 = $this->PUB32TR2Two; // substr($this->pubstr, -30);}$this->tmp .='MERCHANTID='.self::$MERCHANTID.'&POSID='.$this->POSID.'&BRANCHID='.$this->BRANCHID.'&ORDERID='.$this->ORDERID.'&PAYMENT='.$this->PAYMENT.'&CURCODE='.$this->CURCODE.'&TXCODE='.$this->TXCODE.'&REMARK1='.$this->REMARK1.'&REMARK2='.$this->REMARK2;$this->temp_New .=$this->tmp."&TYPE=".$this->TYPE."&PUB=".$this->PUB32TR2."&GATEWAY=".$this->GATEWAY."&CLIENTIP=".$this->CLIENTIP."&REGINFO=".$this->REGINFO."&PROINFO=".$this->PROINFO."&REFERER=".$this->REFERER;$this->temp_New1 .=$this->tmp."&TYPE=".$this->TYPE."&GATEWAY=".$this->GATEWAY."&CLIENTIP=".$this->CLIENTIP."&REGINFO=".$this->REGINFO."&PROINFO=".$this->PROINFO."&REFERER=".$this->REFERER;$strMD5 = md5($this->temp_New);$this->URL .= $this->bankURL."?".$this->temp_New1."&MAC=".$strMD5;return $this->URL;}

代码写的比较粗糙,就请见谅了。最终生成的就是支付连接。这些都是比较简单的了。

H5页面支付回调通知

上述的字段参数我就不一一介绍了,如果有支付对接的话,建行都会发几个文档给你的,实际情况按照具体生成环境决定。
重点来了,支付连接是很简单三下五除二就明白了,关键是回调通知就很懵了。因为,我们上面的参数根本没有设置回调通知这个参数。这个时候我向负责给我发送文档的建行工程师咨询了,我们需要将同步异步的两个通知url在建行的商户平台设置好。(ps:因为我负责的建行支付比较特殊没办法登入建行的商户平台,我只好将两个url告诉给建行工程师帮我设置好了)如果连同步异步通知都不知道的同学,建议百度一下,我这里就不做过多解释了。

设置好同步和异步通知后,我们需要对建行告诉我们的url参数做处理,还要进行验签来判断真伪。因为对方没有提供php的验签方法model,自己又笨又没法只好使用对方的jar包进行验签。
这里需要下载java的运行环境。安装好了java环境后,进入jar所在环境进行设置。
先打开ccbnetpayconfig.xml文件进行设置


<!-- 通讯端口1024~65535之间未被使用的端口 --><commport><value>55533</value></commport><!-- 验签程序的线程数 --><maxconn><value>5</value></maxconn><!-- 商户若有多个柜台,可按照不同的柜台号配置不同的公钥 --><merpos><!-- 商户柜台号 --><posid></posid><!-- 对应的公钥 --> <pubkey></pubkey></merpos><merpos><posid></posid><pubkey></pubkey></merpos></ccbnetpayconfig>

设置好之后,在当前目录执行:java -jar ccbnetpaysign.jar

出现这个页面 就ok了,window 和linux上面都差不多一样的。
代码如下:

//建立socket连接并发送报文private function get_data_from_server($address, $service_port, $send_data) {$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if ($socket < 0) {echo "socket创建失败原因: " . socket_strerror($socket) . "\n";}$result = socket_connect($socket, $address, $service_port);if ($result < 0) {echo "SOCKET连接失败原因: ($result) " . socket_strerror($result) . "\n";}//发送命令$in = $send_data;$string = '';socket_write($socket, $in, strlen($in));while ($out = socket_read($socket, 2048)) {$string .= $out;}socket_close($socket);return $string;}// 通过socket向jar包进行数据验签 验证签名是否正确public function isValid($sendData){$res = $this->get_data_from_server("127.0.0.1",55533,$sendData."\n");//验签后写入日志$this->writeLog($sendData);$firstString = substr($res,0,1);return $firstString == 'Y' ? true : false;}

进行验证后,后面该干嘛就干嘛,执行符合你们自己的业务操作。

退款及其他的业务

我这里就只介绍退款吧,因为其他的都差不多这个流程。涉及到退款还有查询这些业务就要提到建行的商户外联平台了。
windows下启动:
根据建行发给你的程序,解压之后,就执行 bin/设置.bat,配置好参数。

设置完后,执行 启动.bat 文件前,记得双击执行建行发给你们的证书。不然在启动的时候会提示你没有证书。
出现如下页面,就代码启动成功了。

linux版本下:
将外联平台压缩包上传到指定的目录下面,然后将其解压。由于文件是.rar文件在linux上解压,需要下载rar解压(如果不知道怎么解压,建议百度),在linux上面就需要执行startService.sh文件。
在根目录下执行

如果发现其他中文都没问题,但是启动后就报乱码。这个时候检查一下远程工具,设置一下编码,将其更改成默认语言。


然后再次启动startService.sh文件。

启动后的编码就正常了。按照参数进行填写。(PS:记得将证书上传到 根目录/cert 目录下面)
然后就可以开始你们的业务啦!

最后建议:退款其他业务,建议还是走sokect通信哦。

php对接建行h5网页支付相关推荐

  1. java 支付宝h5网页支付接口,移动端h5网页调用支付宝支付接口

    领导第一次让我做h5支付宝支付的时候,去了支付宝开放平台,一顿上上下下左左右右,看完了长呼一口气.这个支付好像没我啥事儿啊!小伙伴儿们自行查看:https://opendocs.alipay.com/ ...

  2. JAVA 对接支付宝的 网页支付、当面付 工具类

    maven pom需要引入的jar <!--支付宝支付--> <dependency><groupId>com.alipay.sdk</groupId> ...

  3. 微信支付-H5网页支付开通流程

    简介  H5 支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付的场景.可以方便的从外 ...

  4. 支付宝手机h5网页支付不再提供「继续浏览器付款」按钮了吗

    来自圈友的疑惑,记录一下 之前写过一篇「支付宝手机h5支付的文章」,如果下载运行过Demo的小伙伴肯定发现了一个问题 > 「Demo中有显示继续浏览器付款按钮,但自己实际环境并没有」 难道是操作 ...

  5. 微信html5 支付接口,黄聪:详解申请微信h5支付方法,开通微信h5网页支付接口(转)...

    现在大街小巷的商家都在使用微信支付, 但是一些商家使用的是个人微信收款, 这个虽然很便利, 但是如果你想要数据统计汇总, 让客户在网络上在线付款, 就需要用到微信的h5支付. 微信h5支付 今天子恒老 ...

  6. 详解申请微信h5支付方法,开通微信h5网页支付接口(转)

    现在大街小巷的商家都在使用微信支付, 但是一些商家使用的是个人微信收款, 这个虽然很便利, 但是如果你想要数据统计汇总, 让客户在网络上在线付款, 就需要用到微信的h5支付. 微信h5支付 今天子恒老 ...

  7. Golang Gin接入支付宝H5网页支付

    安装依赖 go get github.com/smartwalle/alipay/v3 发起账单接口 func FinishAliPayment(c *gin.Context) {appG := ap ...

  8. uni-app - 最详细 H5 网页接入微信支付功能,提供从详细的示例代码与注释(移动端网页实现微信支付能力,微信公众号前端支付 JSAPI / JS-SDK 详细示例源码)官方最新超级详细教程

    前言 关于 uni-app 项目中接入微信支付的文章鱼龙混杂,各种 JSAPI / JS-SDK 乱代码.过时.没注释.不讲流程原理,非常难用. 本文实现了 uni-app H5 移动端网页项目,实现 ...

  9. H5接入支付流程-微信支付支付宝支付

    业务场景: H5对接微信支付和支付宝支付,app无法发版,需要支持在app内和浏览器内同时使用. 于是借此机会对前端接入对第三方支付进行了调研,本次只讨论微信支付,和支付宝支付. 微信支付 文档地址: ...

  10. 移动网页支付(微信H5支付和支付宝网页支付)

    支付宝网页支付: 1.前端发送(流水号,手机号,产品ID,金额,回调地址,取消地址,支付类型)支付信息给后端, 2.后端组装数据,通过SDK向支付宝发起请求,返回数据给前端. let loc =&qu ...

最新文章

  1. 短波通信为何经久不衰?
  2. RDKit | PD/PD-L1抑制活性 化合物指标分析
  3. spring之AOP的简单实例
  4. 每日一皮:叫你们别上泰坦尼克,嗓子都喊哑了!没一个听我的,最后还把我......
  5. VUE $SET源码
  6. spring boot连接数据库
  7. linux系统账户口令管理
  8. keepalive+nginx实现负载均衡高可用_高可用、负载均衡 集群部署方案:Keepalived + Nginx + Tomcat...
  9. php旧物交易开源代码_php二手市场交易系统毕业设计(含源文件)
  10. Android11(RK3568)自定义服务制作(3)-Hardware制作和权限管理
  11. 信号完整性测试入门——SECOND
  12. 红宝书考研单词(四级到考研和六级的过渡词汇)
  13. ES7210四通道ADC芯片电路PCB-LAYOUT注意
  14. PHP设计模式-简单工厂方法
  15. [编程题]漂流船问题
  16. c语言编译作用,叙述 C语言编译
  17. 子串、真子串、非空子串、非空真子串的求解方法(数据结构)
  18. 易基因|RNA m5C甲基化测序(RNA-BS)技术介绍
  19. 用Cat.1+GPS+蓝牙+RFID实现工卡式室内室外定位器
  20. group by 用法

热门文章

  1. Python网络爬虫--项目实战--scrapy爬取贝壳网
  2. Python 调用IDM下载器
  3. 广告行业中那些趣事系列36:腾讯2021广告大赛多模态视频广告标签baseline介绍和优化思路...
  4. 软件测试方案和计划的区别和联系
  5. 2018五大网络小说在线阅读APP推荐
  6. 如何高效地阅读技术类书籍与博客
  7. DeepFaceLab 模型预训练参数Pretrain的使用!
  8. pl2303 USB转串口驱动
  9. Excel批量删除空白行
  10. FPGA设计中提高工作频率及降低功耗题目合集