sifangpay/app/Services/PayServices.php

94 lines
2.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Services;
use http\Env\Request;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redis;
class PayServices
{
//
/**
* 数字签名
* server_id 商户id
* token 商户token密钥
* 价格,回调地址,异步回调,订单号,随机字符串,做md5加密
* ksort之后拼接字符串转换成小写,然后md5加密
* @param $data
* @return bool
*/
public function sign($data,$is_verfy=0){
//必填参数
$must_arr=[
'token',
'app_id',
'money',
'return_url',
'notify_url',
'out_trade_sn'
];
foreach ($must_arr as $k=>$v)
{
if(!key_exists($v,$data))
{
return ['error'=>1,'msg'=>'签名参数缺少'];
}
}
$data['money']=money_str($data['money'],2,'.','');
//排序
ksort($data);
//
$strkey = $this->toUrlParams($data);
//转换小写
$app_signature=strtolower($strkey);
//Log::info("md5 before:".$app_signature);
//MD5加密
$app_signature = md5($app_signature);
//Log::info("md5 end:".$app_signature);
//回调验证
if($is_verfy)
{
$app_signature=md5($data['token'].$app_signature);//token+之前的签名经行md5加密
}
return $app_signature;
}
public function toUrlParams( $params ){
$string = '';
if( !empty($params) ){
$array = array();
foreach( $params as $key => $value ){
$array[] = $key.'='.$value;
}
$string = implode("&",$array);
}
return $string;
}
/**
*
* @param $data 参数携带token
* @param $sign 过来的sign
* @return bool 真验证成功,否失败
*/
public function checkSign($data,$sign,$is_verfy=0){
$site_sign=$this->sign($data,$is_verfy);
if(is_array($site_sign))
{
return false;
}
if($site_sign!=$sign)
{
return false;
}
return true;
}
}