Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jamesyang1999
ShopXO
提交
8909bb68
ShopXO
项目概览
jamesyang1999
/
ShopXO
与 Fork 源项目一致
Fork自
纵之格 / ShopXO
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8909bb68
编写于
5月 29, 2019
作者:
D
devil_gong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debug
上级
119d84ee
变更
29
展开全部
隐藏空白更改
内联
并排
Showing
29 changed file
with
54 addition
and
8982 deletion
+54
-8982
application/index/controller/Order.php
application/index/controller/Order.php
+4
-3
application/index/view/default/order/index.html
application/index/view/default/order/index.html
+14
-2
application/index/view/default/orderaftersale/aftersale.html
application/index/view/default/orderaftersale/aftersale.html
+12
-16
application/service/OrderService.php
application/service/OrderService.php
+6
-5
extend/payment/Weixin.php
extend/payment/Weixin.php
+18
-22
public/php_sdk_v3.0.10/doc/README
public/php_sdk_v3.0.10/doc/README
+0
-55
public/php_sdk_v3.0.10/doc/README.doc
public/php_sdk_v3.0.10/doc/README.doc
+0
-0
public/php_sdk_v3.0.10/example/WxPay.Config.php
public/php_sdk_v3.0.10/example/WxPay.Config.php
+0
-116
public/php_sdk_v3.0.10/example/WxPay.JsApiPay.php
public/php_sdk_v3.0.10/example/WxPay.JsApiPay.php
+0
-230
public/php_sdk_v3.0.10/example/WxPay.MicroPay.php
public/php_sdk_v3.0.10/example/WxPay.MicroPay.php
+0
-166
public/php_sdk_v3.0.10/example/WxPay.NativePay.php
public/php_sdk_v3.0.10/example/WxPay.NativePay.php
+0
-76
public/php_sdk_v3.0.10/example/download.php
public/php_sdk_v3.0.10/example/download.php
+0
-60
public/php_sdk_v3.0.10/example/index.php
public/php_sdk_v3.0.10/example/index.php
+0
-68
public/php_sdk_v3.0.10/example/jsapi.php
public/php_sdk_v3.0.10/example/jsapi.php
+0
-138
public/php_sdk_v3.0.10/example/log.php
public/php_sdk_v3.0.10/example/log.php
+0
-125
public/php_sdk_v3.0.10/example/micropay.php
public/php_sdk_v3.0.10/example/micropay.php
+0
-73
public/php_sdk_v3.0.10/example/native.php
public/php_sdk_v3.0.10/example/native.php
+0
-73
public/php_sdk_v3.0.10/example/native_notify.php
public/php_sdk_v3.0.10/example/native_notify.php
+0
-124
public/php_sdk_v3.0.10/example/notify.php
public/php_sdk_v3.0.10/example/notify.php
+0
-105
public/php_sdk_v3.0.10/example/orderquery.php
public/php_sdk_v3.0.10/example/orderquery.php
+0
-77
public/php_sdk_v3.0.10/example/phpqrcode/phpqrcode.php
public/php_sdk_v3.0.10/example/phpqrcode/phpqrcode.php
+0
-3312
public/php_sdk_v3.0.10/example/qrcode.php
public/php_sdk_v3.0.10/example/qrcode.php
+0
-15
public/php_sdk_v3.0.10/example/refund.php
public/php_sdk_v3.0.10/example/refund.php
+0
-101
public/php_sdk_v3.0.10/example/refundquery.php
public/php_sdk_v3.0.10/example/refundquery.php
+0
-112
public/php_sdk_v3.0.10/lib/WxPay.Api.php
public/php_sdk_v3.0.10/lib/WxPay.Api.php
+0
-620
public/php_sdk_v3.0.10/lib/WxPay.Config.Interface.php
public/php_sdk_v3.0.10/lib/WxPay.Config.Interface.php
+0
-76
public/php_sdk_v3.0.10/lib/WxPay.Data.php
public/php_sdk_v3.0.10/lib/WxPay.Data.php
+0
-3094
public/php_sdk_v3.0.10/lib/WxPay.Exception.php
public/php_sdk_v3.0.10/lib/WxPay.Exception.php
+0
-13
public/php_sdk_v3.0.10/lib/WxPay.Notify.php
public/php_sdk_v3.0.10/lib/WxPay.Notify.php
+0
-105
未找到文件。
application/index/controller/Order.php
浏览文件 @
8909bb68
...
...
@@ -76,9 +76,10 @@ class Order extends Common
// 获取列表
$data_params
=
array
(
'm'
=>
$page
->
GetPageStarNumber
(),
'n'
=>
$number
,
'where'
=>
$where
,
'm'
=>
$page
->
GetPageStarNumber
(),
'n'
=>
$number
,
'where'
=>
$where
,
'is_orderaftersale'
=>
1
,
);
$data
=
OrderService
::
OrderList
(
$data_params
);
$this
->
assign
(
'data_list'
,
$data
[
'data'
]);
...
...
application/index/view/default/order/index.html
浏览文件 @
8909bb68
...
...
@@ -189,13 +189,25 @@
<a
href=
"{{:MyUrl('index/orderaftersale/aftersale', ['oid'=>$order['id'], 'did'=>$goods['id']])}}"
target=
"_blank"
>
{{switch $order.status}}
{{case 2|3}}
退款/退货
{{if empty($goods['orderaftersale'])}}
退款/退货
{{else /}}
<span
class=
"am-text-secondary"
>
查看进度
</span>
{{/if}}
{{/case}}
{{case 4}}
申请售后
{{/case}}
{{case 6}}
查看退款
{{if empty($goods['orderaftersale']) or $goods['orderaftersale'] eq 5}}
申请售后
{{else /}}
{{if $goods['orderaftersale']['status'] eq 3}}
<span
class=
"am-text-success"
>
查看退款
</span>
{{else /}}
<span
class=
"am-text-secondary"
>
查看进度
</span>
{{/if}}
{{/if}}
{{/case}}
{{/switch}}
</a>
...
...
application/index/view/default/orderaftersale/aftersale.html
浏览文件 @
8909bb68
...
...
@@ -100,22 +100,12 @@
</div>
<!-- 是否存在进行中的数据 -->
{{if empty($new_aftersale_data) or (isset($new_aftersale_data['status']) and
in_array($new_aftersale_data['status'], [4,5])
)}}
{{if empty($new_aftersale_data) or (isset($new_aftersale_data['status']) and
$new_aftersale_data['status'] eq 5
)}}
<!-- 拒绝/关闭 -->
{{if isset($new_aftersale_data['status']) and in_array($new_aftersale_data['status'], [3,4])}}
{{switch $new_aftersale_data.status}}
{{case 4}}
<div
class=
"am-alert am-alert-danger"
>
当前订单商品售后申请已被拒绝!
<a
href=
"#"
>
详情查看
</a>
</div>
{{/case}}
{{case 5}}
<div
class=
"am-alert am-alert-warning"
>
当前订单商品售后申请已关闭!
<a
href=
"#"
>
详情查看
</a>
</div>
{{/case}}
{{/switch}}
{{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] eq 5}}
<div
class=
"am-alert am-alert-warning"
>
当前订单商品售后申请已关闭!
<a
href=
"{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}"
>
详情查看
</a>
</div>
{{/if}}
<!-- 类型 -->
...
...
@@ -179,11 +169,17 @@
当前订单商品售后已处理结束!
<a
href=
"{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}"
>
详情查看
</a>
</div>
{{/case}}
{{case 4}}
<div
class=
"am-alert am-alert-danger"
>
当前订单商品售后申请已被拒绝!
<a
href=
"{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}"
>
详情查看
</a>
</div>
{{/case}}
{{/switch}}
{{/if}}
<!-- 详情 -->
{{if !empty($new_aftersale_data)}}
{{if !empty($new_aftersale_data)
and $new_aftersale_data['status'] neq 5
}}
<div
class=
"detail"
>
<div
class=
"am-u-md-6 apply-container"
>
<div
class=
"am-panel am-panel-default"
>
...
...
application/service/OrderService.php
浏览文件 @
8909bb68
...
...
@@ -623,6 +623,7 @@ class OrderService
$order_by
=
empty
(
$params
[
'order_by'
])
?
'id desc'
:
$params
[
'order_by'
];
$is_items
=
isset
(
$params
[
'is_items'
])
?
intval
(
$params
[
'is_items'
])
:
1
;
$is_excel_export
=
isset
(
$params
[
'is_excel_export'
])
?
intval
(
$params
[
'is_excel_export'
])
:
0
;
$is_orderaftersale
=
isset
(
$params
[
'is_orderaftersale'
])
?
intval
(
$params
[
'is_orderaftersale'
])
:
0
;
// 获取订单
$data
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
limit
(
$m
,
$n
)
->
order
(
$order_by
)
->
select
();
...
...
@@ -753,11 +754,11 @@ class OrderService
$excel_export_items
.
=
"
\n
"
;
}
// 是否获取售后信息
//
if($is_orderaftersale == 1)
//
{
// $items['orderaftersale'] = Db::name('OrderAftersale')->where(['order_detail_id'=>$vs['id']]
)->find();
//
}
// 是否获取
最新一条
售后信息
if
(
$is_orderaftersale
==
1
)
{
$vs
[
'orderaftersale'
]
=
Db
::
name
(
'OrderAftersale'
)
->
where
([
'order_detail_id'
=>
$vs
[
'id'
]])
->
order
(
'id desc'
)
->
find
();
}
}
}
else
{
$buy_number_count
=
Db
::
name
(
'OrderDetail'
)
->
where
([
'order_id'
=>
$v
[
'id'
]])
->
sum
(
'buy_number'
);
...
...
extend/payment/Weixin.php
浏览文件 @
8909bb68
...
...
@@ -173,9 +173,8 @@ class Weixin
return
$ret
;
}
// xml
$xml
=
$this
->
ArrayToXml
(
$ret
[
'data'
]);
$result
=
$this
->
XmlToArray
(
$this
->
HttpRequest
(
'https://api.mch.weixin.qq.com/pay/unifiedorder'
,
$xml
));
// 请求接口处理
$result
=
$this
->
XmlToArray
(
$this
->
HttpRequest
(
'https://api.mch.weixin.qq.com/pay/unifiedorder'
,
$this
->
ArrayToXml
(
$ret
[
'data'
])));
if
(
!
empty
(
$result
[
'return_code'
])
&&
$result
[
'return_code'
]
==
'SUCCESS'
&&
!
empty
(
$result
[
'prepay_id'
]))
{
return
$this
->
PayHandleReturn
(
$ret
[
'data'
],
$result
,
$params
);
...
...
@@ -505,11 +504,8 @@ class Weixin
];
$data
[
'sign'
]
=
$this
->
GetSign
(
$data
);
// xml
$xml
=
$this
->
ArrayToXml
(
$data
);
// echo $xml;die;
$result
=
$this
->
XmlToArray
(
$this
->
HttpRequest
(
'https://api.mch.weixin.qq.com/secapi/pay/refund'
,
$xml
,
true
));
print_r
(
$result
);
die
;
// 请求接口处理
$result
=
$this
->
XmlToArray
(
$this
->
HttpRequest
(
'https://api.mch.weixin.qq.com/secapi/pay/refund'
,
$this
->
ArrayToXml
(
$data
),
true
));
if
(
!
empty
(
$result
[
'return_code'
])
&&
$result
[
'return_code'
]
==
'SUCCESS'
&&
!
empty
(
$result
[
'prepay_id'
]))
{
// 统一返回格式
...
...
@@ -640,25 +636,25 @@ class Weixin
if
(
$use_cert
==
true
)
{
//
$apiclient_cert = "-----BEGIN CERTIFICATE-----\n";
//
$apiclient_cert .= wordwrap($this->config['apiclient_cert'], 64, "\n", true);
//
$apiclient_cert .= "\n-----END CERTIFICATE-----";
$apiclient_cert
=
"-----BEGIN CERTIFICATE-----
\n
"
;
$apiclient_cert
.
=
wordwrap
(
$this
->
config
[
'apiclient_cert'
],
64
,
"
\n
"
,
true
);
$apiclient_cert
.
=
"
\n
-----END CERTIFICATE-----"
;
//
$apiclient_key = "-----BEGIN PRIVATE KEY-----\n";
//
$apiclient_key .= wordwrap($this->config['apiclient_key'], 64, "\n", true);
//
$apiclient_key .= "\n-----END PRIVATE KEY-----";
$apiclient_key
=
"-----BEGIN PRIVATE KEY-----
\n
"
;
$apiclient_key
.
=
wordwrap
(
$this
->
config
[
'apiclient_key'
],
64
,
"
\n
"
,
true
);
$apiclient_key
.
=
"
\n
-----END PRIVATE KEY-----"
;
//
$options[CURLOPT_SSLCERTTYPE] = 'PEM';
//
$options[CURLOPT_SSLCERT] = $apiclient_cert;
//
$options[CURLOPT_SSLKEYTYPE] = 'PEM';
//
$options[CURLOPT_SSLKEY] = $apiclient_key;
$options
[
CURLOPT_SSLCERTTYPE
]
=
'PEM'
;
$options
[
CURLOPT_SSLCERT
]
=
$apiclient_cert
;
$options
[
CURLOPT_SSLKEYTYPE
]
=
'PEM'
;
$options
[
CURLOPT_SSLKEY
]
=
$apiclient_key
;
//设置证书
//使用证书:cert 与 key 分别属于两个.pem文件
$options
[
CURLOPT_SSLCERTTYPE
]
=
'PEM'
;
$options
[
CURLOPT_SSLCERT
]
=
ROOT
.
'cert/apiclient_cert.pem'
;
$options
[
CURLOPT_SSLKEYTYPE
]
=
'PEM'
;
$options
[
CURLOPT_SSLKEY
]
=
ROOT
.
'cert/apiclient_key.pem'
;
//
$options[CURLOPT_SSLCERTTYPE] = 'PEM';
//
$options[CURLOPT_SSLCERT] = ROOT.'cert/apiclient_cert.pem';
//
$options[CURLOPT_SSLKEYTYPE] = 'PEM';
//
$options[CURLOPT_SSLKEY] = ROOT.'cert/apiclient_key.pem';
}
$ch
=
curl_init
(
$url
);
...
...
public/php_sdk_v3.0.10/doc/README
已删除
100755 → 0
浏览文件 @
119d84ee
SDK
体验地址
http://paysdk.weixin.qq.com/
快速搭建指南
①、安装配置nginx+phpfpm+php
②、建SDK解压到网站根目录
③、修改lib/WxPay.Config.php为自己申请的商户号的信息(配置详见说明)
⑤、下载证书替换cert下的文件
⑥、搭建完成
SDK目录结构
|-- lib
|-- logs
`-- example
目录功能简介
lib
API接口封装代码
WxPay.Api.php 包括所有微信支付API接口的封装
WxPay.Config.Interface.php 商户配置 , 业务需要从这里继承(请注意保管自己的密钥/证书等)
WxPay.Data.php 输入参数封装
WxPay.Exception.php 异常类
WxPay.Notify.php 回调通知基类
cert
证书存放路径,证书可以登录商户平台https://pay.weixin.qq.com/index.php/account/api_cert下载
注意:
1.证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载;
2.建议将证书文件名改为复杂且不容易猜测的文件名;
3.商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件。
example
样例程序代码路径
example/phpqrcode
开源二维码php代码
logs
日志文件
※配置指南
MCHID = '1225312702';
这里填开户邮件中的商户号
APPID = 'wx426b3015555a46be';
这里填开户邮件中的(公众账号APPID或者应用APPID)
KEY = 'e10adc3949ba59abbe56e057f20f883e'
这里请使用商户平台登录账户和密码登录http://pay.weixin.qq.com 平台设置的“API密钥”,为了安全,请设置为32字符串。
APPSECRET = '01c6d59a3f9024db6336662ac95c8e74'
改参数在JSAPI支付(open平台账户不能进行JSAPI支付)的时候需要用来获取用户openid,可使用APPID对应的公众平台登录http://mp.weixin.qq.com 的开发者中心获取AppSecret。
public/php_sdk_v3.0.10/doc/README.doc
已删除
100755 → 0
浏览文件 @
119d84ee
文件已删除
public/php_sdk_v3.0.10/example/WxPay.Config.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Config.Interface.php"
;
/**
*
* 该类需要业务自己继承, 该类只是作为deamon使用
* 实际部署时,请务必保管自己的商户密钥,证书等
*
*/
class
WxPayConfig
extends
WxPayConfigInterface
{
//=======【基本信息设置】=====================================
/**
* TODO: 修改这里配置为您自己申请的商户信息
* 微信公众号信息配置
*
* APPID:绑定支付的APPID(必须配置,开户邮件中可查看)
*
* MCHID:商户号(必须配置,开户邮件中可查看)
*
*/
public
function
GetAppId
()
{
return
'wxf5f83b5f3d0591ad'
;
}
public
function
GetMerchantId
()
{
return
'1491834862'
;
}
//=======【支付相关配置:支付成功回调地址/签名方式】===================================
/**
* TODO:支付回调url
* 签名和验证签名方式, 支持md5和sha256方式
**/
public
function
GetNotifyUrl
()
{
return
"https://dev.ccxqc.com/"
;
}
public
function
GetSignType
()
{
return
"HMAC-SHA256"
;
}
//=======【curl代理设置】===================================
/**
* TODO:这里设置代理机器,只有需要代理的时候才设置,不需要代理,请设置为0.0.0.0和0
* 本例程通过curl使用HTTP POST方法,此处可修改代理服务器,
* 默认CURL_PROXY_HOST=0.0.0.0和CURL_PROXY_PORT=0,此时不开启代理(如有需要才设置)
* @var unknown_type
*/
public
function
GetProxy
(
&
$proxyHost
,
&
$proxyPort
)
{
$proxyHost
=
"0.0.0.0"
;
$proxyPort
=
0
;
}
//=======【上报信息配置】===================================
/**
* TODO:接口调用上报等级,默认紧错误上报(注意:上报超时间为【1s】,上报无论成败【永不抛出异常】,
* 不会影响接口调用流程),开启上报之后,方便微信监控请求调用的质量,建议至少
* 开启错误上报。
* 上报等级,0.关闭上报; 1.仅错误出错上报; 2.全量上报
* @var int
*/
public
function
GetReportLevenl
()
{
return
1
;
}
//=======【商户密钥信息-需要业务方继承】===================================
/*
* KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置), 请妥善保管, 避免密钥泄露
* 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert
*
* APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置), 请妥善保管, 避免密钥泄露
* 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN
* @var string
*/
public
function
GetKey
()
{
return
'd3169008589dff3c111083da4a59255f'
;
}
public
function
GetAppSecret
()
{
return
'd3169008589dff3c111083da4a59255f'
;
}
//=======【证书路径设置-需要业务方继承】=====================================
/**
* TODO:设置商户证书路径
* 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要,可登录商户平台下载,
* API证书下载地址:https://pay.weixin.qq.com/index.php/account/api_cert,下载之前需要安装商户操作证书)
* 注意:
* 1.证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载;
* 2.建议将证书文件名改为复杂且不容易猜测的文件名;
* 3.商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件。
* @var path
*/
public
function
GetSSLCertPath
(
&
$sslCertPath
,
&
$sslKeyPath
)
{
$sslCertPath
=
'/www/wwwroot/test.shopxo.net/shopxo/cert/apiclient_cert.pem'
;
$sslKeyPath
=
'/www/wwwroot/test.shopxo.net/shopxo/cert/apiclient_key.pem'
;
}
}
public/php_sdk_v3.0.10/example/WxPay.JsApiPay.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
"WxPay.Config.php"
;
/**
*
* JSAPI支付实现类
* 该类实现了从微信公众平台获取code、通过code获取openid和access_token、
* 生成jsapi支付js接口所需的参数、生成获取共享收货地址所需的参数
*
* 该类是微信支付提供的样例程序,商户可根据自己的需求修改,或者使用lib中的api自行开发
*
* @author widy
*
*/
class
JsApiPay
{
/**
*
* 网页授权接口微信服务器返回的数据,返回样例如下
* {
* "access_token":"ACCESS_TOKEN",
* "expires_in":7200,
* "refresh_token":"REFRESH_TOKEN",
* "openid":"OPENID",
* "scope":"SCOPE",
* "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
* }
* 其中access_token可用于获取共享收货地址
* openid是微信支付jsapi支付接口必须的参数
* @var array
*/
public
$data
=
null
;
/**
*
* 通过跳转获取用户的openid,跳转流程如下:
* 1、设置自己需要调回的url及其其他参数,跳转到微信服务器https://open.weixin.qq.com/connect/oauth2/authorize
* 2、微信服务处理完成之后会跳转回用户redirect_uri地址,此时会带上一些参数,如:code
*
* @return 用户的openid
*/
public
function
GetOpenid
()
{
//通过code获得openid
if
(
!
isset
(
$_GET
[
'code'
])){
//触发微信返回code码
$baseUrl
=
urlencode
(
'http://'
.
$_SERVER
[
'HTTP_HOST'
]
.
$_SERVER
[
'REQUEST_URI'
]
.
$_SERVER
[
'QUERY_STRING'
]);
$url
=
$this
->
_CreateOauthUrlForCode
(
$baseUrl
);
Header
(
"Location:
$url
"
);
exit
();
}
else
{
//获取code码,以获取openid
$code
=
$_GET
[
'code'
];
$openid
=
$this
->
getOpenidFromMp
(
$code
);
return
$openid
;
}
}
/**
*
* 获取jsapi支付的参数
* @param array $UnifiedOrderResult 统一支付接口返回的数据
* @throws WxPayException
*
* @return json数据,可直接填入js函数作为参数
*/
public
function
GetJsApiParameters
(
$UnifiedOrderResult
)
{
if
(
!
array_key_exists
(
"appid"
,
$UnifiedOrderResult
)
||
!
array_key_exists
(
"prepay_id"
,
$UnifiedOrderResult
)
||
$UnifiedOrderResult
[
'prepay_id'
]
==
""
)
{
throw
new
WxPayException
(
"参数错误"
);
}
$jsapi
=
new
WxPayJsApiPay
();
$jsapi
->
SetAppid
(
$UnifiedOrderResult
[
"appid"
]);
$timeStamp
=
time
();
$jsapi
->
SetTimeStamp
(
"
$timeStamp
"
);
$jsapi
->
SetNonceStr
(
WxPayApi
::
getNonceStr
());
$jsapi
->
SetPackage
(
"prepay_id="
.
$UnifiedOrderResult
[
'prepay_id'
]);
$config
=
new
WxPayConfig
();
$jsapi
->
SetPaySign
(
$jsapi
->
MakeSign
(
$config
));
$parameters
=
json_encode
(
$jsapi
->
GetValues
());
return
$parameters
;
}
/**
*
* 通过code从工作平台获取openid机器access_token
* @param string $code 微信跳转回来带上的code
*
* @return openid
*/
public
function
GetOpenidFromMp
(
$code
)
{
$url
=
$this
->
__CreateOauthUrlForOpenid
(
$code
);
//初始化curl
$ch
=
curl_init
();
$curlVersion
=
curl_version
();
$config
=
new
WxPayConfig
();
$ua
=
"WXPaySDK/3.0.9 ("
.
PHP_OS
.
") PHP/"
.
PHP_VERSION
.
" CURL/"
.
$curlVersion
[
'version'
]
.
" "
.
$config
->
GetMerchantId
();
//设置超时
curl_setopt
(
$ch
,
CURLOPT_TIMEOUT
,
$this
->
curl_timeout
);
curl_setopt
(
$ch
,
CURLOPT_URL
,
$url
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYPEER
,
FALSE
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYHOST
,
FALSE
);
curl_setopt
(
$ch
,
CURLOPT_USERAGENT
,
$ua
);
curl_setopt
(
$ch
,
CURLOPT_HEADER
,
FALSE
);
curl_setopt
(
$ch
,
CURLOPT_RETURNTRANSFER
,
TRUE
);
$proxyHost
=
"0.0.0.0"
;
$proxyPort
=
0
;
$config
->
GetProxy
(
$proxyHost
,
$proxyPort
);
if
(
$proxyHost
!=
"0.0.0.0"
&&
$proxyPort
!=
0
){
curl_setopt
(
$ch
,
CURLOPT_PROXY
,
$proxyHost
);
curl_setopt
(
$ch
,
CURLOPT_PROXYPORT
,
$proxyPort
);
}
//运行curl,结果以jason形式返回
$res
=
curl_exec
(
$ch
);
curl_close
(
$ch
);
//取出openid
$data
=
json_decode
(
$res
,
true
);
$this
->
data
=
$data
;
$openid
=
$data
[
'openid'
];
return
$openid
;
}
/**
*
* 拼接签名字符串
* @param array $urlObj
*
* @return 返回已经拼接好的字符串
*/
private
function
ToUrlParams
(
$urlObj
)
{
$buff
=
""
;
foreach
(
$urlObj
as
$k
=>
$v
)
{
if
(
$k
!=
"sign"
){
$buff
.
=
$k
.
"="
.
$v
.
"&"
;
}
}
$buff
=
trim
(
$buff
,
"&"
);
return
$buff
;
}
/**
*
* 获取地址js参数
*
* @return 获取共享收货地址js函数需要的参数,json格式可以直接做参数使用
*/
public
function
GetEditAddressParameters
()
{
$config
=
new
WxPayConfig
();
$getData
=
$this
->
data
;
$data
=
array
();
$data
[
"appid"
]
=
$config
->
GetAppId
();
$data
[
"url"
]
=
"http://"
.
$_SERVER
[
'HTTP_HOST'
]
.
$_SERVER
[
'REQUEST_URI'
];
$time
=
time
();
$data
[
"timestamp"
]
=
"
$time
"
;
$data
[
"noncestr"
]
=
WxPayApi
::
getNonceStr
();
$data
[
"accesstoken"
]
=
$getData
[
"access_token"
];
ksort
(
$data
);
$params
=
$this
->
ToUrlParams
(
$data
);
$addrSign
=
sha1
(
$params
);
$afterData
=
array
(
"addrSign"
=>
$addrSign
,
"signType"
=>
"sha1"
,
"scope"
=>
"jsapi_address"
,
"appId"
=>
$config
->
GetAppId
(),
"timeStamp"
=>
$data
[
"timestamp"
],
"nonceStr"
=>
$data
[
"noncestr"
]
);
$parameters
=
json_encode
(
$afterData
);
return
$parameters
;
}
/**
*
* 构造获取code的url连接
* @param string $redirectUrl 微信服务器回跳的url,需要url编码
*
* @return 返回构造好的url
*/
private
function
_CreateOauthUrlForCode
(
$redirectUrl
)
{
$config
=
new
WxPayConfig
();
$urlObj
[
"appid"
]
=
$config
->
GetAppId
();
$urlObj
[
"redirect_uri"
]
=
"
$redirectUrl
"
;
$urlObj
[
"response_type"
]
=
"code"
;
$urlObj
[
"scope"
]
=
"snsapi_base"
;
$urlObj
[
"state"
]
=
"STATE"
.
"#wechat_redirect"
;
$bizString
=
$this
->
ToUrlParams
(
$urlObj
);
return
"https://open.weixin.qq.com/connect/oauth2/authorize?"
.
$bizString
;
}
/**
*
* 构造获取open和access_toke的url地址
* @param string $code,微信跳转带回的code
*
* @return 请求的url
*/
private
function
__CreateOauthUrlForOpenid
(
$code
)
{
$config
=
new
WxPayConfig
();
$urlObj
[
"appid"
]
=
$config
->
GetAppId
();
$urlObj
[
"secret"
]
=
$config
->
GetAppSecret
();
$urlObj
[
"code"
]
=
$code
;
$urlObj
[
"grant_type"
]
=
"authorization_code"
;
$bizString
=
$this
->
ToUrlParams
(
$urlObj
);
return
"https://api.weixin.qq.com/sns/oauth2/access_token?"
.
$bizString
;
}
}
public/php_sdk_v3.0.10/example/WxPay.MicroPay.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
"WxPay.Config.php"
;
/**
*
* 刷卡支付实现类
* 该类实现了一个刷卡支付的流程,流程如下:
* 1、提交刷卡支付
* 2、根据返回结果决定是否需要查询订单,如果查询之后订单还未变则需要返回查询(一般反复查10次)
* 3、如果反复查询10订单依然不变,则发起撤销订单
* 4、撤销订单需要循环撤销,一直撤销成功为止(注意循环次数,建议10次)
*
* 该类是微信支付提供的样例程序,商户可根据自己的需求修改,或者使用lib中的api自行开发,为了防止
* 查询时hold住后台php进程,商户查询和撤销逻辑可在前端调用
*
* @author widy
*
*/
class
MicroPay
{
/**
*
* 提交刷卡支付,并且确认结果,接口比较慢
* @param WxPayMicroPay $microPayInput
* @throws WxpayException
* @return 返回查询接口的结果
*/
public
function
pay
(
$microPayInput
)
{
//①、提交被扫支付
$config
=
new
WxPayConfig
();
$result
=
WxPayApi
::
micropay
(
$config
,
$microPayInput
,
5
);
//如果返回成功
if
(
!
array_key_exists
(
"return_code"
,
$result
)
||
!
array_key_exists
(
"result_code"
,
$result
))
{
echo
"接口调用失败,请确认是否输入是否有误!"
;
throw
new
WxPayException
(
"接口调用失败!"
);
}
//取订单号
$out_trade_no
=
$microPayInput
->
GetOut_trade_no
();
//②、接口调用成功,明确返回调用失败
if
(
$result
[
"return_code"
]
==
"SUCCESS"
&&
$result
[
"result_code"
]
==
"FAIL"
&&
$result
[
"err_code"
]
!=
"USERPAYING"
&&
$result
[
"err_code"
]
!=
"SYSTEMERROR"
)
{
return
false
;
}
//③、确认支付是否成功
$queryTimes
=
10
;
while
(
$queryTimes
>
0
)
{
$succResult
=
0
;
$queryResult
=
$this
->
query
(
$out_trade_no
,
$succResult
);
//如果需要等待1s后继续
if
(
$succResult
==
2
){
sleep
(
2
);
continue
;
}
else
if
(
$succResult
==
1
){
//查询成功
return
$queryResult
;
}
else
{
//订单交易失败
break
;
}
}
//④、次确认失败,则撤销订单
if
(
!
$this
->
cancel
(
$out_trade_no
))
{
throw
new
WxpayException
(
"撤销单失败!"
);
}
return
false
;
}
/**
*
* 查询订单情况
* @param string $out_trade_no 商户订单号
* @param int $succCode 查询订单结果
* @return 0 订单不成功,1表示订单成功,2表示继续等待
*/
public
function
query
(
$out_trade_no
,
&
$succCode
)
{
$queryOrderInput
=
new
WxPayOrderQuery
();
$queryOrderInput
->
SetOut_trade_no
(
$out_trade_no
);
$config
=
new
WxPayConfig
();
try
{
$result
=
WxPayApi
::
orderQuery
(
$config
,
$queryOrderInput
);
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
if
(
$result
[
"return_code"
]
==
"SUCCESS"
&&
$result
[
"result_code"
]
==
"SUCCESS"
)
{
//支付成功
if
(
$result
[
"trade_state"
]
==
"SUCCESS"
){
$succCode
=
1
;
return
$result
;
}
//用户支付中
else
if
(
$result
[
"trade_state"
]
==
"USERPAYING"
){
$succCode
=
2
;
return
false
;
}
}
//如果返回错误码为“此交易订单号不存在”则直接认定失败
if
(
$result
[
"err_code"
]
==
"ORDERNOTEXIST"
)
{
$succCode
=
0
;
}
else
{
//如果是系统错误,则后续继续
$succCode
=
2
;
}
return
false
;
}
/**
*
* 撤销订单,如果失败会重复调用10次
* @param string $out_trade_no
* @param 调用深度 $depth
*/
public
function
cancel
(
$out_trade_no
,
$depth
=
0
)
{
try
{
if
(
$depth
>
10
){
return
false
;
}
$clostOrder
=
new
WxPayReverse
();
$clostOrder
->
SetOut_trade_no
(
$out_trade_no
);
$config
=
new
WxPayConfig
();
$result
=
WxPayApi
::
reverse
(
$config
,
$clostOrder
);
//接口调用失败
if
(
$result
[
"return_code"
]
!=
"SUCCESS"
){
return
false
;
}
//如果结果为success且不需要重新调用撤销,则表示撤销成功
if
(
$result
[
"result_code"
]
!=
"SUCCESS"
&&
$result
[
"recall"
]
==
"N"
){
return
true
;
}
else
if
(
$result
[
"recall"
]
==
"Y"
)
{
return
$this
->
cancel
(
$out_trade_no
,
++
$depth
);
}
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
return
false
;
}
}
\ No newline at end of file
public/php_sdk_v3.0.10/example/WxPay.NativePay.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
"WxPay.Config.php"
;
require_once
'log.php'
;
/**
*
* 刷卡支付实现类
* @author widyhu
*
*/
class
NativePay
{
/**
*
* 生成扫描支付URL,模式一
* @param BizPayUrlInput $bizUrlInfo
*/
public
function
GetPrePayUrl
(
$productId
)
{
$biz
=
new
WxPayBizPayUrl
();
$biz
->
SetProduct_id
(
$productId
);
try
{
$config
=
new
WxPayConfig
();
$values
=
WxpayApi
::
bizpayurl
(
$config
,
$biz
);
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
$url
=
"weixin://wxpay/bizpayurl?"
.
$this
->
ToUrlParams
(
$values
);
return
$url
;
}
/**
*
* 参数数组转换为url参数
* @param array $urlObj
*/
private
function
ToUrlParams
(
$urlObj
)
{
$buff
=
""
;
foreach
(
$urlObj
as
$k
=>
$v
)
{
$buff
.
=
$k
.
"="
.
$v
.
"&"
;
}
$buff
=
trim
(
$buff
,
"&"
);
return
$buff
;
}
/**
*
* 生成直接支付url,支付url有效期为2小时,模式二
* @param UnifiedOrderInput $input
*/
public
function
GetPayUrl
(
$input
)
{
if
(
$input
->
GetTrade_type
()
==
"NATIVE"
)
{
try
{
$config
=
new
WxPayConfig
();
$result
=
WxPayApi
::
unifiedOrder
(
$config
,
$input
);
return
$result
;
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
}
return
false
;
}
}
\ No newline at end of file
public/php_sdk_v3.0.10/example/download.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
"WxPay.Config.php"
;
require_once
'log.php'
;
//初始化日志
$logHandler
=
new
CLogFileHandler
(
"../logs/"
.
date
(
'Y-m-d'
)
.
'.log'
);
$log
=
Log
::
Init
(
$logHandler
,
15
);
if
((
isset
(
$_REQUEST
[
"bill_date"
])
&&
!
preg_match
(
"/^[0-9-]
{
6,64
}
$/i"
,
$_REQUEST
[
"bill_date"
],
$matches
))
||
(
isset
(
$_REQUEST
[
"bill_type"
])
&&
!
preg_match
(
"/^[A-Z]
{
1,64
}
$/i"
,
$_REQUEST
[
"bill_type"
],
$matches
)))
{
header
(
'HTTP/1.1 404 Not Found'
);
exit
();
}
if
(
isset
(
$_REQUEST
[
"bill_date"
])
&&
$_REQUEST
[
"bill_date"
]
!=
""
){
$bill_date
=
$_REQUEST
[
"bill_date"
];
$bill_type
=
$_REQUEST
[
"bill_type"
];
$input
=
new
WxPayDownloadBill
();
$input
->
SetBill_date
(
$bill_date
);
$input
->
SetBill_type
(
$bill_type
);
$config
=
new
WxPayConfig
();
$file
=
WxPayApi
::
downloadBill
(
$config
,
$input
);
echo
htmlspecialchars
(
$file
,
ENT_QUOTES
);
//TODO 对账单文件处理
exit
(
0
);
}
?>
<html>
<head>
<meta
http-equiv=
"content-type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<title>
微信支付样例-查退款单
</title>
</head>
<body>
<form
action=
"#"
method=
"post"
>
<div
style=
"margin-left:2%;"
>
对账日期:
</div><br/>
<input
type=
"text"
style=
"width:96%;height:35px;margin-left:2%;"
name=
"bill_date"
/><br
/><br
/>
<div
style=
"margin-left:2%;"
>
账单类型:
</div><br/>
<select
style=
"width:96%;height:35px;margin-left:2%;"
name=
"bill_type"
>
<option
value =
"ALL"
>
所有订单信息
</option>
<option
value =
"SUCCESS"
>
成功支付的订单
</option>
<option
value=
"REFUND"
>
退款订单
</option>
<option
value=
"REVOKED"
>
撤销的订单
</option>
</select><br
/><br
/>
<div
align=
"center"
>
<input
type=
"submit"
value=
"下载订单"
style=
"width:210px; height:50px; border-radius: 15px;background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;"
type=
"button"
onclick=
"callpay()"
/>
</div>
</form>
</body>
</html>
public/php_sdk_v3.0.10/example/index.php
已删除
100755 → 0
浏览文件 @
119d84ee
<html>
<head>
<meta
http-equiv=
"content-type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<title>
微信支付样例
</title>
<style
type=
"text/css"
>
ul
{
margin-left
:
10px
;
margin-right
:
10px
;
margin-top
:
10px
;
padding
:
0
;
}
li
{
width
:
32%
;
float
:
left
;
margin
:
0px
;
margin-left
:
1%
;
padding
:
0px
;
height
:
100px
;
display
:
inline
;
line-height
:
100px
;
color
:
#fff
;
font-size
:
x-large
;
word-break
:
break-all
;
word-wrap
:
break-word
;
margin-bottom
:
5px
;
}
a
{
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
text-decoration
:
none
;
color
:
#fff
;
}
a
:link
{
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
text-decoration
:
none
;
color
:
#fff
;
}
a
:visited
{
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
text-decoration
:
none
;
color
:
#fff
;
}
a
:hover
{
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
text-decoration
:
none
;
color
:
#fff
;
}
a
:active
{
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
text-decoration
:
none
;
color
:
#fff
;
}
</style>
</head>
<body>
<div
align=
"center"
>
<ul>
<li
style=
"background-color:#FF7F24"
><a
href=
"./jsapi.php"
>
JSAPI支付
</a></li>
<li
style=
"background-color:#698B22"
><a
href=
"./micropay.php"
>
刷卡支付
</a></li>
<li
style=
"background-color:#8B6914"
><a
href=
"./native.php"
>
扫码支付
</a></li>
<li
style=
"background-color:#CDCD00"
><a
href=
"./orderquery.php"
>
订单查询
</a></li>
<li
style=
"background-color:#CD3278"
><a
href=
"./refund.php"
>
订单退款
</a></li>
<li
style=
"background-color:#848484"
><a
href=
"./refundquery.php"
>
退款查询
</a></li>
<li
style=
"background-color:#8EE5EE"
><a
href=
"./download.php"
>
下载订单
</a></li>
</ul>
</div>
</body>
</html>
\ No newline at end of file
public/php_sdk_v3.0.10/example/jsapi.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
"WxPay.JsApiPay.php"
;
require_once
"WxPay.Config.php"
;
require_once
'log.php'
;
//初始化日志
$logHandler
=
new
CLogFileHandler
(
"../logs/"
.
date
(
'Y-m-d'
)
.
'.log'
);
$log
=
Log
::
Init
(
$logHandler
,
15
);
//打印输出数组信息
function
printf_info
(
$data
)
{
foreach
(
$data
as
$key
=>
$value
){
echo
"<font color='#00ff55;'>
$key
</font> : "
.
htmlspecialchars
(
$value
,
ENT_QUOTES
)
.
" <br/>"
;
}
}
//①、获取用户openid
try
{
$tools
=
new
JsApiPay
();
$openId
=
$tools
->
GetOpenid
();
//②、统一下单
$input
=
new
WxPayUnifiedOrder
();
$input
->
SetBody
(
"test"
);
$input
->
SetAttach
(
"test"
);
$input
->
SetOut_trade_no
(
"sdkphp"
.
date
(
"YmdHis"
));
$input
->
SetTotal_fee
(
"1"
);
$input
->
SetTime_start
(
date
(
"YmdHis"
));
$input
->
SetTime_expire
(
date
(
"YmdHis"
,
time
()
+
600
));
$input
->
SetGoods_tag
(
"test"
);
$input
->
SetNotify_url
(
"http://paysdk.weixin.qq.com/notify.php"
);
$input
->
SetTrade_type
(
"JSAPI"
);
$input
->
SetOpenid
(
$openId
);
$config
=
new
WxPayConfig
();
$order
=
WxPayApi
::
unifiedOrder
(
$config
,
$input
);
echo
'<font color="#f00"><b>统一下单支付单信息</b></font><br/>'
;
printf_info
(
$order
);
$jsApiParameters
=
$tools
->
GetJsApiParameters
(
$order
);
//获取共享收货地址js函数参数
$editAddress
=
$tools
->
GetEditAddressParameters
();
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
//③、在支持成功回调通知中处理成功之后的事宜,见 notify.php
/**
* 注意:
* 1、当你的回调地址不可访问的时候,回调通知会失败,可以通过查询订单来确认支付是否成功
* 2、jsapi支付时需要填入用户openid,WxPay.JsApiPay.php中有获取openid流程 (文档可以参考微信公众平台“网页授权接口”,
* 参考http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html)
*/
?>
<html>
<head>
<meta
http-equiv=
"content-type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<title>
微信支付样例-支付
</title>
<script
type=
"text/javascript"
>
//调用微信JS api 支付
function
jsApiCall
()
{
WeixinJSBridge
.
invoke
(
'
getBrandWCPayRequest
'
,
<?php
echo
$jsApiParameters
;
?>
,
function
(
res
){
WeixinJSBridge
.
log
(
res
.
err_msg
);
alert
(
res
.
err_code
+
res
.
err_desc
+
res
.
err_msg
);
}
);
}
function
callpay
()
{
if
(
typeof
WeixinJSBridge
==
"
undefined
"
){
if
(
document
.
addEventListener
){
document
.
addEventListener
(
'
WeixinJSBridgeReady
'
,
jsApiCall
,
false
);
}
else
if
(
document
.
attachEvent
){
document
.
attachEvent
(
'
WeixinJSBridgeReady
'
,
jsApiCall
);
document
.
attachEvent
(
'
onWeixinJSBridgeReady
'
,
jsApiCall
);
}
}
else
{
jsApiCall
();
}
}
</script>
<script
type=
"text/javascript"
>
//获取共享地址
function
editAddress
()
{
WeixinJSBridge
.
invoke
(
'
editAddress
'
,
<?php
echo
$editAddress
;
?>
,
function
(
res
){
var
value1
=
res
.
proviceFirstStageName
;
var
value2
=
res
.
addressCitySecondStageName
;
var
value3
=
res
.
addressCountiesThirdStageName
;
var
value4
=
res
.
addressDetailInfo
;
var
tel
=
res
.
telNumber
;
alert
(
value1
+
value2
+
value3
+
value4
+
"
:
"
+
tel
);
}
);
}
window
.
onload
=
function
(){
if
(
typeof
WeixinJSBridge
==
"
undefined
"
){
if
(
document
.
addEventListener
){
document
.
addEventListener
(
'
WeixinJSBridgeReady
'
,
editAddress
,
false
);
}
else
if
(
document
.
attachEvent
){
document
.
attachEvent
(
'
WeixinJSBridgeReady
'
,
editAddress
);
document
.
attachEvent
(
'
onWeixinJSBridgeReady
'
,
editAddress
);
}
}
else
{
editAddress
();
}
};
</script>
</head>
<body>
<br/>
<font
color=
"#9ACD32"
><b>
该笔订单支付金额为
<span
style=
"color:#f00;font-size:50px"
>
1分
</span>
钱
</b></font><br/><br/>
<div
align=
"center"
>
<button
style=
"width:210px; height:50px; border-radius: 15px;background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;"
type=
"button"
onclick=
"callpay()"
>
立即支付
</button>
</div>
</body>
</html>
\ No newline at end of file
public/php_sdk_v3.0.10/example/log.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
//以下为日志
interface
ILogHandler
{
public
function
write
(
$msg
);
}
class
CLogFileHandler
implements
ILogHandler
{
private
$handle
=
null
;
public
function
__construct
(
$file
=
''
)
{
$this
->
handle
=
fopen
(
$file
,
'a'
);
}
public
function
write
(
$msg
)
{
fwrite
(
$this
->
handle
,
$msg
,
4096
);
}
public
function
__destruct
()
{
fclose
(
$this
->
handle
);
}
}
class
Log
{
private
$handler
=
null
;
private
$level
=
15
;
private
static
$instance
=
null
;
private
function
__construct
(){}
private
function
__clone
(){}
public
static
function
Init
(
$handler
=
null
,
$level
=
15
)
{
if
(
!
self
::
$instance
instanceof
self
)
{
self
::
$instance
=
new
self
();
self
::
$instance
->
__setHandle
(
$handler
);
self
::
$instance
->
__setLevel
(
$level
);
}
return
self
::
$instance
;
}
private
function
__setHandle
(
$handler
){
$this
->
handler
=
$handler
;
}
private
function
__setLevel
(
$level
)
{
$this
->
level
=
$level
;
}
public
static
function
DEBUG
(
$msg
)
{
self
::
$instance
->
write
(
1
,
$msg
);
}
public
static
function
WARN
(
$msg
)
{
self
::
$instance
->
write
(
4
,
$msg
);
}
public
static
function
ERROR
(
$msg
)
{
$debugInfo
=
debug_backtrace
();
$stack
=
"["
;
foreach
(
$debugInfo
as
$key
=>
$val
){
if
(
array_key_exists
(
"file"
,
$val
)){
$stack
.
=
",file:"
.
$val
[
"file"
];
}
if
(
array_key_exists
(
"line"
,
$val
)){
$stack
.
=
",line:"
.
$val
[
"line"
];
}
if
(
array_key_exists
(
"function"
,
$val
)){
$stack
.
=
",function:"
.
$val
[
"function"
];
}
}
$stack
.
=
"]"
;
self
::
$instance
->
write
(
8
,
$stack
.
$msg
);
}
public
static
function
INFO
(
$msg
)
{
self
::
$instance
->
write
(
2
,
$msg
);
}
private
function
getLevelStr
(
$level
)
{
switch
(
$level
)
{
case
1
:
return
'debug'
;
break
;
case
2
:
return
'info'
;
break
;
case
4
:
return
'warn'
;
break
;
case
8
:
return
'error'
;
break
;
default
:
}
}
protected
function
write
(
$level
,
$msg
)
{
if
((
$level
&
$this
->
level
)
==
$level
)
{
$msg
=
'['
.
date
(
'Y-m-d H:i:s'
)
.
']['
.
$this
->
getLevelStr
(
$level
)
.
'] '
.
$msg
.
"
\n
"
;
$this
->
handler
->
write
(
$msg
);
}
}
}
public/php_sdk_v3.0.10/example/micropay.php
已删除
100755 → 0
浏览文件 @
119d84ee
<html>
<head>
<meta
http-equiv=
"content-type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<title>
微信支付样例-查退款单
</title>
</head>
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
"WxPay.MicroPay.php"
;
require_once
'log.php'
;
if
((
isset
(
$_REQUEST
[
"auth_code"
])
&&
!
preg_match
(
"/^[0-9]
{
6,64
}
$/i"
,
$_REQUEST
[
"auth_code"
],
$matches
)))
{
header
(
'HTTP/1.1 404 Not Found'
);
exit
();
}
//初始化日志
$logHandler
=
new
CLogFileHandler
(
"../logs/"
.
date
(
'Y-m-d'
)
.
'.log'
);
$log
=
Log
::
Init
(
$logHandler
,
15
);
//打印输出数组信息
function
printf_info
(
$data
)
{
foreach
(
$data
as
$key
=>
$value
){
echo
"<font color='#00ff55;'>
$key
</font> : "
.
htmlspecialchars
(
$value
,
ENT_QUOTES
)
.
" <br/>"
;
}
}
if
(
isset
(
$_REQUEST
[
"auth_code"
])
&&
$_REQUEST
[
"auth_code"
]
!=
""
){
try
{
$auth_code
=
$_REQUEST
[
"auth_code"
];
$input
=
new
WxPayMicroPay
();
$input
->
SetAuth_code
(
$auth_code
);
$input
->
SetBody
(
"刷卡测试样例-支付"
);
$input
->
SetTotal_fee
(
"1"
);
$input
->
SetOut_trade_no
(
"sdkphp"
.
date
(
"YmdHis"
));
$microPay
=
new
MicroPay
();
printf_info
(
$microPay
->
pay
(
$input
));
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
}
/**
* 注意:
* 1、提交被扫之后,返回系统繁忙、用户输入密码等错误信息时需要循环查单以确定是否支付成功
* 2、多次(一半10次)确认都未明确成功时需要调用撤单接口撤单,防止用户重复支付
*/
?>
<body>
<form
action=
"#"
method=
"post"
>
<div
style=
"margin-left:2%;"
>
商品描述:
</div><br/>
<input
type=
"text"
style=
"width:96%;height:35px;margin-left:2%;"
readonly
value=
"刷卡测试样例-支付"
name=
"auth_code"
/><br
/><br
/>
<div
style=
"margin-left:2%;"
>
支付金额:
</div><br/>
<input
type=
"text"
style=
"width:96%;height:35px;margin-left:2%;"
readonly
value=
"1分"
name=
"auth_code"
/><br
/><br
/>
<div
style=
"margin-left:2%;"
>
授权码:
</div><br/>
<input
type=
"text"
style=
"width:96%;height:35px;margin-left:2%;"
name=
"auth_code"
/><br
/><br
/>
<div
align=
"center"
>
<input
type=
"submit"
value=
"提交刷卡"
style=
"width:210px; height:50px; border-radius: 15px;background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;"
type=
"button"
onclick=
"callpay()"
/>
</div>
</form>
</body>
</html>
public/php_sdk_v3.0.10/example/native.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
"WxPay.NativePay.php"
;
require_once
'log.php'
;
//初始化日志
$logHandler
=
new
CLogFileHandler
(
"../logs/"
.
date
(
'Y-m-d'
)
.
'.log'
);
$log
=
Log
::
Init
(
$logHandler
,
15
);
//模式一
//不再提供模式一支付方式
/**
* 流程:
* 1、组装包含支付信息的url,生成二维码
* 2、用户扫描二维码,进行支付
* 3、确定支付之后,微信服务器会回调预先配置的回调地址,在【微信开放平台-微信支付-支付配置】中进行配置
* 4、在接到回调通知之后,用户进行统一下单支付,并返回支付信息以完成支付(见:native_notify.php)
* 5、支付完成之后,微信服务器会通知支付成功
* 6、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php)
*/
$notify
=
new
NativePay
();
$url1
=
$notify
->
GetPrePayUrl
(
"123456789"
);
//模式二
/**
* 流程:
* 1、调用统一下单,取得code_url,生成二维码
* 2、用户扫描二维码,进行支付
* 3、支付完成之后,微信服务器会通知支付成功
* 4、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php)
*/
$input
=
new
WxPayUnifiedOrder
();
$input
->
SetBody
(
"test"
);
$input
->
SetAttach
(
"test"
);
$input
->
SetOut_trade_no
(
"sdkphp123456789"
.
date
(
"YmdHis"
));
$input
->
SetTotal_fee
(
"1"
);
$input
->
SetTime_start
(
date
(
"YmdHis"
));
$input
->
SetTime_expire
(
date
(
"YmdHis"
,
time
()
+
600
));
$input
->
SetGoods_tag
(
"test"
);
$input
->
SetNotify_url
(
"http://paysdk.weixin.qq.com/notify.php"
);
$input
->
SetTrade_type
(
"NATIVE"
);
$input
->
SetProduct_id
(
"123456789"
);
$result
=
$notify
->
GetPayUrl
(
$input
);
$url2
=
$result
[
"code_url"
];
?>
<html>
<head>
<meta
http-equiv=
"content-type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<title>
微信支付样例-退款
</title>
</head>
<body>
<div
style=
"margin-left: 10px;color:#556B2F;font-size:30px;font-weight: bolder;"
>
扫描支付模式一
</div><br/>
<img
alt=
"模式一扫码支付"
src=
"qrcode.php?data=
<?php
echo
urlencode
(
$url1
);
?>
"
style=
"width:150px;height:150px;"
/>
<br/><br/><br/>
<div
style=
"margin-left: 10px;color:#556B2F;font-size:30px;font-weight: bolder;"
>
扫描支付模式二
</div><br/>
<img
alt=
"模式二扫码支付"
src=
"qrcode.php?data=
<?php
echo
urlencode
(
$url2
);
?>
"
style=
"width:150px;height:150px;"
/>
<div
style=
"color:#ff0000"
><b>
微信支付样例程序,仅做参考
</b></div>
</body>
</html>
\ No newline at end of file
public/php_sdk_v3.0.10/example/native_notify.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
'../lib/WxPay.Notify.php'
;
require_once
"WxPay.Config.php"
;
require_once
'log.php'
;
//初始化日志
$logHandler
=
new
CLogFileHandler
(
"../logs/"
.
date
(
'Y-m-d'
)
.
'.log'
);
$log
=
Log
::
Init
(
$logHandler
,
15
);
class
NativeNotifyCallBack
extends
WxPayNotify
{
public
function
unifiedorder
(
$openId
,
$product_id
)
{
//统一下单
$config
=
new
WxPayConfig
();
$input
=
new
WxPayUnifiedOrder
();
$input
->
SetBody
(
"test"
);
$input
->
SetAttach
(
"test"
);
$input
->
SetOut_trade_no
(
$config
->
GetMerchantId
()
.
date
(
"YmdHis"
));
$input
->
SetTotal_fee
(
"1"
);
$input
->
SetTime_start
(
date
(
"YmdHis"
));
$input
->
SetTime_expire
(
date
(
"YmdHis"
,
time
()
+
600
));
$input
->
SetGoods_tag
(
"test"
);
$input
->
SetNotify_url
(
"http://paysdk.weixin.qq.com/notify.php"
);
$input
->
SetTrade_type
(
"NATIVE"
);
$input
->
SetOpenid
(
$openId
);
$input
->
SetProduct_id
(
$product_id
);
try
{
$result
=
WxPayApi
::
unifiedOrder
(
$config
,
$input
);
Log
::
DEBUG
(
"unifiedorder:"
.
json_encode
(
$result
));
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
return
$result
;
}
/**
*
* 回包前的回调方法
* 业务可以继承该方法,打印日志方便定位
* @param string $xmlData 返回的xml参数
*
**/
public
function
LogAfterProcess
(
$xmlData
)
{
Log
::
DEBUG
(
"call back, return xml:"
.
$xmlData
);
return
;
}
/**
* @param WxPayNotifyResults $objData 回调解释出的参数
* @param WxPayConfigInterface $config
* @param string $msg 如果回调处理失败,可以将错误信息输出到该方法
* @return true回调出来完成不需要继续回调,false回调处理未完成需要继续回调
*/
public
function
NotifyProcess
(
$objData
,
$config
,
&
$msg
)
{
$data
=
$objData
->
GetValues
();
//echo "处理回调";
Log
::
DEBUG
(
"call back:"
.
json_encode
(
$data
));
//TODO 1、进行参数校验
if
(
!
array_key_exists
(
"openid"
,
$data
)
||
!
array_key_exists
(
"product_id"
,
$data
))
{
$msg
=
"回调数据异常"
;
Log
::
DEBUG
(
$msg
.
json_encode
(
$data
));
return
false
;
}
//TODO 2、进行签名验证
try
{
$checkResult
=
$objData
->
CheckSign
(
$config
);
if
(
$checkResult
==
false
){
//签名错误
Log
::
ERROR
(
"签名错误..."
);
return
false
;
}
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
$openid
=
$data
[
"openid"
];
$product_id
=
$data
[
"product_id"
];
//TODO 3、处理业务逻辑
//统一下单
$result
=
$this
->
unifiedorder
(
$openid
,
$product_id
);
if
(
!
array_key_exists
(
"appid"
,
$result
)
||
!
array_key_exists
(
"mch_id"
,
$result
)
||
!
array_key_exists
(
"prepay_id"
,
$result
))
{
$msg
=
"统一下单失败"
;
Log
::
DEBUG
(
$msg
.
json_encode
(
$data
));
return
false
;
}
$this
->
SetData
(
"appid"
,
$result
[
"appid"
]);
$this
->
SetData
(
"mch_id"
,
$result
[
"mch_id"
]);
$this
->
SetData
(
"nonce_str"
,
WxPayApi
::
getNonceStr
());
$this
->
SetData
(
"prepay_id"
,
$result
[
"prepay_id"
]);
$this
->
SetData
(
"result_code"
,
"SUCCESS"
);
$this
->
SetData
(
"err_code_des"
,
"OK"
);
return
true
;
}
}
$config
=
new
WxPayConfig
();
Log
::
DEBUG
(
"begin notify!"
);
$notify
=
new
NativeNotifyCallBack
();
$notify
->
Handle
(
$config
,
true
);
public/php_sdk_v3.0.10/example/notify.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
'../lib/WxPay.Notify.php'
;
require_once
"WxPay.Config.php"
;
require_once
'log.php'
;
//初始化日志
$logHandler
=
new
CLogFileHandler
(
"../logs/"
.
date
(
'Y-m-d'
)
.
'.log'
);
$log
=
Log
::
Init
(
$logHandler
,
15
);
class
PayNotifyCallBack
extends
WxPayNotify
{
//查询订单
public
function
Queryorder
(
$transaction_id
)
{
$input
=
new
WxPayOrderQuery
();
$input
->
SetTransaction_id
(
$transaction_id
);
$config
=
new
WxPayConfig
();
$result
=
WxPayApi
::
orderQuery
(
$config
,
$input
);
Log
::
DEBUG
(
"query:"
.
json_encode
(
$result
));
if
(
array_key_exists
(
"return_code"
,
$result
)
&&
array_key_exists
(
"result_code"
,
$result
)
&&
$result
[
"return_code"
]
==
"SUCCESS"
&&
$result
[
"result_code"
]
==
"SUCCESS"
)
{
return
true
;
}
return
false
;
}
/**
*
* 回包前的回调方法
* 业务可以继承该方法,打印日志方便定位
* @param string $xmlData 返回的xml参数
*
**/
public
function
LogAfterProcess
(
$xmlData
)
{
Log
::
DEBUG
(
"call back, return xml:"
.
$xmlData
);
return
;
}
//重写回调处理函数
/**
* @param WxPayNotifyResults $data 回调解释出的参数
* @param WxPayConfigInterface $config
* @param string $msg 如果回调处理失败,可以将错误信息输出到该方法
* @return true回调出来完成不需要继续回调,false回调处理未完成需要继续回调
*/
public
function
NotifyProcess
(
$objData
,
$config
,
&
$msg
)
{
$data
=
$objData
->
GetValues
();
//TODO 1、进行参数校验
if
(
!
array_key_exists
(
"return_code"
,
$data
)
||
(
array_key_exists
(
"return_code"
,
$data
)
&&
$data
[
'return_code'
]
!=
"SUCCESS"
))
{
//TODO失败,不是支付成功的通知
//如果有需要可以做失败时候的一些清理处理,并且做一些监控
$msg
=
"异常异常"
;
return
false
;
}
if
(
!
array_key_exists
(
"transaction_id"
,
$data
)){
$msg
=
"输入参数不正确"
;
return
false
;
}
//TODO 2、进行签名验证
try
{
$checkResult
=
$objData
->
CheckSign
(
$config
);
if
(
$checkResult
==
false
){
//签名错误
Log
::
ERROR
(
"签名错误..."
);
return
false
;
}
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
//TODO 3、处理业务逻辑
Log
::
DEBUG
(
"call back:"
.
json_encode
(
$data
));
$notfiyOutput
=
array
();
//查询订单,判断订单真实性
if
(
!
$this
->
Queryorder
(
$data
[
"transaction_id"
])){
$msg
=
"订单查询失败"
;
return
false
;
}
return
true
;
}
}
$config
=
new
WxPayConfig
();
Log
::
DEBUG
(
"begin notify"
);
$notify
=
new
PayNotifyCallBack
();
$notify
->
Handle
(
$config
,
false
);
public/php_sdk_v3.0.10/example/orderquery.php
已删除
100755 → 0
浏览文件 @
119d84ee
<html>
<head>
<meta
http-equiv=
"content-type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<title>
微信支付样例-订单查询
</title>
</head>
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
"../lib/WxPay.Api.php"
;
require_once
'log.php'
;
require_once
"WxPay.Config.php"
;
if
((
isset
(
$_REQUEST
[
"transaction_id"
])
&&
$_REQUEST
[
"transaction_id"
]
!=
""
&&
!
preg_match
(
"/^[0-9a-zA-Z]
{
10,64
}
$/i"
,
$_REQUEST
[
"transaction_id"
],
$matches
))
||
(
isset
(
$_REQUEST
[
"out_trade_no"
])
&&
$_REQUEST
[
"out_trade_no"
]
!=
""
&&
!
preg_match
(
"/^[0-9a-zA-Z]
{
10,64
}
$/i"
,
$_REQUEST
[
"out_trade_no"
],
$matches
))){
header
(
'HTTP/1.1 404 Not Found'
);
exit
();
}
//初始化日志
$logHandler
=
new
CLogFileHandler
(
"../logs/"
.
date
(
'Y-m-d'
)
.
'.log'
);
$log
=
Log
::
Init
(
$logHandler
,
15
);
function
printf_info
(
$data
)
{
foreach
(
$data
as
$key
=>
$value
){
echo
"<font color='#f00;'>
$key
</font> : "
.
htmlspecialchars
(
$value
,
ENT_QUOTES
)
.
" <br/>"
;
}
}
if
(
isset
(
$_REQUEST
[
"transaction_id"
])
&&
$_REQUEST
[
"transaction_id"
]
!=
""
){
try
{
$transaction_id
=
$_REQUEST
[
"transaction_id"
];
$input
=
new
WxPayOrderQuery
();
$input
->
SetTransaction_id
(
$transaction_id
);
$config
=
new
WxPayConfig
();
printf_info
(
WxPayApi
::
orderQuery
(
$config
,
$input
));
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
exit
();
}
if
(
isset
(
$_REQUEST
[
"out_trade_no"
])
&&
$_REQUEST
[
"out_trade_no"
]
!=
""
){
try
{
$out_trade_no
=
$_REQUEST
[
"out_trade_no"
];
$input
=
new
WxPayOrderQuery
();
$input
->
SetOut_trade_no
(
$out_trade_no
);
$config
=
new
WxPayConfig
();
printf_info
(
WxPayApi
::
orderQuery
(
$config
,
$input
));
}
catch
(
Exception
$e
)
{
Log
::
ERROR
(
json_encode
(
$e
));
}
exit
();
}
?>
<body>
<form
action=
"#"
method=
"post"
>
<div
style=
"margin-left:2%;color:#f00"
>
微信订单号和商户订单号选少填一个,微信订单号优先:
</div><br/>
<div
style=
"margin-left:2%;"
>
微信订单号:
</div><br/>
<input
type=
"text"
style=
"width:96%;height:35px;margin-left:2%;"
name=
"transaction_id"
/><br
/><br
/>
<div
style=
"margin-left:2%;"
>
商户订单号:
</div><br/>
<input
type=
"text"
style=
"width:96%;height:35px;margin-left:2%;"
name=
"out_trade_no"
/><br
/><br
/>
<div
align=
"center"
>
<input
type=
"submit"
value=
"查询"
style=
"width:210px; height:50px; border-radius: 15px;background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;"
type=
"button"
onclick=
"callpay()"
/>
</div>
</form>
</body>
</html>
public/php_sdk_v3.0.10/example/phpqrcode/phpqrcode.php
已删除
100755 → 0
浏览文件 @
119d84ee
此差异已折叠。
点击以展开。
public/php_sdk_v3.0.10/example/qrcode.php
已删除
100755 → 0
浏览文件 @
119d84ee
<?php
/**
*
* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
*
**/
require_once
'phpqrcode/phpqrcode.php'
;
$url
=
urldecode
(
$_GET
[
"data"
]);
if
(
substr
(
$url
,
0
,
6
)
==
"weixin"
){
QRcode
::
png
(
$url
);
}
else
{
header
(
'HTTP/1.1 404 Not Found'
);
}
public/php_sdk_v3.0.10/example/refund.php
已删除
100755 → 0
浏览文件 @
119d84ee
此差异已折叠。
点击以展开。
public/php_sdk_v3.0.10/example/refundquery.php
已删除
100755 → 0
浏览文件 @
119d84ee
此差异已折叠。
点击以展开。
public/php_sdk_v3.0.10/lib/WxPay.Api.php
已删除
100755 → 0
浏览文件 @
119d84ee
此差异已折叠。
点击以展开。
public/php_sdk_v3.0.10/lib/WxPay.Config.Interface.php
已删除
100755 → 0
浏览文件 @
119d84ee
此差异已折叠。
点击以展开。
public/php_sdk_v3.0.10/lib/WxPay.Data.php
已删除
100755 → 0
浏览文件 @
119d84ee
此差异已折叠。
点击以展开。
public/php_sdk_v3.0.10/lib/WxPay.Exception.php
已删除
100755 → 0
浏览文件 @
119d84ee
此差异已折叠。
点击以展开。
public/php_sdk_v3.0.10/lib/WxPay.Notify.php
已删除
100755 → 0
浏览文件 @
119d84ee
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录