<?php
/**
* 2015-06-29 修复签名问题
**/
require_once "WxPay.Config.php";
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();
}
}
/**
*
* 回调基础类
* @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 SetBody($value)
{
$this->values['body'] = $value;
}
/**
* 获取商品或支付单简要描述的值
* @return 值
**/
public function GetBody()
{
return $this->values['body'];
}
/**
* 判断商品或支付单简要描述是否存在
* @return true 或 false
**/
public f
没有合适的资源?快使用搜索试试~ 我知道了~
基于PHP的TPshop免费开源商城系统v3.5.2源码.zip
共2000个文件
php:806个
html:579个
js:212个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 40 浏览量
2023-08-29
00:06:09
上传
评论
收藏 76.49MB ZIP 举报
温馨提示
基于PHP的TPshop免费开源商城系统v3.5.2源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于PHP的TPshop免费开源商城系统v3.5.2源码.zip (2000个子文件)
acp_test_enc.cer 2KB
acp_test_verify_sign.cer 2KB
verify_sign_acp.cer 2KB
acp_prod_verify_sign.cer 1KB
xcb.cer 1KB
acp_prod_enc.cer 1KB
acp_test_middle.cer 1KB
acp_test_root.cer 1KB
acp_prod_middle.cer 1KB
acp_prod_root.cer 1KB
style.css 219KB
main.css 197KB
withdraw-style.css 189KB
tpshop.css 176KB
seller_center.css 173KB
bootstrap.css 138KB
bootstrap.min.css 115KB
bootstrap.min.css 115KB
detail.css 110KB
AdminLTE.css 102KB
myaccount.css 98KB
AdminLTE.min.css 81KB
success_index.css 73KB
edit_address.css 65KB
layui.css 61KB
tp-pc-decorate.css 53KB
alone_index.css 51KB
base.css 49KB
_all-skins.css 47KB
main.css 47KB
shop.css 45KB
ueditor.css 44KB
saved_resource(2).css 44KB
_all-skins.min.css 40KB
common.min.css 38KB
index.css 38KB
font-awesome-ie7.min.css 37KB
saved_resource.css 37KB
ueditor.min.css 34KB
return.sprite.css 33KB
tp-m-package.css 32KB
skin-green-ligt.css 31KB
jquery-ui.min.css 30KB
jquery-ui.min.css 29KB
tp-m-package_new.css 27KB
font-awesome.css 26KB
comment-detail.css 25KB
font-awesome.min.css 23KB
font-awesome.min.css 22KB
video-js.css 21KB
mobiscroll.custom.min.css 20KB
favorite.css 20KB
security_set.css 20KB
jh.css 19KB
image.css 19KB
jquery.datetimepicker.css 18KB
tp-pc-package.css 18KB
base.css 17KB
style.css 16KB
font-awesome.min.css 15KB
video.css 15KB
attachment.css 15KB
layer.css 14KB
layer.css 14KB
bootstrap-colorpicker.css 14KB
reg3.css 14KB
common.css 12KB
layer.css 11KB
withdraw-cash.css 11KB
video-js.min.css 11KB
jquery.qtip.min.css 11KB
install.css 11KB
layui.mobile.css 10KB
help.css 10KB
action.css 9KB
nv.d3.min.css 9KB
shCoreBlue.css 9KB
flash_sale_list.css 9KB
shCoreDefault2 - 副本.css 9KB
shCoreDefault2.css 9KB
laydate.css 8KB
shCoreEclipse.css 8KB
style.css 8KB
index.css 8KB
shCoreDjango.css 7KB
shCoreFadeToGrey.css 7KB
shCoreDefault.css 7KB
shCoreMidnight.css 7KB
shCoreRDark.css 7KB
laydate.css 7KB
shCoreEmacs.css 7KB
shCoreMDUltra.css 7KB
layer.css 7KB
shCoreDefault.css 7KB
viewer.min.css 7KB
bookmark.css 7KB
systemprompt.css 6KB
login.css 6KB
purebox.css 6KB
message_notice.css 6KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
易小侠
- 粉丝: 6453
- 资源: 9万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功