PHP 之建行龙支付-主扫(客户扫码商家二维码),获取二维码信息

最近业务需求,需要做一个建行支付,其中分为主扫和被扫,主扫相对简单;
完整建行支付
建行被扫支付:https://blog.csdn.net/weixin_42674576/article/details/122380110?spm=1001.2014.3001.5501
被扫支付查单:https://blog.csdn.net/weixin_42674576/article/details/122380365?spm=1001.2014.3001.5501
退款:https://blog.csdn.net/weixin_42674576/article/details/122428305

首先是配置一下主扫,这里仅将必须参数配置

<?php
return [
    'bankUrl' => 'https://ibsbjstar.ccb.com.cn/CCBIS/ccbMain',
    //主扫
    'pay' => [
        'CCB_IBSVersion' => 'V6',
        'MERCHANTID'     => '105910100002105',    //商户代码
        'POSID'          => '662222818',          //商户柜台代码
        'BRANCHID'       => '441000000',          //分行代码
        'CURCODE'        => '01',                 //币种
        'TXCODE'         => '530550',             //交易码
        'PUB'            => '3d23ac1f0390bd82bf3fc69d020111',  //柜台的公钥后30位
        //其他非必须参数,根据需求配置
        'RETURNTYPE'     => '2',   //0 或空:返回二维码页面,只支持建行龙支付;1:返回 JSON 格式【二维码信息串】,只支持建行龙支付;2:返回聚合扫码二维码页面;3:返回聚合扫码 JSON格式【二维码信息串】聚合扫码只能上送 2 或 3,4:返回聚合银联二维码信息串
    ]
];

然后,主扫服务接口

    public function pay($input){
        $bankUrl = config('ccb.bankUrl');
        $param = config('ccb.pay');
        $timeout = date("YmdHis",strtotime("+600 seconds"));

        $data['CCB_IBSVersion'] = $param['CCB_IBSVersion'];
        $data['MERCHANTID']     = $param['MERCHANTID'];
        $data['POSID']          = $param['POSID'];
        $data['BRANCHID']       = $param['BRANCHID'];
        $data['ORDERID']        = $input['ORDERID'];
        $data['PAYMENT']        = $input['PAYMENT'];
        $data['CURCODE']        = $param['CURCODE'];
        $data['REMARK1']        = '';
        $data['REMARK2']        = '';
        $data['TXCODE']         = $param['TXCODE'];
        $data['RETURNTYPE']     = $param['RETURNTYPE'];
        $data['TIMEOUT']        = $timeout;
        $data['PUB']            = $param['PUB'];

        //MAC 校验域
        $mac  = 'MERCHANTID='.$param['MERCHANTID'];
        $mac .= '&POSID='.$param['POSID'];
        $mac .= '&BRANCHID='.$param['BRANCHID'];
        $mac .= '&ORDERID='.$input['ORDERID'];
        $mac .= '&PAYMENT='.$input['PAYMENT'];
        $mac .= '&CURCODE='.$param['CURCODE'];
        $mac .= '&TXCODE='.$param['TXCODE'];
        $mac .= '&REMARK1=';
        $mac .= '&REMARK2=';
        $mac .= '&RETURNTYPE='.$param['RETURNTYPE'];
        $mac .= '&TIMEOUT='.$timeout;
        $mac .= '&PUB='.$param['PUB'];
        $mac = md5($mac);

        $data['MAC'] = $mac;

        $url = $bankUrl.'?'.http_build_query($data);
        $res = $this->httpRequest($url);
        return $res;
    }

    function httpRequest($url = null, $data = null,$post=1)
    {
        $curl = curl_init();    // curl 初始化设置
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  // 校验证书节点
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);// 校验证书主机

        if (!empty($data)) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }else if($post){
            curl_setopt($curl, CURLOPT_POST, 1);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  // 以文件流的形式 把参数返回进来
        // 执行
        $res = curl_exec($curl);
        curl_close($curl);
        if (json_encode($res) === 'null'){
            //$res = mb_convert_encoding($res,"GBK","UTF-8");
            $res = iconv("gb2312","utf-8",$res);
        }
        return $res;
    }

$res 中就能查看到返回的结果

页面展示二维码效果
在这里插入图片描述
PHP 之建行龙支付-被扫(商家扫码客户二维码),扫码枪使用:https://blog.csdn.net/weixin_42674576/article/details/122380110?spm=1001.2014.3001.5501

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值