<?php
/**
* 2015-06-29 修复签名问题
**/
require_once "WxPay.Exception.php";
/**
*
* 数据对象基础类,该类中定义数据类最基本的行为,包括:
* 计算/设置/获取签名、输出xml格式的参数、从xml读取数据对象等
* @author widyhu
*
*/
class WxPayDataBase
{
protected $values = array();
/**
* 设置签名,详见签名生成算法
* @param string $value
**/
public function SetSign()
{
$sign = $this->MakeSign();
$this->values['sign'] = $sign;
return $sign;
}
/**
* 获取签名,详见签名生成算法的值
* @return 值
**/
public function GetSign()
{
return $this->values['sign'];
}
/**
* 判断签名,详见签名生成算法是否存在
* @return true 或 false
**/
public function IsSignSet()
{
return array_key_exists('sign', $this->values);
}
/**
* 输出xml字符
* @throws WxPayException
**/
public function ToXml()
{
if(!is_array($this->values)
|| count($this->values) <= 0)
{
throw new WxPayException("数组数据异常!");
}
$xml = "<xml>";
foreach ($this->values as $key=>$val)
{
if (is_numeric($val)){
$xml.="<".$key.">".$val."</".$key.">";
}else{
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
$xml.="</xml>";
return $xml;
}
/**
* 将xml转为array
* @param string $xml
* @throws WxPayException
*/
public function FromXml($xml)
{
if(!$xml){
throw new WxPayException("xml数据异常!");
}
//将XML转为array
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$this->values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $this->values;
}
/**
* 格式化参数格式化成url参数
*/
public function ToUrlParams()
{
$buff = "";
foreach ($this->values as $k => $v)
{
if($k != "sign" && $v != "" && !is_array($v)){
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
/**
* 生成签名
* @return 签名,本函数不覆盖sign成员变量,如要设置签名需要调用SetSign方法赋值
*/
public function MakeSign()
{
//签名步骤一:按字典序排序参数
ksort($this->values);
$string = $this->ToUrlParams();
//签名步骤二:在string后加入KEY
$string = $string . "&key=".WxPayConfig::KEY;
//签名步骤三:MD5加密
$string = md5($string);
//签名步骤四:所有字符转为大写
$result = strtoupper($string);
return $result;
}
/**
* 获取设置的值
*/
public function GetValues()
{
return $this->values;
}
}
/**
*
* 接口调用结果类
* @author widyhu
*
*/
class WxPayResults extends WxPayDataBase
{
/**
*
* 检测签名
*/
public function CheckSign()
{
//fix异常
if(!$this->IsSignSet()){
throw new WxPayException("签名错误!");
}
$sign = $this->MakeSign();
if($this->GetSign() == $sign){
return true;
}
throw new WxPayException("签名错误!");
}
/**
*
* 使用数组初始化
* @param array $array
*/
public function FromArray($array)
{
$this->values = $array;
}
/**
*
* 使用数组初始化对象
* @param array $array
* @param 是否检测签名 $noCheckSign
*/
public static function InitFromArray($array, $noCheckSign = false)
{
$obj = new self();
$obj->FromArray($array);
if($noCheckSign == false){
$obj->CheckSign();
}
return $obj;
}
/**
*
* 设置参数
* @param string $key
* @param string $value
*/
public function SetData($key, $value)
{
$this->values[$key] = $value;
}
/**
* 将xml转为array
* @param string $xml
* @throws WxPayException
*/
public static function Init($xml)
{
$obj = new self();
$obj->FromXml($xml);
//fix bug 2015-06-29
if($obj->values['return_code'] != 'SUCCESS'){
return $obj->GetValues();
}
$obj->CheckSign();
return $obj->GetValues();
}
/**
* 将xml转为array(无签名校验)
* @param string $xml
* @throws WxPayException
*/
public static function Init2($xml)
{
$obj = new self();
$obj->FromXml($xml);
if($obj->values['return_code'] != 'SUCCESS'){
return $obj->GetValues();
}
return $obj->GetValues();
}
}
/**
*
* 回调基础类
* @author widyhu
*
*/
class WxPayNotifyReply extends WxPayDataBase
{
/**
*
* 设置错误码 FAIL 或者 SUCCESS
* @param string
*/
public function SetReturn_code($return_code)
{
$this->values['return_code'] = $return_code;
}
/**
*
* 获取错误码 FAIL 或者 SUCCESS
* @return string $return_code
*/
public function GetReturn_code()
{
return $this->values['return_code'];
}
/**
*
* 设置错误信息
* @param string $return_code
*/
public function SetReturn_msg($return_msg)
{
$this->values['return_msg'] = $return_msg;
}
/**
*
* 获取错误信息
* @return string
*/
public function GetReturn_msg()
{
return $this->values['return_msg'];
}
/**
*
* 设置返回参数
* @param string $key
* @param string $value
*/
public function SetData($key, $value)
{
$this->values[$key] = $value;
}
}
/**
*
* 统一下单输入对象
* @author widyhu
*
*/
class WxPayUnifiedOrder extends WxPayDataBase
{
/**
* 设置微信分配的公众账号ID
* @param string $value
**/
public function SetAppid($value)
{
$this->values['appid'] = $value;
}
/**
* 获取微信分配的公众账号ID的值
* @return 值
**/
public function GetAppid()
{
return $this->values['appid'];
}
/**
* 判断微信分配的公众账号ID是否存在
* @return true 或 false
**/
public function IsAppidSet()
{
return array_key_exists('appid', $this->values);
}
/**
* 设置微信支付分配的商户号
* @param string $value
**/
public function SetMch_id($value)
{
$this->values['mch_id'] = $value;
}
/**
* 获取微信支付分配的商户号的值
* @return 值
**/
public function GetMch_id()
{
return $this->values['mch_id'];
}
/**
* 判断微信支付分配的商户号是否存在
* @return true 或 false
**/
public function IsMch_idSet()
{
return array_key_exists('mch_id', $this->values);
}
/**
* 设置微信支付分配的终端设备号,商户自定义
* @param string $value
**/
public function SetDevice_info($value)
{
$this->values['device_info'] = $value;
}
/**
* 获取微信支付分配的终端设备号,商户自定义的值
* @return 值
**/
public function GetDevice_info()
{
return $this->values['device_info'];
}
/**
* 判断微信支付分配的终端设备号,商户自定义是否存在
* @return true 或 false
**/
public function IsDevice_infoSet()
{
return array_key_exists('device_info', $this->values);
}
/**
* 设置随机字符串,不长于32位。推荐随机数生成算法
* @param string $value
**/
public function SetNonce_str($value)
{
$this->values['nonce_str'] = $value;
}
/**
* 获取随机字符串,不长于32位。推荐随机数生成算法的值
* @return 值
**/
public function GetNonce_str()
{
return $this->values['nonce_str'];
}
/**
* 判断随机字符串,不长于32位。推荐随机数生成算法是否存在
* @return true 或 false
**/
public function IsNonce_strSet()
{
return array_key_exists('nonce_str', $this->values);
}
/**
* 设置商品或支付单简要描述
* @param string $value
**/
public function SetBod
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
最新版Pack 易支付源码 可对接官方接口/易支付/码支付 | 免签约做支付接口 网站信息/接口等配置文件改为数据库 后台一键修改更便捷 可对接 官方/易支付/码支付 (立即注册码支付) 【后台一键切换】 商品关键字拦截(如包含’刷钻’字符的商品无法发起付款) 程序可对接代刷网/发卡网等,带开发文档 独立支付通道(如支付宝可使用官方,QQ 可使用易支付,微信可以使用码支付) 商户自助授权(可收费可免费 后台设置) 邮箱/手机 发送验证码(后台设置) 安装说明: 运行 install 进行安装 后台地址:/admin 账号 admin 密码 123456 后台可以对接码支付平台 这个源码余额需要监控,大家可以使用 360 网站监控来监控。 监控地址:域名/cron.php 域名/crons.php 显示 OK 即为需要监控的网址
资源推荐
资源详情
资源评论
收起资源包目录
最新版Pack易支付网站源码 (372个子文件)
app.min.css 267KB
bootstrap.css 144KB
vendor.css 134KB
bootstrap.min.css 120KB
bootstrap.min.css 114KB
bootstrap.min.css 111KB
app.css 80KB
animate.css 69KB
animate.min.css 56KB
fontAwesome.css 39KB
font-awesome.min.css 30KB
bootstrap-theme.css 26KB
bootstrap-theme.min.css 23KB
bootstrap-theme.min.css 19KB
hero-slider.css 18KB
main.css 18KB
templatemo-style.css 16KB
layer.css 14KB
simple-line-icons.css 11KB
main.css 10KB
style.css 7KB
wechat_pay.css 6KB
userPay.css 5KB
layer.css 5KB
owl.transitions.css 4KB
owl-carousel.css 4KB
lightbox.css 4KB
lightbox.css 4KB
wechat_pay.css 4KB
alipay_pay.css 4KB
mqq_pay.css 4KB
owl.theme.css 2KB
owl.carousel.css 1KB
font.css 696B
Thumbs.db 76KB
Thumbs.db 48KB
Thumbs.db 36KB
Thumbs.db 13KB
Thumbs.db 8KB
Thumbs.db 4KB
fontawesome-webfont.eot 162KB
Simple-Line-Icons.eot 35KB
et-line.eot 32KB
et-line.eot 32KB
glyphicons-halflings-regular.eot 20KB
alipay.gif 13KB
tenpay.gif 12KB
loading.gif 8KB
loading.gif 8KB
weixin.gif 7KB
loading-0.gif 6KB
load.gif 3KB
loading-2.gif 2KB
AjaxLoader.gif 1KB
loading-1.gif 701B
index.html 28KB
index.html 10KB
agreement.html 10KB
alipay.ico 4KB
wechat.ico 1KB
qqpay.ico 1KB
tenpay.ico 1KB
portfolio_big_item_01.jpg 622KB
portfolio_big_item_05.jpg 594KB
portfolio_big_item_04.jpg 535KB
portfolio_big_item_02.jpg 280KB
Slide.jpg 250KB
Testimonials.jpg 233KB
Slide2.jpg 145KB
banner_bg.jpg 129KB
about-bg.jpg 114KB
Slide3.jpg 112KB
portfolio_big_item_06.jpg 90KB
blog-bg.jpg 90KB
portfolio_big_item_03.jpg 84KB
blog_item_04.jpg 72KB
1.jpg 62KB
5.jpg 61KB
blog_item_03.jpg 55KB
6.jpg 52KB
blog_item_01.jpg 48KB
4.jpg 48KB
3.jpg 47KB
2.jpg 47KB
blog_item_02.jpg 46KB
portfolio_item_05.jpg 45KB
portfolio_item_01.jpg 43KB
portfolio_item_04.jpg 36KB
MikeDoe.jpg 27KB
JasonDoe.jpg 26KB
MariaDoe.jpg 25KB
portfolio_item_02.jpg 16KB
weixin-qrcode.1xf1oN.jpg 12KB
portfolio_item_03.jpg 8KB
qqpay.jpg 7KB
portfolio_item_06.jpg 6KB
qqpay.jpg 6KB
p0.jpg 3KB
weixin.jpg 3KB
alipay.jpg 2KB
共 372 条
- 1
- 2
- 3
- 4
资源评论
避其锋芒
- 粉丝: 6
- 资源: 46
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功