Baru-baru ini saya sedang mengusahakan akses pembayaran kod QR bank Selepas mendapatkan dokumen, terdapat beberapa perkara yang saya tidak faham dengan baik.
1. Memuat turun kunci persendirian (.sm2) dan kunci awam (.cer) sijil yang ditandatangani dan mengimport kunci awam secara langsung Saya tidak tahu cara menggunakan sijil kunci persendirian
2 saya menggunakan demo PHP, PHP Kod memanggil LAJP untuk memanggil persekitaran JAVA untuk ditandatangani. Data yang diperoleh selepas melog masuk demo php tidak boleh melepasi pengesahan tandatangan ujian Saya tidak tahu langkah mana yang salah
Lampiran demo ujian pada halaman web: http://wxpay.cmbc.com.cn/. cmbc...< br>Fungsi tandatangan tempatan yang disediakan:
<?php
require_once("php_java.php");//Memetik skrip PHP yang disediakan oleh LAJP
cubalah
{
$signAlg = $_REQUEST['signAlg'];
$base64SourceData = $_REQUEST['base64SourceData'];
$base64P12Data = $_REQUEST['base64P12Data'];
$p12Kata Laluan = $_REQUEST['p12Kata Laluan'];
$ret = lajp_call("cfca.sadk.api.SignatureKit::P1SignMessage", $signAlg,$base64SourceData, $base64P12Data,$p12Password);
echo "{$ret}<br>";
}
tangkapan(Pengecualian $e)
{
echo "Err:{$e}<br>";
}
?><a href="index.html">kembali</a>
一、第一個問題,帶證書,應(yīng)該使用curl
/**
* 作用:使用證書,以post方式提交xml到對應(yīng)的接口url
*/
function postXmlSSLCurl($xml, $url, $second = 30, $wxpay_config) {
$ch = curl_init();
//超時時間
curl_setopt($ch, CURLOPT_TIMEOUT, $second);
//這里設(shè)置代理,如果有的話
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//設(shè)置header
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//要求結(jié)果為字符串且輸出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
//設(shè)置證書
//使用證書:cert 與 key 分別屬于兩個.pem文件
//默認(rèn)格式為PEM,可以注釋
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
curl_setopt($ch, CURLOPT_SSLCERT, $wxpay_config['SSLCERT_PATH']);
//默認(rèn)格式為PEM,可以注釋
curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
curl_setopt($ch, CURLOPT_SSLKEY, $wxpay_config['SSLKEY_PATH']);
//post提交方式
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
$data = curl_exec($ch);
//返回結(jié)果
if ($data) {
curl_close($ch);
return $data;
} else {
$error = curl_errno($ch);
echo "curl出錯,錯誤碼:$error" . "<br>";
// echo "<a ;
curl_close($ch);
return false;
}
}
二、簽名的話
你試著用PHP同樣的參數(shù)自己生產(chǎn)簽名跟java環(huán)境比對看看。一般來說應(yīng)該是不能共用的吧。之前遇到過app里面的微信支付通過php生成的簽名給過來app用,這個之前好像是行不通的。