1.下载快钱的demo代码和一个证书包,还有 人民币网关自助接入接口文档
php
2.生成本身的证书node
2.0.安装 Win32OpenSSL_Light-0_9_8k.exe浏览器
打开openssl.exe, 安全
2.1. 输入genrsa -out private-rsa.key 1024,按enter便可。ide
2.2 输入req -new -x509 -key private-rsa.key -days 750 -out public-rsa.cer,按enter,报错:post
Unable to load config info from /usr/local/ssl/openssl.cnf 测试
solution: 将openssl.cfg复制到 c:/usr/local/ssl/openssl.cnf (记得改后缀),就能成功执行第二条命令了;this
执行了之后输入一些国家缩写之类的信息(都不重要,随便写)加密
2.3.输入pkcs12 -export -name test-alias -in public-rsa.cer -inkey private-rsa.key -out 99bill-rsa.pfx,按enterspa
2.4. 输入密码 password , 总共2次;
2.5. 若是是使用PHP的商户,输入转换命令pkcs12 -in 99bill-rsa.pfx -passin pass:password -nodes -out 99bill-rsa.pem,按enter便可;
2.6.public-rsa.cer要上传到快钱账号上:安全设置--商户证书--商户证书上传
2.7.下载 RSA第一个证书;在receive页面要用到,这个证书是快钱的公钥;
memo:
》》signType = 4 ;
》》form表单中要有个字段signMsg, 是对其余非空参数用证书进行加密后再作个base64的转码。此处很是有可能会报20001说订单信息的签名内容不正确,缘由是你那些非空参数没有按照文档的顺序来排列!!!
好比inputCharset是第一个,而后到bgUrl。。。
>>
pageUrl 和 bgUrl的区别:pageUrl是用来测试本地的程序的,本地的程序99bill访问不到,因此此时应该pageUrl有值,bgUrl没有值。理由是,当bgUrl没有值的时候,发出的请求是直接在你本地的浏览器上用你给的地址作回调,因此就能访问到你本身的程序。
model_kqpay.php中:
"pageUrl" => $this->conf ['payback'],
"bgUrl" =>'',// $this->conf ['payback'],//本地测试的时候要置空
>>
无论是借记卡仍是信用卡,只要是快捷支付的方式,minimum也是1元。具体在快钱看到资金到账的时间由结算时间决定,可能要几天。
》》
$trans_body=substr($kq_check_all_para,0,strlen($kq_check_all_para)-1);
$MAC=base64_decode($_REQUEST["signMsg"]);//这里不能用$this->input->get_post(),可能会有字符被过滤
$filename = $this->conf['PgPubk_key'];//新下载的快钱公钥 (RSA证书)
$fp = fopen($filename, "r");
$cert = fread($fp, filesize($filename));
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);
$ok = openssl_verify($trans_body, $MAC, $pubkeyid); // ==1就是验证经过
>>
recieve页面要在orderAmount参数后面加上这两个参数,不然使用快捷支付的话,回调时报签名错误
//快捷支付须要 新加的参数 ! 2014-10-11
$kq_check_all_para.=$this->kq_ck_null($this->input->get_post('bindCard'),'bindCard');
$kq_check_all_para.=$this->kq_ck_null($this->input->get_post('bindMobile'),'bindMobile');