数字人民币,英文简称DCEP,就是digital currency(数字货币)和electronic payment(电子支付)。中国发行的官方数字货币,国家信用背书,受法律承认,谁要是不认这个,那就是在搞事情,是要负法律责任滴。与支付宝、微信支付的区别就是后者是支付渠道,想获得真金白银的提现到银行卡然后取出,而数字人民币本身就是真金白银,不用提现。
为了适应国家提出的数字人民币的普及化要求,各大银行开始对接和推广数字人民币的使用,本次要求在现有小程序商城的支付基础上新增“数字人民币”支付模式,建行本身提供了独立的数字人民币支付小程序,所以只要将该小程序接入原有支付体系即可。技术不说话干货搞起来。
获得建行接口关键参数和密钥。
首先是与银行联系开通相关账户,然后由银行提供主要参数包括:MERCHANTID【商户代码】,POSID【商户柜台代码】,BRANCHID【分行代码】。还有接口公钥,这个需要在建行商户官网平台登录后获得。
登录商户平台需要先申请证书,登录建行网站,下载“新版E路护航”,安装后根据提示完成操作,获得商户平台登录证书。
公钥获取的是商户服务平台/数字人民币板块的公钥,而不是总平台公钥。这两者是有区别的。
同时在服务平台还需填写支付回调地址信息,便于处理支付结果回调通知。
构建建行数字人民币支付网关下单参数
在小程序支付前,我们需要构建网关下单的参数链,最终提交时结构如下:
$epay_url = https://ch5.dcep.ccb.com/CCBIS/ccbMain_XM?CCB_IBSVersion=V6&MERCHANTID=105002653991975&POSID=042166601&BRANCHID=322000000&ORDERID=202201241515557833&PAYMENT=0.01&CURCODE=01&TXCODE=HT0000&REMARK1=bill&REMARK2=&RETURNTYPE=1&TIMEOUT=&MAC=daa34ac9601025550d43ec3929a06b9e&Mrch_url=https://www.baidu.com&TX_FLAG=3
各字段含义请配合建行接口文档查看和获取。其中关键的一点是MAC参数如何生成?
MAC参数生成原理:
$A = "MERCHANTID=105002653991975&POSID=042166601&BRANCHID=322000000&ORDERID=202201241515557833&PAYMENT=0.01&CURCODE=01&TXCODE=HT0000&REMARK1=bill&REMARK2=&RETURNTYPE=1&TIMEOUT="; //根据接口文档将需要加密的参数进行组合
$B = substr($PUBKEY,-30); //公钥的后30位B。
$MAC = md5($A.'&PUB='.$B); //MD5加密获得mac
最后将$MAC附加到请求参数串上使用。