PHP 对接建行龙支付

在开发中 遇到一个对接建行支付的 我从网上搜了一下 大多数 都在吐槽文档写的垃圾 我从这里记录一下 我对接支付过程中 遇到的问题 以及解决办法从注册账号开始

一:注册账号/登陆

  1. 首页要找到 建行特约商户首页 第一次需要准备的东西有点多 需要下载 建行的 E路护航 不然无法登陆
    流程如下 传送门 以及常见问题链接 传送门

  2. 第一步处理完成之后 从 特约商户入口 就可以直接登录了
    在这里插入图片描述
    点登陆之后 要有个证书 点确定就可以 然后到 商户服务平台登录 输入账号密码就可以正常登陆了
    在这里插入图片描述

二:参数与配置

1.登陆商户服务平台之后需要配置/下载各种参数
如下
公钥:用于下单时使用 类似与微信商户的支付密钥 (注:不能修改需要保持好)在这里插入图片描述
回调/实时反馈地址
根据自己的需求来设置就可以
在这里插入图片描述

三:下单

参数的构建(根据建行的文档来就可以)在这里放一张
然后就是代码 我参考了一下这个大佬操作的—传送门

//设置无需登录接口
    protected $noNeedLogin = ['*'];
    //商户代码 商户号 
    protected $MERCHANTID = '105555555555555';
    //商户柜台代码  参数为 第二步 1中柜台号
    protected $POSID = '0333333';
    //分行代码  这里用的 山东建行
    protected $BRANCHID = '370000000';
    //币种
    protected $CURCODE = 01;
    //交易码
    protected $TXCODE = 520100;
    //公钥后30位
    protected $PUB = '0fg88is844325njgu88lqp44020111';


    /**
     * Notes: 建行龙支付下单 构建参数
     * By: Tommy
     * DateTime: 2021/3/32 9:17
     */
    public function go_pay(){
        $orderNum = rand(1000,999999999);
        $price = 0.01;
        // 商户代码, 由建行统一分配
        $MERCHANTID = $this->MERCHANTID;
        // 商户柜台代码, 由建行统一分配
        $POSID = $this->POSID;
        // 分行代码, 由建行统一指定
        $BRANCHID = $this->BRANCHID;
        // 订单号, 由商户提供,最长 30 位
        $ORDERID = $orderNum;
        // 付款金额
        $PAYMENT = $price;
        // 币种 01-人民币
        $CURCODE = '01';
        // 交易码, 由建行统一分配为 520100
        $TXCODE = '520100';
        // 备注 1, 一般作为商户自定义备注信息使用,可在对账单中显示。
        $REMARK1 = '';
        // 备注 2, 一般作为商户自定义备注信息使用,可在对账单中显示。
        $REMARK2 = '';
        // 接口类型, 分行业务人员在 P2 员工渠道后台设置防钓鱼的开关。1-防钓鱼接口
        $TYPE = 1;
        // 公钥后 30 位, 商户从建行商户服务平台下载,截取后 30 位。仅作为源串参加 MD5 摘要,不作为参数传递
        $PUB = $this->PUB;
        // 网关类型, 默认送 0
        $GATEWAY = 0;
        // 客户在商户系统中的 IP,即客户登陆(访问)商户系统时使用的 ip
        $CLIENTIP = '123.000.00.000';
        // 客户在商户系统中注册的信息,中文需使用 escape 编码
        $REGINFO = '';
        // 客户购买的商品, 中文需使用 escape 编码
        $PROINFO = '';
        // 商户 URL, 商户送空值即可
        $REFERER = '';
        // 商户客户端的intent�filter/schema, comccbpay+商户代码+商户自定义的标示app的字符串(只能为字母或数字), 例comccbpay105320148140002alipay,
        // 建行移动端文档就要求这么拼接, IOS文档却直接写取你的应用程序的URL Schemes即可, 你们自己看文档要求吧
        // $THIRDAPPINFO = 'comccbpay' . $MERCHANTID. 'myAPP';
        $THIRDAPPINFO = 'myAPP';

        // 支付方式位图, 10位位图,1为开,0为关, 第一位:支付宝, 第二位:微信,第三位:银联支付(保留位,暂不开放)其余位数预留。例如支持支付宝和微信支付则上送1100000000该字段不参与 MAC计算
        $PAYMAP = '0000000000';

        // md5加密参数
        $md5Params = [
            'MERCHANTID' => $MERCHANTID,
            'POSID' => $POSID,
            'BRANCHID' => $BRANCHID,
            'ORDERID' => $ORDERID,
            'PAYMENT' => $PAYMENT,
            'CURCODE' => $CURCODE,
            'TXCODE' => $TXCODE,
            'REMARK1' => $REMARK1,
            'REMARK2' => $REMARK2,
            'TYPE' => $TYPE,
            'PUB' => $PUB,
            'GATEWAY' => $GATEWAY,
            'CLIENTIP' => $CLIENTIP,
            'REGINFO' => $REGINFO,
            'PROINFO' => $PROINFO,
            'REFERER' => $REFERER,
            'THIRDAPPINFO' => $THIRDAPPINFO,
            // 'TIMEOUT' => ''
        ];
        $md5Query = http_build_query($md5Params);
        // MAC 校验域, 采用标准 MD5 算法
        $MAC = md5($md5Query);

        // 请求参数
        $urlParams = [
            'MERCHANTID' => $MERCHANTID,
            'POSID' => $POSID,
            'BRANCHID' => $BRANCHID,
            'ORDERID' => $ORDERID,
            'PAYMENT' => $PAYMENT,
            'CURCODE' => $CURCODE,
            'TXCODE' => $TXCODE,
            'REMARK1' => $REMARK1,
            'REMARK2' => $REMARK2,
            'TYPE' => $TYPE,
            'GATEWAY' => $GATEWAY,
            'CLIENTIP' => $CLIENTIP,
            'REGINFO' => $REGINFO,
            'PROINFO' => $PROINFO,
            'REFERER' => $REFERER,
            'THIRDAPPINFO' => $THIRDAPPINFO,
            'MAC' => $MAC,
//            'PAYMAP' => '0000000000'
        ];

        $orderStr = http_build_query($urlParams);
        halt($orderStr);
        return [
            // 我这里只是返回url需要拼接的参数, https://ibsbjstar.ccb.com.cn/CCBIS/ccbMain?加上$orderStr就是完整的商户下单请求地址
            'orderStr' => $orderStr
        ];
    }

