php对接建行h5网页支付
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."®INFO=".$this->REGINFO."&PROINFO=".$this->PROINFO."&REFERER=".$this->REFERER;$this->temp_New1 .=$this->tmp."&TYPE=".$this->TYPE."&GATEWAY=".$this->GATEWAY."&CLIENTIP=".$this->CLIENTIP."®INFO=".$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网页支付相关推荐
- java 支付宝h5网页支付接口,移动端h5网页调用支付宝支付接口
领导第一次让我做h5支付宝支付的时候,去了支付宝开放平台,一顿上上下下左左右右,看完了长呼一口气.这个支付好像没我啥事儿啊!小伙伴儿们自行查看:https://opendocs.alipay.com/ ...
- JAVA 对接支付宝的 网页支付、当面付 工具类
maven pom需要引入的jar <!--支付宝支付--> <dependency><groupId>com.alipay.sdk</groupId> ...
- 微信支付-H5网页支付开通流程
简介 H5 支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付的场景.可以方便的从外 ...
- 支付宝手机h5网页支付不再提供「继续浏览器付款」按钮了吗
来自圈友的疑惑,记录一下 之前写过一篇「支付宝手机h5支付的文章」,如果下载运行过Demo的小伙伴肯定发现了一个问题 > 「Demo中有显示继续浏览器付款按钮,但自己实际环境并没有」 难道是操作 ...
- 微信html5 支付接口,黄聪:详解申请微信h5支付方法,开通微信h5网页支付接口(转)...
现在大街小巷的商家都在使用微信支付, 但是一些商家使用的是个人微信收款, 这个虽然很便利, 但是如果你想要数据统计汇总, 让客户在网络上在线付款, 就需要用到微信的h5支付. 微信h5支付 今天子恒老 ...
- 详解申请微信h5支付方法,开通微信h5网页支付接口(转)
现在大街小巷的商家都在使用微信支付, 但是一些商家使用的是个人微信收款, 这个虽然很便利, 但是如果你想要数据统计汇总, 让客户在网络上在线付款, 就需要用到微信的h5支付. 微信h5支付 今天子恒老 ...
- Golang Gin接入支付宝H5网页支付
安装依赖 go get github.com/smartwalle/alipay/v3 发起账单接口 func FinishAliPayment(c *gin.Context) {appG := ap ...
- uni-app - 最详细 H5 网页接入微信支付功能,提供从详细的示例代码与注释(移动端网页实现微信支付能力,微信公众号前端支付 JSAPI / JS-SDK 详细示例源码)官方最新超级详细教程
前言 关于 uni-app 项目中接入微信支付的文章鱼龙混杂,各种 JSAPI / JS-SDK 乱代码.过时.没注释.不讲流程原理,非常难用. 本文实现了 uni-app H5 移动端网页项目,实现 ...
- H5接入支付流程-微信支付支付宝支付
业务场景: H5对接微信支付和支付宝支付,app无法发版,需要支持在app内和浏览器内同时使用. 于是借此机会对前端接入对第三方支付进行了调研,本次只讨论微信支付,和支付宝支付. 微信支付 文档地址: ...
- 移动网页支付(微信H5支付和支付宝网页支付)
支付宝网页支付: 1.前端发送(流水号,手机号,产品ID,金额,回调地址,取消地址,支付类型)支付信息给后端, 2.后端组装数据,通过SDK向支付宝发起请求,返回数据给前端. let loc =&qu ...
最新文章
- 短波通信为何经久不衰?
- RDKit | PD/PD-L1抑制活性 化合物指标分析
- spring之AOP的简单实例
- 每日一皮:叫你们别上泰坦尼克,嗓子都喊哑了!没一个听我的,最后还把我......
- VUE $SET源码
- spring boot连接数据库
- linux系统账户口令管理
- keepalive+nginx实现负载均衡高可用_高可用、负载均衡 集群部署方案:Keepalived + Nginx + Tomcat...
- php旧物交易开源代码_php二手市场交易系统毕业设计(含源文件)
- Android11(RK3568)自定义服务制作(3)-Hardware制作和权限管理
- 信号完整性测试入门——SECOND
- 红宝书考研单词(四级到考研和六级的过渡词汇)
- ES7210四通道ADC芯片电路PCB-LAYOUT注意
- PHP设计模式-简单工厂方法
- [编程题]漂流船问题
- c语言编译作用,叙述 C语言编译
- 子串、真子串、非空子串、非空真子串的求解方法(数据结构)
- 易基因|RNA m5C甲基化测序(RNA-BS)技术介绍
- 用Cat.1+GPS+蓝牙+RFID实现工卡式室内室外定位器
- group by 用法