1.下载快钱的demo代码和一个证书包,还有 人民币网关自助接入接口文档


2.生成自己的证书

2.0.安装   Win32OpenSSL_Light-0_9_8k.exe

打开openssl.exe,  

2.1. 输入genrsa -out private-rsa.key 1024,按enter即可。

2.2 输入req -new -x509 -key private-rsa.key -days 750 -out public-rsa.cer,按enter,报错:

Unable to load config info from /usr/local/ssl/openssl.cnf  

solution: 将openssl.cfg复制到 c:/usr/local/ssl/openssl.cnf  (记得改后缀),就能成功执行第二条命令了;

执行了以后输入一些国家缩写之类的信息(都不重要,随便写)

2.3.输入pkcs12 -export -name test-alias -in public-rsa.cer -inkey private-rsa.key -out 99bill-rsa.pfx,按enter

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');