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