放了一段PHP的代码 其他语言根据文档的参数来构建就可以

我在这里上传了一个建行的 下单模拟器 可以把生成的参数 或者填写参数之后 模拟下单 方便测试
传送门

四、支付回调

  1. 官方文档给的参数
    在这里插入图片描述
  2. 回调参数 我用的转换的json格式方
{
    "POSID":"052498251",
    "BRANCHID":"370000000",
    "ORDERID":"SP2029041256511025",
    "PAYMENT":"0.01",
    "CURCODE":"01",
    "REMARK1":"shop",
    "REMARK2":"",
    "ACC_TYPE":"12",
    "SUCCESS":"Y",
    "TYPE":"1",
    "REFERER":"",
    "CLIENTIP":"60.216.214.927",
    "SIGN":"18828a21de9115f62dcc9efd36542119268e9366533feebf800a3c3963f2eb95abe20c0943fb841e73d085b5d5d5a99dc87c263577def512b252b0726cede61fd047436cb0f6ca9eae47c2a6af71972eebe5bdeb063e5d0fee7d33f8ed5fdcd003900c9a490b2506cffeb62917465197ffec9b117b0cf04a1354ce305eb0cb733"
}

接受参数的时候用的 get 需要注意一下 具体的官方文档没给介绍 我用get可以接受到
其他的 包括验签之类的操作 需要自己来处理 包括 回调方法里处理订单的状态 我这里就不过多接受了

如果对你有用 一键三连

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wise man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值