提交 f95044ef 编写于 作者: D devil_gong

支付插件优化

上级 bac5a807
......@@ -75,7 +75,6 @@ class Alipay
'name' => 'rsa_public',
'placeholder' => '应用公钥',
'title' => '应用公钥',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写应用公钥',
......@@ -85,7 +84,6 @@ class Alipay
'name' => 'rsa_private',
'placeholder' => '应用私钥',
'title' => '应用私钥',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写应用私钥',
......@@ -95,7 +93,6 @@ class Alipay
'name' => 'out_rsa_public',
'placeholder' => '支付宝公钥',
'title' => '支付宝公钥',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写支付宝公钥',
......@@ -551,9 +548,14 @@ class Alipay
*/
private function MyRsaSign($prestr)
{
$res = "-----BEGIN RSA PRIVATE KEY-----\n";
$res .= wordwrap($this->config['rsa_private'], 64, "\n", true);
$res .= "\n-----END RSA PRIVATE KEY-----";
if(stripos($this->config['rsa_private'], '-----') === false)
{
$res = "-----BEGIN RSA PRIVATE KEY-----\n";
$res .= wordwrap($this->config['rsa_private'], 64, "\n", true);
$res .= "\n-----END RSA PRIVATE KEY-----";
} else {
$res = $this->config['rsa_private'];
}
return openssl_sign($prestr, $sign, $res, OPENSSL_ALGO_SHA256) ? base64_encode($sign) : null;
}
......@@ -568,9 +570,14 @@ class Alipay
*/
private function MyRsaDecrypt($content)
{
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
if(stripos($this->config['rsa_public'], '-----') === false)
{
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
} else {
$res = $this->config['rsa_public'];
}
$res = openssl_get_privatekey($res);
$content = base64_decode($content);
$result = '';
......@@ -596,9 +603,14 @@ class Alipay
*/
private function OutRsaVerify($prestr, $sign)
{
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['out_rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
if(stripos($this->config['out_rsa_public'], '-----') === false)
{
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['out_rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
} else {
$res = $this->config['out_rsa_public'];
}
$pkeyid = openssl_pkey_get_public($res);
$sign = base64_decode($sign);
if($pkeyid)
......
......@@ -75,7 +75,6 @@ class AlipayMini
'name' => 'rsa_public',
'placeholder' => '应用公钥',
'title' => '应用公钥',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写应用公钥',
......@@ -85,7 +84,6 @@ class AlipayMini
'name' => 'rsa_private',
'placeholder' => '应用私钥',
'title' => '应用私钥',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写应用私钥',
......@@ -95,7 +93,6 @@ class AlipayMini
'name' => 'out_rsa_public',
'placeholder' => '支付宝公钥',
'title' => '支付宝公钥',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写支付宝公钥',
......@@ -411,9 +408,14 @@ class AlipayMini
*/
private function MyRsaSign($prestr)
{
$res = "-----BEGIN RSA PRIVATE KEY-----\n";
$res .= wordwrap($this->config['rsa_private'], 64, "\n", true);
$res .= "\n-----END RSA PRIVATE KEY-----";
if(stripos($this->config['rsa_private'], '-----') === false)
{
$res = "-----BEGIN RSA PRIVATE KEY-----\n";
$res .= wordwrap($this->config['rsa_private'], 64, "\n", true);
$res .= "\n-----END RSA PRIVATE KEY-----";
} else {
$res = $this->config['rsa_private'];
}
return openssl_sign($prestr, $sign, $res, OPENSSL_ALGO_SHA256) ? base64_encode($sign) : null;
}
......@@ -428,9 +430,14 @@ class AlipayMini
*/
private function MyRsaDecrypt($content)
{
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
if(stripos($this->config['rsa_public'], '-----') === false)
{
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
} else {
$res = $this->config['rsa_public'];
}
$res = openssl_get_privatekey($res);
$content = base64_decode($content);
$result = '';
......@@ -456,9 +463,14 @@ class AlipayMini
*/
private function OutRsaVerify($prestr, $sign)
{
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['out_rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
if(stripos($this->config['out_rsa_public'], '-----') === false)
{
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['out_rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
} else {
$res = $this->config['out_rsa_public'];
}
$pkeyid = openssl_pkey_get_public($res);
$sign = base64_decode($sign);
if($pkeyid)
......
......@@ -85,7 +85,6 @@ class BaiduMini
'name' => 'rsa_public',
'placeholder' => '应用公钥',
'title' => '应用公钥',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写应用公钥',
......@@ -95,7 +94,6 @@ class BaiduMini
'name' => 'rsa_private',
'placeholder' => '应用私钥',
'title' => '应用私钥',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写应用私钥',
......@@ -105,7 +103,6 @@ class BaiduMini
'name' => 'out_rsa_public',
'placeholder' => '平台公钥',
'title' => '平台公钥',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写平台公钥',
......@@ -239,9 +236,14 @@ class BaiduMini
return $sign;
}
$res = "-----BEGIN RSA PRIVATE KEY-----\n";
$res .= wordwrap($this->config['rsa_private'], 64, "\n", true);
$res .= "\n-----END RSA PRIVATE KEY-----";
if(stripos($this->config['rsa_private'], '-----') === false)
{
$res = "-----BEGIN RSA PRIVATE KEY-----\n";
$res .= wordwrap($this->config['rsa_private'], 64, "\n", true);
$res .= "\n-----END RSA PRIVATE KEY-----";
} else {
$res = $this->config['rsa_private'];
}
$prikey = openssl_pkey_get_private($res);
if(isset($data['sign']))
......@@ -295,9 +297,14 @@ class BaiduMini
$sign = base64_decode($sign);
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['out_rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
if(stripos($this->config['out_rsa_public'], '-----') === false)
{
$res = "-----BEGIN PUBLIC KEY-----\n";
$res .= wordwrap($this->config['out_rsa_public'], 64, "\n", true);
$res .= "\n-----END PUBLIC KEY-----";
} else {
$res = $this->config['out_rsa_public'];
}
$pubkey = openssl_pkey_get_public($res);
$result = (bool)openssl_verify($str, $sign, $pubkey);
openssl_free_key($pubkey);
......
此差异已折叠。
......@@ -119,7 +119,6 @@ class QQ
'name' => 'apiclient_cert',
'placeholder' => '证书(apiclient_cert.pem)',
'title' => '证书(apiclient_cert.pem)(退款操作必填项)',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写证书(apiclient_cert.pem)',
......@@ -129,7 +128,6 @@ class QQ
'name' => 'apiclient_key',
'placeholder' => '证书密钥(apiclient_key.pem)',
'title' => '证书密钥(apiclient_key.pem)(退款操作必填项)',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写证书密钥(apiclient_key.pem)',
......@@ -592,15 +590,25 @@ class QQ
$apiclient_cert_file = ROOT.'runtime'.DS.'temp'.DS.'payment_qq_pay_apiclient_cert.pem';
$apiclient_key_file = ROOT.'runtime'.DS.'temp'.DS.'payment_qq_pay_apiclient_key.pem';
// 文件是否存在
$apiclient_cert = "-----BEGIN CERTIFICATE-----\n";
$apiclient_cert .= wordwrap($this->config['apiclient_cert'], 64, "\n", true);
$apiclient_cert .= "\n-----END CERTIFICATE-----";
// 证书处理
if(stripos($this->config['apiclient_cert'], '-----') === false)
{
$apiclient_cert = "-----BEGIN CERTIFICATE-----\n";
$apiclient_cert .= wordwrap($this->config['apiclient_cert'], 64, "\n", true);
$apiclient_cert .= "\n-----END CERTIFICATE-----";
} else {
$apiclient_cert = $this->config['apiclient_cert'];
}
file_put_contents($apiclient_cert_file, $apiclient_cert);
$apiclient_key = "-----BEGIN PRIVATE KEY-----\n";
$apiclient_key .= wordwrap($this->config['apiclient_key'], 64, "\n", true);
$apiclient_key .= "\n-----END PRIVATE KEY-----";
if(stripos($this->config['apiclient_key'], '-----') === false)
{
$apiclient_key = "-----BEGIN PRIVATE KEY-----\n";
$apiclient_key .= wordwrap($this->config['apiclient_key'], 64, "\n", true);
$apiclient_key .= "\n-----END PRIVATE KEY-----";
} else {
$apiclient_key = $this->config['apiclient_key'];
}
file_put_contents($apiclient_key_file, $apiclient_key);
return ['cert' => $apiclient_cert_file, 'key' => $apiclient_key_file];
......
......@@ -106,7 +106,6 @@ class Weixin
'name' => 'apiclient_cert',
'placeholder' => '证书(apiclient_cert.pem)',
'title' => '证书(apiclient_cert.pem)(退款操作必填项)',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写证书(apiclient_cert.pem)',
......@@ -116,7 +115,6 @@ class Weixin
'name' => 'apiclient_key',
'placeholder' => '证书密钥(apiclient_key.pem)',
'title' => '证书密钥(apiclient_key.pem)(退款操作必填项)',
'desc' => '去除以 -- 开头结尾的字符和换行',
'is_required' => 0,
'rows' => 6,
'message' => '请填写证书密钥(apiclient_key.pem)',
......@@ -694,6 +692,7 @@ class Weixin
$apiclient_cert_file = ROOT.'runtime'.DS.'temp'.DS.'payment_weixin_pay_apiclient_cert.pem';
$apiclient_key_file = ROOT.'runtime'.DS.'temp'.DS.'payment_weixin_pay_apiclient_key.pem';
// 证书处理
if(stripos($this->config['apiclient_cert'], '-----') === false)
{
$apiclient_cert = "-----BEGIN CERTIFICATE-----\n";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册