/**

* 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相关推荐

  1. GNU Make 使用手册(于凤昌中译版)

    GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...

  2. 面试:第十二章:所有总结

    Java基础 java基本类型哪些,所占字节 byte :1个字节 short :2个字节 char :2个字节 int :4个字节 long :8个字节 float :4个字节 double :8个 ...

  3. linux内核分析(转自某位大哥网上的笔记)

    启动 当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码.BIOS先进行一系列的系统自检,然后初始化位于地址0的中断 ...

  4. 微信小程序中嵌套html_微信小程序:web-view嵌套H5实现微信支付功能解决方案及填坑...

    ab7117c7d4947210c39e126a01d23ede.jpg 最近一个多月加班比较严重,偶尔休息一天也是在补睡眠+陪家人,比较长时间没有来进行总结记录了.今天不加班,开始为这段时间做的东西 ...

  5. h5封装去底部_干货分享 | 一步一步教你在SpringBoot中集成微信支付H5支付

    一:开发文档场景介绍 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付. 主要用于触屏版的手机浏览器请求微信支付的场景. ...

  6. SpringBoot中,使用WxJava SDK 实现微信小程序登录

    概述 WxJava SDK是一个比较实用的第三方微信开发 Java SDK github地址:https://github.com/Wechat-Group/WxJava SpringBoot项目中使 ...

  7. golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用

    RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...

  8. 总结一下在使用某里云服务器的过程中出现过的一些问题

    此文总结在使用阿里云的过程中出现过的问题   想起来就记录一下 本人为言行负责! 海内选择腾讯华为,共勉! k8s不同命名空间的配置文件串掉了 k8s集群服务器购买上后,无法使用外网.连续购买了4台然 ...

  9. Kubernetes 中 设置pod不部署在同一台节点上

    在k8s中,节点的调度主要由亲和性和污点来进行控制的.   而在亲和性部分由分为了节点亲和性和节点反亲和性.   节点亲和性是指在pod部署时,尽量(软策略)或者必须满足(硬策略)部署在某些节点上. ...

  10. 在Dockerfile中设置G1垃圾回收器参数

    在Dockerfile中设置G1垃圾回收器参数 ENV JAVA_OPTS="\ -server \ -XX:SurvivorRatio=8 \ -XX:+DisableExplicitGC ...

最新文章

  1. Java中比较两个Double类型数据的大小
  2. mysql 实现yyyyww_java – LocalDate无法使用’yyyy’解析’ww’
  3. linux方向键ascii_上下左右 方向键的ASCII码值是多少?
  4. SpringBoot @Value、 @ConfigurationProperties 与 @EnableConfigurationProperties 使用
  5. r语言中c函数错误,R语言中c()函数与paste()函数的区别说明
  6. lua的元表、模块和面向对象
  7. python最新版安装图集_[python] plist图集拆分小图
  8. 常用的自动化运维工具
  9. WinCC7.3 Win764位系统安装教程
  10. 框架分析--框架的类关系图
  11. 大地测量学基础 | 时间系统
  12. Human Muscles/Musculature (人体肌肉组织)
  13. gocv拆分颜色通道
  14. 镜像加速器——使用加速器可以提升获取Docker官方镜像的速度
  15. ANO匿名飞控分析(1)— 遥控器解码
  16. Wangle源码分析:Pipeline、Handler、Context
  17. pycharm-03-工程结构
  18. C++8/23——仿照string类,写一个my_string类
  19. jsp mysql留言板制作_Jsp+mysql 制作留言板
  20. 林子雨—大数据技术原理与应用—上机实验三

热门文章

  1. shell手册--笨鸟杰作
  2. Protobuf, understand the hood
  3. C#笔记(一):类型,泛型,集合
  4. 强大的.NET反编译工具Reflector及插件 (转)
  5. 设置tomcat 默认访问路径
  6. 好程序员大数据技术分享:Zookeeper集群管理与选举...
  7. 使用jquery获取ul中当前正在点击的li的索引
  8. 《哈利·波特》作者曾有自杀念头
  9. js后退一直停留在当前页面或者禁止后退
  10. 全面剖析Linux库文件路径的添加