php中paynotify,PayNotifyValidator.php
/**
* Created by hw.
* User: Weblinuxgame
* Date: 2018-07-25
* Time: 17:28
*/
namespace weblinuxgame;
/**
* 验证器 通用签名算法
* Class GameTqSDk
* @package TqSdk
*/
class PayNotifyValidator
{
const ERROR_EMPTY = 0; // 空参数异常
const ERROR_SIGN = -1; // 签名异常
const ERROR_PAY_TIME = -2; // 时间异常
const ERROR_STATUS = -3; // 状态异常
const ERROR_MONEY = -4; // 数额异常
const ERROR_MEM_ID = -5; // 用户信息异常
const ERROR_ORDER = -6; // 数据异常
const ERROR_UNDEFINED = -7; // 未知异常
const IS_PAYED = 2; // 已完成
const TIME_OUT_LEN = 1339200; // 一个月
const VERIFY_OK = 1; // 参数校验成功
const IS_DEAL_OK = 1; // 处理完成
const IS_DEALING = 3; // 处理失败
/**
* 签名 数组
* @var array
*/
protected static $sign_vars = [
];
/**
* 校验 数据签名
* @param $params
* @param $sign
* @param $app_key
* @return bool
*/
public static function verifySign($params, $sign, $app_key)
{
if (empty($params) || empty($sign) || !is_string($sign)) {
return false;
}
$sign_str = '';
foreach (self::$sign_vars as $key) {
if (empty($key) || !isset($params[$key])) {
return false;
}
$sign_str .= (empty($sign_str) ? '' : '&') . $key . '=' . $params[$key];
}
if (empty($sign_str)) {
return false;
}
$sign_str .= '&app_key=' . $app_key;
return $sign === md5($sign_str);
}
/**
* 参数校验
* @param array $params 接收到的回调参数
* @param string $appKey 平台颁发的 app_key
* @return bool|int
*/
public static function verify($params = [], $appKey = '')
{
if (empty($params) || !is_array($params)) {
return self::ERROR_EMPTY;
}
$time = TimeStamp::get();
try {
if(self::verifySign($params,$params['sign'],$appKey)){
// todo logic
}
} catch (\Exception $e) {
return self::ERROR_UNDEFINED;
}
return self::VERIFY_OK;
}
}
一键复制
编辑
Web IDE
原始数据
按行查看
历史
php中paynotify,PayNotifyValidator.php相关推荐
- GNU Make 使用手册(于凤昌中译版)
GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...
- 面试:第十二章:所有总结
Java基础 java基本类型哪些,所占字节 byte :1个字节 short :2个字节 char :2个字节 int :4个字节 long :8个字节 float :4个字节 double :8个 ...
- linux内核分析(转自某位大哥网上的笔记)
启动 当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码.BIOS先进行一系列的系统自检,然后初始化位于地址0的中断 ...
- 微信小程序中嵌套html_微信小程序:web-view嵌套H5实现微信支付功能解决方案及填坑...
ab7117c7d4947210c39e126a01d23ede.jpg 最近一个多月加班比较严重,偶尔休息一天也是在补睡眠+陪家人,比较长时间没有来进行总结记录了.今天不加班,开始为这段时间做的东西 ...
- h5封装去底部_干货分享 | 一步一步教你在SpringBoot中集成微信支付H5支付
一:开发文档场景介绍 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付. 主要用于触屏版的手机浏览器请求微信支付的场景. ...
- SpringBoot中,使用WxJava SDK 实现微信小程序登录
概述 WxJava SDK是一个比较实用的第三方微信开发 Java SDK github地址:https://github.com/Wechat-Group/WxJava SpringBoot项目中使 ...
- golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用
RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...
- 总结一下在使用某里云服务器的过程中出现过的一些问题
此文总结在使用阿里云的过程中出现过的问题 想起来就记录一下 本人为言行负责! 海内选择腾讯华为,共勉! k8s不同命名空间的配置文件串掉了 k8s集群服务器购买上后,无法使用外网.连续购买了4台然 ...
- Kubernetes 中 设置pod不部署在同一台节点上
在k8s中,节点的调度主要由亲和性和污点来进行控制的. 而在亲和性部分由分为了节点亲和性和节点反亲和性. 节点亲和性是指在pod部署时,尽量(软策略)或者必须满足(硬策略)部署在某些节点上. ...
- 在Dockerfile中设置G1垃圾回收器参数
在Dockerfile中设置G1垃圾回收器参数 ENV JAVA_OPTS="\ -server \ -XX:SurvivorRatio=8 \ -XX:+DisableExplicitGC ...
最新文章
- Java中比较两个Double类型数据的大小
- mysql 实现yyyyww_java – LocalDate无法使用’yyyy’解析’ww’
- linux方向键ascii_上下左右 方向键的ASCII码值是多少?
- SpringBoot @Value、 @ConfigurationProperties 与 @EnableConfigurationProperties 使用
- r语言中c函数错误,R语言中c()函数与paste()函数的区别说明
- lua的元表、模块和面向对象
- python最新版安装图集_[python] plist图集拆分小图
- 常用的自动化运维工具
- WinCC7.3 Win764位系统安装教程
- 框架分析--框架的类关系图
- 大地测量学基础 | 时间系统
- Human Muscles/Musculature (人体肌肉组织)
- gocv拆分颜色通道
- 镜像加速器——使用加速器可以提升获取Docker官方镜像的速度
- ANO匿名飞控分析(1)— 遥控器解码
- Wangle源码分析:Pipeline、Handler、Context
- pycharm-03-工程结构
- C++8/23——仿照string类,写一个my_string类
- jsp mysql留言板制作_Jsp+mysql 制作留言板
- 林子雨—大数据技术原理与应用—上机实验三