代码初始化
This commit is contained in:
85
extend/TongLian/TongLian.php
Normal file
85
extend/TongLian/TongLian.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
|
||||
use think\Env;
|
||||
|
||||
class TongLian
|
||||
{
|
||||
/**
|
||||
* 通联支付
|
||||
*/
|
||||
public function TongLianPay($date, $type) {
|
||||
$data['appid'] = Env::get('AllinPay.appId');//平台分配的APPID
|
||||
$data['body'] = $date['remarke'];//订单标题(不能有空格)
|
||||
$data['cusid'] = Env::get('AllinPay.cusid');//平台分配的商户号
|
||||
$data['notify_url'] = get_system_config_value("web_site")."/api/Payment/allinpayNotify";//服务器异步通知页面路径
|
||||
if($type == 4){//4通联支付宝 5通联微信
|
||||
$data['paytype'] = 'A02';//支付方式 支付宝A02
|
||||
}elseif($type == 5){
|
||||
$data['paytype'] = 'W06';//支付方式 微信小程序固定W06
|
||||
}
|
||||
$data['randomstr'] = uniqid();//商户自行生成的随机字符串
|
||||
$data['remark'] = $type;//订单备注信息
|
||||
$data['reqsn'] = $date['order_sn'];//商户订单号
|
||||
$data['version'] = '12';//版本号 默认为12
|
||||
$data['trxamt'] = strval($date['money']*100);//付款金额 单位为分
|
||||
$data['signtype'] = 'RSA';//签名类型 RSA/RSA2/SM2
|
||||
$data['sign'] = $this->Sign($data);//签名
|
||||
|
||||
ksort($data);
|
||||
// var_dump($data);die;
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
//RSA签名
|
||||
public function Sign(array $array){
|
||||
ksort($array);
|
||||
$bufSignSrc = $this->ToUrlParams($array);
|
||||
//用商户的RSA私钥进行签名
|
||||
$private_key = Env::get('AllinPay.cusRsaPrivateKey');
|
||||
$private_key = chunk_split($private_key , 64, "\n");
|
||||
$key = "-----BEGIN RSA PRIVATE KEY-----\n".$private_key."-----END RSA PRIVATE KEY-----";
|
||||
|
||||
if(!openssl_sign($bufSignSrc, $signature, $key)) {
|
||||
echo 'sign fail';
|
||||
}
|
||||
//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
|
||||
return base64_encode($signature);
|
||||
}
|
||||
|
||||
//生成键值对字符串
|
||||
public function ToUrlParams(array $array)
|
||||
{
|
||||
$buff = "";
|
||||
foreach ($array as $k => $v)
|
||||
{
|
||||
if($v != "" && !is_array($v)){
|
||||
$buff .= $k . "=" . $v . "&";
|
||||
}
|
||||
}
|
||||
|
||||
$buff = trim($buff, "&");
|
||||
return $buff;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验签名
|
||||
* @param array 参数
|
||||
* @param unknown_type appkey
|
||||
*/
|
||||
public function ValidSign(array $array){
|
||||
$sign =$array['sign'];
|
||||
unset($array['sign']);
|
||||
ksort($array);
|
||||
|
||||
$bufSignSrc = $this->ToUrlParams($array);
|
||||
//通联的公钥进行验签
|
||||
$public_key = Env::get('AllinPay.allpayrsaPublicKey');
|
||||
$public_key = chunk_split($public_key , 64, "\n");
|
||||
$key = "-----BEGIN PUBLIC KEY-----\n".$public_key."-----END PUBLIC KEY-----\n";
|
||||
$result= openssl_verify($bufSignSrc,base64_decode($sign),$key);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user