Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
______--______
ShopXO
提交
837250b7
ShopXO
项目概览
______--______
/
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,体验更适合开发者的 AI 搜索 >>
提交
837250b7
编写于
11月 28, 2018
作者:
D
devil_gong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化
上级
51c96408
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
27 addition
and
254 deletion
+27
-254
Application/Api/Controller/UserController.class.php
Application/Api/Controller/UserController.class.php
+1
-1
Application/Library/AlipayAuth.class.php
Application/Library/AlipayAuth.class.php
+4
-253
changelog.txt
changelog.txt
+22
-0
未找到文件。
Application/Api/Controller/UserController.class.php
浏览文件 @
837250b7
...
...
@@ -184,7 +184,7 @@ class UserController extends CommonController
*/
public
function
GetAlipayUserInfo
()
{
$result
=
(
new
\
Library\Alipay
())
->
GetAlipayUserInfo
(
I
(
'authcode'
),
MyC
(
'common_app_mini_alipay_appid'
));
$result
=
(
new
\
Library\Alipay
Auth
())
->
GetAlipayUserInfo
(
I
(
'authcode'
),
MyC
(
'common_app_mini_alipay_appid'
));
if
(
$result
===
false
)
{
$this
->
ajaxReturn
(
'获取授权信息失败'
);
...
...
Application/Library/Alipay.class.php
→
Application/Library/Alipay
Auth
.class.php
浏览文件 @
837250b7
...
...
@@ -3,211 +3,17 @@
namespace
Library
;
/**
* 支付宝
支付
驱动
* 支付宝
授权
驱动
* @author Devil
* @version V_1.0.0
*/
class
Alipay
class
Alipay
Auth
{
/**
* [__construct 构造方法]
*/
public
function
__construct
(){}
/**
* [SoonPay 立即支付]
* @param [array] $data [支付信息]
*/
public
function
SoonPay
(
$data
,
$config
)
{
if
(
empty
(
$data
)
||
empty
(
$config
))
return
false
;
if
(
APPLICATION
==
'app'
)
{
return
$this
->
SoonPayApp
(
$data
,
$config
);
}
else
{
if
(
IsMobile
())
{
$this
->
SoonPayMobile
(
$data
,
$config
);
}
else
{
$this
->
SoonPayWeb
(
$data
,
$config
);
}
}
}
/**
* [SoonPayApp app支付]
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2017-10-25T16:07:06+0800
* @param [array] $data [参数列表]
* @param [array] $config [配置信息]
*/
private
function
SoonPayApp
(
$data
,
$config
)
{
$parameter
=
array
(
'app_id'
=>
MyC
(
'common_app_mini_alipay_appid'
),
'method'
=>
'alipay.trade.app.pay'
,
'format'
=>
'JSON'
,
'charset'
=>
'utf-8'
,
'sign_type'
=>
'RSA2'
,
'timestamp'
=>
date
(
'Y-m-d H:i:s'
),
'version'
=>
'1.0'
,
'notify_url'
=>
$data
[
'notify_url'
],
);
$biz_content
=
array
(
'subject'
=>
$data
[
'name'
],
'out_trade_no'
=>
$data
[
'order_sn'
],
'total_amount'
=>
$data
[
'total_price'
],
'product_code'
=>
'QUICK_MSECURITY_PAY'
,
);
// 收款账户集
if
(
!
empty
(
$data
[
'seller_id'
]))
{
$biz_content
[
'seller_id'
]
=
$data
[
'seller_id'
];
}
$parameter
[
'biz_content'
]
=
json_encode
(
$biz_content
,
JSON_UNESCAPED_UNICODE
);
// 生成签名参数+签名
$params
=
$this
->
GetParamSign
(
$parameter
);
$params
[
'param'
]
.
=
'&sign='
.
urlencode
(
$this
->
MyRsaSign
(
$params
[
'value'
]));
// 直接返回支付信息
return
$params
[
'param'
];
}
/**
* [SoonPayMobile wap支付]
* @param [array] $data [参数列表]
* @param [array] $config [配置信息]
*/
private
function
SoonPayMobile
(
$data
,
$config
)
{
$request_token
=
$this
->
GetRequestToken
(
$data
,
$config
);
$req_data
=
'<auth_and_execute_req><request_token>'
.
$request_token
.
'</request_token></auth_and_execute_req>'
;
$parameter
=
array
(
'service'
=>
'alipay.wap.auth.authAndExecute'
,
'format'
=>
'xml'
,
'v'
=>
'2.0'
,
'partner'
=>
$config
[
'id'
],
'sec_id'
=>
'MD5'
,
'req_data'
=>
$req_data
,
'request_token'
=>
$request_token
);
$param
=
$this
->
GetParamSign
(
$parameter
,
$config
);
header
(
'location:http://wappaygw.alipay.com/service/rest.htm?'
.
$param
[
'param'
]
.
'&sign='
.
md5
(
$param
[
'sign'
]));
}
/**
* [GetRequestToken 获取临时token]
* @param [array] $data [参数列表]
* @param [array] $config [配置信息]
* @return [string] [返回临时token]
*/
private
function
GetRequestToken
(
$data
,
$config
)
{
$parameter
=
array
(
'service'
=>
'alipay.wap.trade.create.direct'
,
'format'
=>
'xml'
,
'v'
=>
'2.0'
,
'partner'
=>
$config
[
'id'
],
'req_id'
=>
$data
[
'order_sn'
],
'sec_id'
=>
'MD5'
,
'req_data'
=>
$this
->
GetReqData
(
$data
,
$config
),
'subject'
=>
$data
[
'name'
],
'out_trade_no'
=>
$data
[
'order_sn'
],
'total_fee'
=>
$data
[
'total_price'
],
'seller_account_name'
=>
$config
[
'name'
],
'call_back_url'
=>
$data
[
'call_back_url'
],
'notify_url'
=>
$data
[
'notify_url'
],
'out_user'
=>
$data
[
'out_user'
],
'merchant_url'
=>
$data
[
'merchant_url'
],
);
$param
=
$this
->
GetParamSign
(
$parameter
,
$config
);
$ret
=
urldecode
(
file_get_contents
(
'http://wappaygw.alipay.com/service/rest.htm?'
.
$param
[
'param'
]
.
'&sign='
.
md5
(
$param
[
'sign'
])));
$para_split
=
explode
(
'&'
,
$ret
);
//把切割后的字符串数组变成变量与数值组合的数组
foreach
(
$para_split
as
$item
)
{
//获得第一个=字符的位置
$nPos
=
strpos
(
$item
,
'='
);
//获得字符串长度
$nLen
=
strlen
(
$item
);
//获得变量名
$key
=
substr
(
$item
,
0
,
$nPos
);
//获得数值
$value
=
substr
(
$item
,
$nPos
+
1
,
$nLen
-
$nPos
-
1
);
//放入数组中
$para_text
[
$key
]
=
$value
;
}
$req
=
Xml_Array
(
$para_text
[
'res_data'
]);
if
(
empty
(
$req
[
'request_token'
]))
{
exit
(
header
(
'location:'
.
__ROOT__
.
'index.php?g=Info&c=Prompt&f=PromptInfo&state=error&content=支付宝异常错误&url='
.
__ROOT__
));
}
return
$req
[
'request_token'
];
}
private
function
GetReqData
(
$data
,
$config
)
{
return
'<direct_trade_create_req>
<subject>'
.
$data
[
'name'
]
.
'</subject>
<out_trade_no>'
.
$data
[
'order_sn'
]
.
'</out_trade_no>
<total_fee>'
.
$data
[
'total_price'
]
.
'</total_fee>
<seller_account_name>'
.
$config
[
'name'
]
.
'</seller_account_name>
<call_back_url>'
.
$data
[
'call_back_url'
]
.
'</call_back_url>
<notify_url>'
.
$data
[
'notify_url'
]
.
'</notify_url>
<out_user>'
.
$data
[
'out_user'
]
.
'</out_user>
<merchant_url>'
.
$data
[
'merchant_url'
]
.
'</merchant_url>
<pay_expire>3600</pay_expire>
<agent_id>0</agent_id>
</direct_trade_create_req>'
;
}
/**
* [SoonPayWeb web支付]
* @param [array] $data [订单信息]
* @param [array] $config [配置信息]
*/
private
function
SoonPayWeb
(
$data
,
$config
)
{
$parameter
=
array
(
'service'
=>
'create_direct_pay_by_user'
,
'partner'
=>
$config
[
'id'
],
'_input_charset'
=>
ML_CHARSET
,
'notify_url'
=>
$data
[
'notify_url'
],
'return_url'
=>
$data
[
'call_back_url'
],
/* 业务参数 */
'subject'
=>
$data
[
'name'
],
'out_trade_no'
=>
$data
[
'order_sn'
],
'price'
=>
$data
[
'total_price'
],
'quantity'
=>
1
,
'payment_type'
=>
1
,
/* 物流参数 */
'logistics_type'
=>
'EXPRESS'
,
'logistics_fee'
=>
0
,
'logistics_payment'
=>
'BUYER_PAY_AFTER_RECEIVE'
,
/* 买卖双方信息 */
'seller_email'
=>
$config
[
'name'
]
);
$param
=
$this
->
GetParamSign
(
$parameter
,
$config
);
header
(
'location:https://mapi.alipay.com/gateway.do?'
.
$param
[
'param'
]
.
'&sign='
.
md5
(
$param
[
'sign'
])
.
'&sign_type=MD5'
);
}
/**
* [GetParamSign 生成参数和签名]
* @param [array] $data [待生成的参数]
...
...
@@ -237,61 +43,6 @@ class Alipay
return
$result
;
}
/**
* [Respond 异步处理]
* @param [array] $config [配置信息]
* @return [array|string] [成功返回数据列表,失败返回no]
*/
public
function
Respond
(
$config
)
{
if
(
empty
(
$config
))
return
'no'
;
$data
=
empty
(
$_POST
)
?
$_GET
:
array_merge
(
$_GET
,
$_POST
);
ksort
(
$data
);
$sign
=
''
;
if
(
isset
(
$data
[
'sec_id'
])
&&
$data
[
'sec_id'
]
==
'MD5'
)
{
$data_xml
=
json_decode
(
json_encode
((
array
)
simplexml_load_string
(
$data
[
'notify_data'
])),
true
);
$data
=
array_merge
(
$data
,
$data_xml
);
$sign
=
'service='
.
$data
[
'service'
]
.
'&v='
.
$data
[
'v'
]
.
'&sec_id='
.
$data
[
'sec_id'
]
.
'¬ify_data='
.
$data
[
'notify_data'
];
}
else
{
foreach
(
$data
AS
$key
=>
$val
)
{
if
(
$key
!=
'sign'
&&
$key
!=
'sign_type'
&&
$key
!=
'code'
)
{
$sign
.
=
"
$key
=
$val
&"
;
}
}
$sign
=
substr
(
$sign
,
0
,
-
1
);
}
if
(
isset
(
$data
[
'sign_type'
])
&&
$data
[
'sign_type'
]
==
'RSA2'
)
{
if
(
!
$this
->
AlipayrsaVerify
(
$sign
,
$data
[
'sign'
]))
{
return
'no'
;
}
}
else
{
if
(
!
isset
(
$data
[
'sign'
])
||
md5
(
$sign
.
$config
[
'key'
])
!=
$data
[
'sign'
])
{
return
'no'
;
}
}
/* 支付状态 */
$status
=
isset
(
$data
[
'trade_status'
])
?
$data
[
'trade_status'
]
:
$data
[
'result'
];
switch
(
$status
)
{
case
'TRADE_SUCCESS'
:
case
'TRADE_FINISHED'
:
case
'success'
:
return
$data
;
break
;
}
return
'no'
;
}
/**
* [GetAlipayUserInfo 支付宝小程序获取用户信息]
* @author Devil
...
...
@@ -581,9 +332,9 @@ class Alipay
* @version 1.0.0
* @datetime 2017-10-28T21:31:41+0800
* @param [string] $query [生成小程序启动参数(如:type=page&page=shop&value=5)]
* @param [string] $describe [二维码描述(默认:
美啦网
)]
* @param [string] $describe [二维码描述(默认:
ShopXO
)]
*/
public
function
AlipayQrcodeCreate
(
$query
,
$describe
=
'
美啦网
'
)
public
function
AlipayQrcodeCreate
(
$query
,
$describe
=
'
ShopXO
'
)
{
// 请求参数
$params
=
[
...
...
changelog.txt
浏览文件 @
837250b7
+=========================================================+
ShopXO 1.0.1 Release 20181111 http://shopxo.net
+=========================================================+
后台管理功能列表
1、优化轮播图片与手机端分离
2、新增问答/留言
3、新增手机端管理
4、新增支付宝小程序(轮播、首页导航)
5、调整平台类别
6、新增支付宝小程序支付插件
7、优化部分BUG
前端功能列表
1、购物流程优化(去掉用户选择快递)
2、优化部分BUG
手机端
1、新增支付宝小程序
2、支持后台配置基础信息
3、支持后台生成程序包
+=========================================================+
ShopXO 1.0.0 Release 20181111 http://shopxo.net
+=========================================================+
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录