PHP 之建行龙支付 - 被扫查单(商家扫码客户二维码),查询订单是否付款成功
完整建行支付
建行主扫支付:https://blog.csdn.net/weixin_42674576/article/details/122010126?spm=1001.2014.3001.5501
建行被扫支付:https://blog.csdn.net/weixin_42674576/article/details/122380110?spm=1001.2014.3001.5501
退款:https://blog.csdn.net/weixin_42674576/article/details/122428305
<?php
namespace service\ccb;
use app\util\HttpUtil;class QueryService
{// 请求接口域名const HOST = 'https://ibsbjstar.ccb.com.cn/CCBIS/B2CMainPlat_00_BEPAY';const MD5KEY = '20120315201809041004';/*** 支付查询 轮询订单结果-PAY101*/public function query($input) {$param = config('ccb.bePay');$publicParam = config('ccb.public');$data = ['MERCHANTID' => $publicParam['merchant_id'], // 商户号'POSID' => $publicParam['pos_id'], // 柜台号'BRANCHID' => $publicParam['branch_id'], // 分行号'GROUPMCH' => '', // 集团商户信息'TXCODE' => 'PAY101', // 交易码'MERFLAG' => $param['mer_flag'], // 商户类型'TERMNO1' => '', // 终端编号 1'TERMNO2' => '', // 终端编号 2'ORDERID' => $input['order'], // 订单号'QRYTIME' => $input['qr_time'], // 查询次数 从1开始'QRCODE' => isset($input['code']) ? $input['code'] : '', // 码信息(一维码、二维码)'QRCODETYPE' => isset($input['code_type']) ? $input['code_type'] : '', //二维码类型 如QRCODE为空 此参数为必输,1:龙支付2:微信3:支付宝4:银联'REMARK1' => '', // 备注 1'REMARK2' => '', // 备注 2'SUB_APPID' => '', // 子商户公众账号 ID'RETURN_FIELD' => '', // 返回信息位图];// 与支付的区别TXCODE不一样,需要传QRYTIME,QRCODE和QRCODETYPE两个需传一个// 后续计算签名和加密串跟支付类似// 计算签名$sign = $this->calSign($this->sortParams($data));$data['SIGN'] = $sign;// 计算加密串$params = http_build_query($data);$pubKey = substr($publicParam['pub_key'], -30);$pubKey = substr($pubKey, 0, 8);$data['ccbParam'] = $this->calCcbParam($params, $pubKey);// 获取要请求的参数$requestData = $this->getRequestData($data);$url = self::HOST . '?' . http_build_query($requestData);$httpRequest = new HttpUtil();$res = $httpRequest::post($url);return $res;}/*** 按key升序排序,同时去掉空值* @param $params array* @return mixed*/public function sortParams($params) {ksort($params);foreach ($params as $key => $value) {if (empty($value) && $value == '') {unset($params[$key]);}}return $params;}/*** 计算签名* @param $params array 不含空值* @return string*/public function calSign($params) {return md5(http_build_query($params) . self::MD5KEY);}/*** 真正请求建行接口要传的参数* @param $data array* @return array*/public function getRequestData($data) {return ['MERCHANTID' => $data['MERCHANTID'],'POSID' => $data['POSID'],'BRANCHID' => $data['BRANCHID'],'ccbParam' => $data['ccbParam'],];}/*** 计算ccbparam* @param $params string* @param $key string* @return string*/public function calCcbParam($params, $key) {$res = openssl_encrypt (iconv("utf-8", "utf-16", $params), 'DES-ECB', $key);$res = str_replace('+', ',', $res);$res = urlencode($res);return $res;}
}
完成后,在$input中传入参数:
order:订单号
code:码信息(扫码得到的字符串)
code_type:二维码类型 如未上送 QRCODE 则此参数为必输,1:龙支付2:微信3:支付宝4:银联
qr_time:查询次数,从1开始,每次+1,最高6次
被扫支付成功后,查询订单状态,接口返回如下:
还有一种方式是在建行商户平台去设置支付回调地址,然后服务器接收数据,再做验签
PHP 之建行龙支付 - 被扫查单(商家扫码客户二维码),查询订单是否付款成功相关推荐
- Java 支付对接之银联电子商务(海南)聚合二维码支付(POS 通插件 C 扫 B 业务)
写在前面: 二维码支付宝有两种表现形式:第一种是动态的二维码,就是每生成一个订单就会生成一个二维码:第二种是固定的二维码,就是每个订单都是同一个二维码作为入口.本文主要描述的是如何使用银联的线下C扫B ...
- Spring Boot电商项目57:订单模块六:【前台:生成支付二维码】接口;(支付url的拼凑;利用zxing生成二维码;二维码图片的存储;真实地址与可访问地址的转换;)
说明: (1)本篇博客主要内容是:开发[前台:生成支付二维码]接口: (2)本篇博客需要注意的点有: ● 支付url的拼凑: ● 利用zxing生成二维码: ● 二维码图片的存储:真实地址与可访问地址 ...
- TCPIP远程网络电子健康码扫码设备|二维码扫码门禁机HX-QR86L-IP在校园复学防疫领域的应用
TCPIP远程网络电子健康码扫码设备|二维码扫码门禁机HX-QR86L-IP是一款铝合金材质.带液晶显示屏,一机两用,即可做门禁读头使用,也可以做电子健康码数据采集使用.可支持静态.手机动态二维码识别 ...
- 扫码普通二维码跳转微信小程序指定页面(体验服和开发服跳转链接不能动态传参)
好久不见,时隔多年我又来记录问题来了,记录这次问题的主要原因是减少你我去搜索资源的时间,下面开始讲讲我越到的问题.(下面说的是针对小程序体验版或者开发版哈,正式环境不存在这个问题) 需求:pc端扫码登 ...
- delphi Mercadopago阿根廷支付(支持获取账户信息和余额、创建商店,商店查询、创建二维码、二维码查询、创建订单、订单查询、订单退款)
下载链接:https://download.csdn.net/download/liushenglin123/11435379 [delphi Mercadopago阿根廷支付]支持获取账户信息和余额 ...
- 浅析IM即时通讯开发之扫码登录二维码
二维码技术使用起来很简单,本系列的前三篇文章也专门针对IM扫码登录这个功能做了详细的分享,但本着学习技术不留死角的习惯,我认为有必要单独学习一下到底什么是二维码(说不定哪天被个刚入行的程序员轻轻一句& ...
- uniapp 扫码识别(一维码、二维码)
注:需开启扫码功能,首先要在manifest.json配置中打开APP模块配置中 Barcode(扫码).Camera&Gallery(相机和相册) 自带扫码插件:uni.scanCode(O ...
- 为什么商家有了收款二维码还要使用聚合支付?
随着移动支付的普及和兴起,许多公司和企业响应时代的需要,纷纷接入移动聚合支付.然而,一些公司和企业并没有突破传统的逻辑思维模式.他们觉得自己用的是自己的收款二维码,根本不需要使用聚合支付.今天,我将告 ...
- Kotlin高仿微信-第35篇-支付-二维码收款(二维码)
Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册.登录.主页.单聊(文本.表情.语音.图片.小视频.视频通话.语音通话.红包.转账).群聊.个人信息.朋友圈.支付服务.扫一扫. ...
- 如何制作,支付后跳转到任意网址的图片二维码
最近有一个项目,需要制作生成一个二维码图片,然后扫码支付后可以跳转到一个指定的网页. 这个需求倒是并不复杂,就是实现起来有点麻烦,需要判断是否支付成功,然后成功后回调通知什么的.我就想,网上有没有现成 ...
最新文章
- ASP.Net TextBox只读时不能通过后台赋值取值
- matlab仿真软件 高阶调制,高阶差分幅度相移键控调制解调系统及仿真
- 网络管理员的爱情,不解释...
- html语言head里面的link示例,Html之head部分详解(示例代码)
- Xuggler视频处理简介
- 企业实战04:Oracle数据库_管理表
- mysql-数据库的增删切换使用等操作
- Android入门篇二:使用意图在Activity之间传递数据
- 开源大数据平台HBase对接OBS操作指南
- 从高的角度看自动化测试
- c 导出html表格数据格式文件,将html网页导出excel表格数据/如何将html页面中的表格导出到excel表格...
- 一套SpringBoot+VUE全平台支付系统源码
- MySQL 命令无效问题
- Power BI DAX: FILTER函数使用多个条件筛选数据
- 期待只在最美的时光遇见你
- python概率密度函数参数估计_Python与项目反应理论:基于EM和MCMC的参数估计算法...
- 多人协作开发Axure教程(附Axure RP9的密钥)
- 测试人员在软件测试过程中的职责,到底哪些事情属于测试人员的职责?
- 发表论文级别及期刊选择
- scala编程_Scala可以带回编程的喜悦吗?