<?php
/**
* 2015-06-29 修复签名问题
**/
require_once PAY_ROOT."inc/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);
}
/**
* 微信分配的子商户公众账号ID
* @param string $value
**/
public function SetSubAppid($value)
{
$this->values['sub_appid'] = $value;
}
/**
* 获取微信分配的子商户公众账号ID
* @return 值
**/
public function GetSubAppid()
{
return $this->values['sub_appid'];
}
/**
* 判断微信分配的子商户公众账号ID是否存在
* @return true 或 false
**/
public function IsSubAppidSet()
{
return array_key_exists('sub_appid', $this->values);
}
/**
* 设置微信支付分配的子商户号
* @param string $value
**/
public function SetSubMch_id($value)
{
$this->values['sub_mch_id'] = $value;
}
/**
* 获取微信支付分配的子商户号的值
* @return 值
**/
public function GetSubMch_id()
{
return $this->values['sub_mch_id'];
}
/**
* 判断微信支付分配的子商户号是否存在
* @return true 或 false
**/
public function IsSubMch_idSet()
{
return array_key_exists('sub_mch_id', $this->values);
}
/**
* 设置微信支付分配的终端设备号,商户自定义
* @param string $value
**/
public function SetDevice_info($value)
{
$this->values['device_info'] = $value;
}
/**
* 获取微信支付分配的终端设备号�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【最新超完整的易支付源码】开源+批量生成商户+即时到账功能+自动提现功能 1、支持批量生成商户 2、支付查看订单信息 3、支持各种程序对接 4、可以自定义网站信息 5、自带开发文档和对接官方和第三方支付的SDK 6、即时到账功能,别家的是没有的哦。 7、支持QQ、支付宝快捷登录功能。(默认开启) 8、自动提现功能。(本功能属于订单操作,需要人为转账后确认自动提现订单即可。) 9、附带12套前台模板,后台直接切换即可! 安装步骤: 源码上传至虚拟机或者服务器 访问域名/install.php 安装,后台地址: 域名/admin 账号 admin 密码 123456
资源推荐
资源详情
资源评论
收起资源包目录
【最新超完整的易支付源码】开源+批量生成商户+即时到账功能+自动提现功能 (826个子文件)
app.min.css 357KB
bootstrap.min.css 117KB
main.css 84KB
app.css 80KB
animate.css 74KB
animate.min.css 68KB
style.css 65KB
common_1107.css 64KB
animate.min.css 62KB
animate.min.css 56KB
style.css 56KB
style.min.css 49KB
animations.min.css 39KB
aos.css 31KB
aos.css 31KB
aos.css 25KB
responsive.css 22KB
style.css 20KB
common.css 19KB
bootstrap_1107.css 19KB
index.css 17KB
style.css 16KB
layer.css 14KB
responsive.css 13KB
index720.css 12KB
index_main.css 12KB
index960.css 12KB
index1200.css 11KB
main12.css 11KB
bootstrap-chosen.css 11KB
media.css 10KB
index-top.css 8KB
style.css 8KB
as.css 8KB
nucleo.css 7KB
mobiriseicons.css 6KB
owl.theme.css 6KB
magnific-popup.css 6KB
style.css 6KB
layer.css 5KB
reset.css 5KB
common_contact.css 4KB
header_common.css 4KB
default.css 4KB
wechat_pay.css 4KB
alipay_pay.css 4KB
mqq_pay.css 4KB
jd_pay.css 4KB
owl.carousel_1107.css 4KB
idangerous.swiper2.7.6.css 3KB
owl.carousel.min.css 3KB
qietu.css 2KB
style-responsive.min.css 2KB
orange.css 2KB
blue.css 2KB
purple.css 2KB
red.css 2KB
default.css 2KB
iconfont.css 1KB
default.css 1KB
captcha.css 1KB
font.css 696B
alipay.gif 13KB
tenpay.gif 12KB
weixin.gif 7KB
loading-0.gif 6KB
loading-0.gif 6KB
load.gif 3KB
loading.gif 3KB
loading.gif 2KB
loading-2.gif 2KB
loading-2.gif 2KB
loading-1.gif 701B
loading-1.gif 701B
loading.gif 457B
.htaccess 284B
.htaccess 13B
.htaccess 13B
bank.ico 66KB
logo1.ico 25KB
jdpay.ico 25KB
favicon.ico 17KB
alipay.ico 4KB
wechat.ico 1KB
wxpay.ico 1KB
tenpay.ico 1KB
qqpay.ico 1KB
config.ini 1KB
config.ini 771B
config.ini 741B
config.ini 739B
config.ini 715B
config.ini 706B
config.ini 706B
config.ini 683B
config.ini 660B
config.ini 653B
config.ini 653B
config.ini 649B
config.ini 645B
共 826 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
- Ddkeji85952024-08-25资源值得借鉴的内容很多,那就浅学一下吧,值得下载!
破碎的天堂鸟
- 粉丝: 7522
- 资源: 1935
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功