招商银行一网通支付(php接入招商银行一网通支付)

接入招商银行的目的,可以得到银行的补贴。生活中我在商城停车扫码付费时,可以选择招商银行一网通支付,停车费8元,可以随机减1到3元。补贴是银行设置的,是银行处理的,不需要商户操作(这点做的很好,比其它银行好多了),用户在付钱之前并不知道减多少钱,付款后才能知道减了多少,这种情况被用户薅羊毛的可能性小,并且银行来控制优惠,也可以减少商户的风险。


商户平台:https://pay.cmbchina.com
文档:http://openhome.cmbchina.com/PayNew/pay/home
签名和验签文档:http://openhome.cmbchina.com/PayNew/pay/doc/cell/H5/SignatureCheck
开发时间:1到2天
开发时,银行会创建沟通群,我在开发完成时测试帐号,有些不能使用,和银行沟通,银行回复很快,基本可以马上得到解决。
有详细的文档,无php开发demo


开发流程:
1.一网通支付API,http://openhome.cmbchina.com/PayNew/pay/doc/cell/H5/OneCardPayAPI
生成对应的字段,生成一个签名(没有demo,要自己写,写个签名函数即可,如果不会写可以找我要,因为是自己写的也在使用中,不方便公开),通过from表单跳转到银行即可。

2.支付成功回调,http://openhome.cmbchina.com/PayNew/pay/doc/cell/H5/SuccessPayAPI
收到到数据验证签名,执行自己的操作即可
//验签
function cmbchinapay_verification($para,$sign) {
    global $global_config_data;

    ksort($para);
    $arg  = "";
    foreach ($para as $key=>$val) {
        $arg.=$key.'='.$val.'&';
    }
    //去掉最后一个&字符
    $arg = substr($arg,0,count($arg)-2);
    //如果存在转义字符,那么去掉转义
    if(get_magic_quotes_gpc()){
        $arg = stripslashes($arg);
    }
    //处理证书
    $pem = chunk_split($global_config_data["cmbchinapay_publicKey"], 64, "\n");
    $pem = "-----BEGIN PUBLIC KEY-----\n" . $pem . "-----END PUBLIC KEY-----\n";
    $pkid = openssl_pkey_get_public($pem);
    //验证
    $ok = (bool)openssl_verify($arg, base64_decode($sign), $pkid, OPENSSL_ALGO_SHA1);
    Common::writeLog("cmbchinapay_verification","str:{$arg},res:{$ok}");
    return $ok;
}

你可能感兴趣的:(招商银行一网通支付(php接入招商银行一网通支付))