Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ufo
/
yohoufo-fore
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
qinchao
6 years ago
Commit
c413c1bb3a45d9921f58fe42d0b74704b61f2b26
1 parent
c4ca638a
临时增加-芝麻验证网关(验证以后可去掉)
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
2881 additions
and
0 deletions
users/src/main/java/com/alipay/account/ToAlipayPublicAccount.java
users/src/main/java/com/alipay/appinfo/AlipayPublicInfo.java
users/src/main/java/com/alipay/common/MyException.java
users/src/main/java/com/alipay/constants/AlipayServiceEnvConstants.java
users/src/main/java/com/alipay/constants/AlipayServiceEventConstants.java
users/src/main/java/com/alipay/constants/AlipayServiceNameConstants.java
users/src/main/java/com/alipay/dispatcher/Dispatcher.java
users/src/main/java/com/alipay/executor/ActionExecutor.java
users/src/main/java/com/alipay/executor/InAlipayAsyncMsgSendExecutor.java
users/src/main/java/com/alipay/executor/InAlipayChatTextExecutor.java
users/src/main/java/com/alipay/executor/InAlipayDIYQRCodeEnterExecutor.java
users/src/main/java/com/alipay/executor/InAlipayDefaultExecutor.java
users/src/main/java/com/alipay/executor/InAlipayEnterExecutor.java
users/src/main/java/com/alipay/executor/InAlipayFollowExecutor.java
users/src/main/java/com/alipay/executor/InAlipayUnFollowExecutor.java
users/src/main/java/com/alipay/executor/InAlipayVerifyExecutor.java
users/src/main/java/com/alipay/extension/AlipayPublicExtension.java
users/src/main/java/com/alipay/factory/AlipayAPIClientFactory.java
users/src/main/java/com/alipay/generalize/AlipayOpenGeneralize.java
users/src/main/java/com/alipay/label/AlipayPublicLabel.java
users/src/main/java/com/alipay/menu/AlipayPublicMenu.java
users/src/main/java/com/alipay/msg/ToAlipayGroupSendImgTextMsg.java
users/src/main/java/com/alipay/msg/ToAlipayGroupSendTextMsg.java
users/src/main/java/com/alipay/msg/ToAlipayLabelSendMsg.java
users/src/main/java/com/alipay/msg/ToAlipaySingleSendImgTextMsg.java
users/src/main/java/com/alipay/msg/ToAlipaySingleSendTextMsg.java
users/src/main/java/com/alipay/servlet/auth/AlipayPublicFollowUser.java
users/src/main/java/com/alipay/servlet/auth/LoginAuthServlet.java
users/src/main/java/com/alipay/servlet/gateway/GatewayServlet.java
users/src/main/java/com/alipay/util/AlipayCore.java
users/src/main/java/com/alipay/util/AlipayMsgBuildUtil.java
users/src/main/java/com/alipay/util/AlipayNotify.java
users/src/main/java/com/alipay/util/AppPayTest.java
users/src/main/java/com/alipay/util/LogUtil.java
users/src/main/java/com/alipay/util/RequestUtil.java
users/src/main/java/com/alipay/util/TestMain.java
users/src/main/java/com/alipay/util/UtilDate.java
web/src/main/webapp/WEB-INF/web.xml
users/src/main/java/com/alipay/account/ToAlipayPublicAccount.java
0 → 100755
View file @
c413c1b
/**
* <p>Title: package-info.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2013</p>
* <p>Company: Alibaba YunOS</p>
* @author jinlong.rhj
* @date 2015年7月1日
* @version 1.0
*/
/**
* @author jinlong.rhj
*
*/
package
com
.
alipay
.
account
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.domain.AlipayOpenPublicAccountCreateModel
;
import
com.alipay.api.domain.AlipayOpenPublicAccountDeleteModel
;
import
com.alipay.api.domain.AlipayOpenPublicAccountQueryModel
;
import
com.alipay.api.domain.AlipayOpenPublicAccountResetModel
;
import
com.alipay.api.request.AlipayOpenPublicAccountCreateRequest
;
import
com.alipay.api.request.AlipayOpenPublicAccountDeleteRequest
;
import
com.alipay.api.request.AlipayOpenPublicAccountQueryRequest
;
import
com.alipay.api.request.AlipayOpenPublicAccountResetRequest
;
import
com.alipay.api.response.AlipayOpenPublicAccountCreateResponse
;
import
com.alipay.api.response.AlipayOpenPublicAccountDeleteResponse
;
import
com.alipay.api.response.AlipayOpenPublicAccountQueryResponse
;
import
com.alipay.api.response.AlipayOpenPublicAccountResetResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
/**
* 绑定商户会员号接口
* @author liliang
*
*/
public
class
ToAlipayPublicAccount
{
public
static
void
main
(
String
[]
args
)
{
accountCreate
();
// accountQuery();
// accountReset();
// accountDelete();
}
//添加绑定商户会员号
public
static
void
accountCreate
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicAccountCreateRequest
request
=
new
AlipayOpenPublicAccountCreateRequest
();
AlipayOpenPublicAccountCreateModel
model
=
new
AlipayOpenPublicAccountCreateModel
();
model
.
setBindAccountNo
(
"test001"
);
model
.
setDisplayName
(
"test001"
);
model
.
setRealName
(
"张三"
);
model
.
setFromUserId
(
"2088802613423222"
);
model
.
setRemark
(
"备注信息"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicAccountCreateResponse
response
=
null
;
try
{
// 使用SDK,调用交易下单接口
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
System
.
out
.
println
(
response
.
isSuccess
());
// 这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"AgreementId: "
+
response
.
getAgreementId
());
}
}
catch
(
AlipayApiException
e
)
{
}
}
//查询绑定商户会员号
public
static
void
accountQuery
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicAccountQueryRequest
request
=
new
AlipayOpenPublicAccountQueryRequest
();
AlipayOpenPublicAccountQueryModel
model
=
new
AlipayOpenPublicAccountQueryModel
();
model
.
setUserId
(
"2088802608984030"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicAccountQueryResponse
response
=
null
;
try
{
// 使用SDK,调用交易下单接口
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
System
.
out
.
println
(
response
.
isSuccess
());
// 这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"bindAccount: "
+
response
.
getPublicBindAccounts
());
}
}
catch
(
AlipayApiException
e
)
{
}
}
//重置绑定的商户会员号
public
static
void
accountReset
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicAccountResetRequest
request
=
new
AlipayOpenPublicAccountResetRequest
();
AlipayOpenPublicAccountResetModel
model
=
new
AlipayOpenPublicAccountResetModel
();
model
.
setBindAccountNo
(
"test001"
);
model
.
setDisplayName
(
"test001"
);
model
.
setAgreementId
(
"20160727047733500603"
);
model
.
setRealName
(
"张三"
);
model
.
setFromUserId
(
"2088802613423222"
);
model
.
setRemark
(
"备注信息"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicAccountResetResponse
response
=
null
;
try
{
// 使用SDK,调用交易下单接口
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
System
.
out
.
println
(
response
.
isSuccess
());
// 这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"AgreementId: "
+
response
.
getAgreementId
());
}
}
catch
(
AlipayApiException
e
)
{
}
}
//解除绑定的商户会员号
public
static
void
accountDelete
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicAccountDeleteRequest
request
=
new
AlipayOpenPublicAccountDeleteRequest
();
AlipayOpenPublicAccountDeleteModel
model
=
new
AlipayOpenPublicAccountDeleteModel
();
model
.
setAgreementId
(
"20160727047733500603"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicAccountDeleteResponse
response
=
null
;
try
{
// 使用SDK,调用交易下单接口
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
System
.
out
.
println
(
response
.
isSuccess
());
// 这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
}
}
catch
(
AlipayApiException
e
)
{
}
}
}
...
...
users/src/main/java/com/alipay/appinfo/AlipayPublicInfo.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
appinfo
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.domain.AlipayOpenPublicInfoModifyModel
;
import
com.alipay.api.request.AlipayOpenPublicInfoModifyRequest
;
import
com.alipay.api.request.AlipayOpenPublicInfoQueryRequest
;
import
com.alipay.api.response.AlipayOpenPublicInfoModifyResponse
;
import
com.alipay.api.response.AlipayOpenPublicInfoQueryResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
/**
* 基础信息设置接口调用示例
*
* @author liliang
*
*/
public
class
AlipayPublicInfo
{
public
static
void
main
(
String
[]
args
)
{
appInfoQuery
();
}
// 服务窗基础信息查询接口
public
static
void
appInfoQuery
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicInfoQueryRequest
request
=
new
AlipayOpenPublicInfoQueryRequest
();
AlipayOpenPublicInfoQueryResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//服务窗基础信息修改接口
public
static
void
appInfoModify
(){
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicInfoModifyRequest
request
=
new
AlipayOpenPublicInfoModifyRequest
();
AlipayOpenPublicInfoModifyModel
model
=
new
AlipayOpenPublicInfoModifyModel
();
model
.
setAppName
(
"测试生活号"
);
model
.
setLogoUrl
(
"http://pic.alipayobjects.com/e/201311/1ZQ"
);
model
.
setPublicGreeting
(
"欢迎光临"
);
model
.
setLicenseUrl
(
"http://pic.alipayobjects.com/e/201311/1ZQ"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicInfoModifyResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
}
...
...
users/src/main/java/com/alipay/common/MyException.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
common
;
/**
* 自定义异常
*
* @author taixu.zqq
* @version $Id: MyException.java, v 0.1 2014年7月24日 下午6:58:39 taixu.zqq Exp $
*/
public
class
MyException
extends
Exception
{
private
static
final
long
serialVersionUID
=
-
5710488447295073398L
;
public
MyException
(){
}
public
MyException
(
String
message
)
{
super
(
message
);
}
public
MyException
(
Throwable
throwable
){
super
(
throwable
);
}
public
MyException
(
String
message
,
Throwable
throwable
){
super
(
message
,
throwable
);
}
}
...
...
users/src/main/java/com/alipay/constants/AlipayServiceEnvConstants.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
constants
;
/**
* 支付宝服务窗环境常量(demo中常量只是参考,需要修改成自己的常量值)
*
* @author taixu.zqq
* @version $Id: AlipayServiceConstants.java, v 0.1 2014年7月24日 下午4:33:49 taixu.zqq Exp $
*/
public
class
AlipayServiceEnvConstants
{
/**支付宝公钥-从支付宝生活号详情页面获取*/
public
static
final
String
ALIPAY_PUBLIC_KEY
=
""
;
/**签名编码-视支付宝服务窗要求*/
public
static
final
String
SIGN_CHARSET
=
"UTF-8"
;
/**字符编码-传递给支付宝的数据编码*/
public
static
final
String
CHARSET
=
"UTF-8"
;
/**签名类型-视支付宝服务窗要求*/
public
static
final
String
SIGN_TYPE
=
"RSA"
;
/**开发者账号PID*/
public
static
final
String
PARTNER
=
"2088421850636193"
;
/** 服务窗appId */
//TODO !!!! 注:该appId必须设为开发者自己的生活号id
public
static
final
String
APP_ID
=
"2016091401906455"
;
//TODO !!!! 注:该私钥为测试账号私钥 开发者必须设置自己的私钥 , 否则会存在安全隐患
public
static
final
String
PRIVATE_KEY
=
"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKqYgXtur32Spmu9"
+
"AJZK0g6ghSQbJIbCcriePO60KlsB4xNstAwwgQ0Q619aV/gm5u+ejwc+05rko1LV"
+
"I+8XAT7fk+f2MdvqZFeWWD8ESK+ZB/9yLwQW7kaiDRXtCSzkGUGp/MRJS4jgpbd6"
+
"RlXTAhnNy7f6tCxzeJYEOBgHa2kVAgMBAAECgYEAjRXDQAmyKO/3onKU4bbPMjme"
+
"4tVvx+NYbUawrdlijhFpcs8buFkE4YF0p09YIWpK4zEGqL9U0Wz1hbOwHDOyWqtl"
+
"eaAkQd8Nq2VsGO2lkq2Nc9tnWXwdm5EJj9NxgCevdRlodYq47WXafSr6j00HD0pi"
+
"b6EP2TCh62e9QRGfSqECQQDUrfCfnCqEz2EnlD338Ixe4b/d1iNBAE/yzl1zqsSg"
+
"EaAtZjq9CniIYhUuiKvUcBleoA8aMFc5p0xMimSvDxpXAkEAzVghtSKgCZNALSJA"
+
"B3obDPTuVejbh3156/FeXmIhkATs50T2W0DC0E+PYIZCT8e2hJ/0lWYfXBMhPaob"
+
"ab2McwJAYkLG5IdbYacKpSWph88cm43DfrO78AE77tuHc7RXSfk6vx73TnXzAFgI"
+
"n0pH0UvFfOGIeLoS4rE34DkkkXjx2wJAWuIc2RygFFzV1KQKDsUeX9ev/Nn4/7ir"
+
"U6Aakk+AZ0umxp0hJDY/gw8TeDcz9jeAMqbRC6aNTqUw2ygExgIcvQJAbUCgtAfB"
+
"6ZG7dCe1+qAG1S/tVd24ZwKqPP0KVRa8Do4qFbIQjv5Cou4DOf35ifLfGzRUWF4D"
+
"juPP619T5yGTHA=="
;
//TODO !!!! 注:该公钥为测试账号公钥 开发者必须设置自己的公钥 ,否则会存在安全隐患
public
static
final
String
PUBLIC_KEY
=
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn3F+OpzvomabsyafmGUNrpMhFnBw/AJkJHDQa93vMSl5nk6mjje8/e39HfS/0Y7FQDu1bSA3jEgNpkDwjBpsa2fMMk+QdMb/I/fWQumibx8Mnc3/TjsSNPOP81Gkvz3yX8QRWHJIe+tMfZ51BoljKhSx5FQcHKQ2zq49IMuMi0IFzAgaPGOcvtT7Z3czrYtIpF3cAAj/PzflwfzXm3/5Krtuj71LdeRZeIKuYUXL7REP6/MoUJHvFjmLdWak7Uh+9PqX8lt8MZ0sOv21doMEkDhqrumDoSIPNB3/+nQQgpaekkogqcz5JnfTdJC8SEs79Enhgwisjt2Utb83b73qZQIDAQAB"
;
/**支付宝网关*/
public
static
final
String
ALIPAY_GATEWAY
=
"https://openapi.alipay.com/gateway.do"
;
/**授权访问令牌的授权类型*/
public
static
final
String
GRANT_TYPE
=
"authorization_code"
;
}
\ No newline at end of file
...
...
users/src/main/java/com/alipay/constants/AlipayServiceEventConstants.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
constants
;
/**
* 支付宝服务窗事件常量
*
* @author taixu.zqq
* @version $Id: AlipayServiceEvent.java, v 0.1 2014年7月24日 下午1:40:04 taixu.zqq Exp $
*/
public
class
AlipayServiceEventConstants
{
/**网关验证事件*/
public
static
final
String
VERIFYGW_EVENT
=
"verifygw"
;
/**服务窗关注事件*/
public
static
final
String
FOLLOW_EVENT
=
"follow"
;
/**服务窗取消关注事件*/
public
static
final
String
UNFOLLOW_EVENT
=
"unfollow"
;
/**服务窗菜单点击事件*/
public
static
final
String
CLICK_EVENT
=
"click"
;
/**服务窗进入事件*/
public
static
final
String
ENTER_EVENT
=
"enter"
;
}
...
...
users/src/main/java/com/alipay/constants/AlipayServiceNameConstants.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
constants
;
/**
* 支付宝服务窗服务常量
*
* @author taixu.zqq
* @version $Id: AlipayFuwuApi.java, v 0.1 2014年7月23日 下午4:44:45 taixu.zqq Exp $
*/
public
class
AlipayServiceNameConstants
{
/**开发者网关验证服务*/
public
static
final
String
ALIPAY_CHECK_SERVICE
=
"alipay.service.check"
;
/**支付宝消息通知服务*/
public
static
final
String
ALIPAY_PUBLIC_MESSAGE_NOTIFY
=
"alipay.mobile.public.message.notify"
;
}
...
...
users/src/main/java/com/alipay/dispatcher/Dispatcher.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
dispatcher
;
import
java.util.Map
;
import
net.sf.json.JSONObject
;
import
net.sf.json.xml.XMLSerializer
;
import
com.alipay.api.internal.util.StringUtils
;
import
com.alipay.common.MyException
;
import
com.alipay.constants.AlipayServiceEventConstants
;
import
com.alipay.constants.AlipayServiceNameConstants
;
import
com.alipay.executor.ActionExecutor
;
import
com.alipay.executor.InAlipayAsyncMsgSendExecutor
;
import
com.alipay.executor.InAlipayChatTextExecutor
;
import
com.alipay.executor.InAlipayDIYQRCodeEnterExecutor
;
import
com.alipay.executor.InAlipayDefaultExecutor
;
import
com.alipay.executor.InAlipayEnterExecutor
;
import
com.alipay.executor.InAlipayFollowExecutor
;
import
com.alipay.executor.InAlipayUnFollowExecutor
;
import
com.alipay.executor.InAlipayVerifyExecutor
;
/**
* 业务动作分发器
*
* @author taixu.zqq
* @version $Id: Dispatcher.java, v 0.1 2014年7月24日 下午4:59:58 taixu.zqq Exp $
*/
public
class
Dispatcher
{
/**
* 根据业务参数获取业务执行器
*
* @param params
* @return
* @throws MyException
*/
public
static
ActionExecutor
getExecutor
(
Map
<
String
,
String
>
params
)
throws
MyException
{
//获取服务信息
String
service
=
params
.
get
(
"service"
);
if
(
StringUtils
.
isEmpty
(
service
))
{
throw
new
MyException
(
"无法取得服务名"
);
}
//获取内容信息
String
bizContent
=
params
.
get
(
"biz_content"
);
if
(
StringUtils
.
isEmpty
(
bizContent
))
{
throw
new
MyException
(
"无法取得业务内容信息"
);
}
//将XML转化成json对象
JSONObject
bizContentJson
=
(
JSONObject
)
new
XMLSerializer
().
read
(
bizContent
);
// 1.获取消息类型信息
String
msgType
=
bizContentJson
.
getString
(
"MsgType"
);
if
(
StringUtils
.
isEmpty
(
msgType
))
{
throw
new
MyException
(
"无法取得消息类型"
);
}
// 2.根据消息类型(msgType)进行执行器的分类转发
// 2.1 纯文本聊天类型
if
(
"text"
.
equals
(
msgType
))
{
return
new
InAlipayChatTextExecutor
(
bizContentJson
);
// 2.2 事件类型
}
else
if
(
"event"
.
equals
(
msgType
))
{
return
getEventExecutor
(
service
,
bizContentJson
);
}
else
{
// 2.3 后续支付宝还会新增其他类型,因此默认返回ack应答
return
new
InAlipayDefaultExecutor
(
bizContentJson
);
}
}
/**
* 根据事件类型细化查找对应执行器
*
* @param service
* @param bizContentJson
* @return
* @throws MyException
*/
private
static
ActionExecutor
getEventExecutor
(
String
service
,
JSONObject
bizContentJson
)
throws
MyException
{
// 1. 获取事件类型
String
eventType
=
bizContentJson
.
getString
(
"EventType"
);
if
(
StringUtils
.
isEmpty
(
eventType
))
{
throw
new
MyException
(
"无法取得事件类型"
);
}
// 2.根据事件类型再次区分服务类型
// 2.1 激活验证开发者模式
if
(
AlipayServiceNameConstants
.
ALIPAY_CHECK_SERVICE
.
equals
(
service
)
&&
eventType
.
equals
(
AlipayServiceEventConstants
.
VERIFYGW_EVENT
))
{
return
new
InAlipayVerifyExecutor
();
// 2.2 其他消息通知类
}
else
if
(
AlipayServiceNameConstants
.
ALIPAY_PUBLIC_MESSAGE_NOTIFY
.
equals
(
service
))
{
return
getMsgNotifyExecutor
(
eventType
,
bizContentJson
);
// 2.3 对于后续支付宝可能新增的类型,统一默认返回AKC响应
}
else
{
return
new
InAlipayDefaultExecutor
(
bizContentJson
);
}
}
/**
* 根据事件类型(eventType)进行执行器的分类转发
*
* @param eventType
* @param bizContentJson
* @return
* @throws MyException
*/
private
static
ActionExecutor
getMsgNotifyExecutor
(
String
eventType
,
JSONObject
bizContentJson
)
throws
MyException
{
if
(
eventType
.
equals
(
AlipayServiceEventConstants
.
FOLLOW_EVENT
))
{
// 服务窗关注事件
return
new
InAlipayFollowExecutor
(
bizContentJson
);
}
else
if
(
eventType
.
equals
(
AlipayServiceEventConstants
.
UNFOLLOW_EVENT
))
{
// 服务窗取消关注事件
return
new
InAlipayUnFollowExecutor
(
bizContentJson
);
//根据actionParam进行执行器的转发
}
else
if
(
eventType
.
equals
(
AlipayServiceEventConstants
.
CLICK_EVENT
))
{
// 点击事件
return
getClickEventExecutor
(
bizContentJson
);
}
else
if
(
eventType
.
equals
(
AlipayServiceEventConstants
.
ENTER_EVENT
))
{
// 进入事件
return
getEnterEventTypeExecutor
(
bizContentJson
);
}
else
{
// 对于后续支付宝可能新增的类型,统一默认返回AKC响应
return
new
InAlipayDefaultExecutor
(
bizContentJson
);
}
}
/**
* 进入事件执行器
*
* @param bizContentJson
* @return
*/
private
static
ActionExecutor
getEnterEventTypeExecutor
(
JSONObject
bizContentJson
)
{
try
{
JSONObject
param
=
JSONObject
.
fromObject
(
bizContentJson
.
get
(
"ActionParam"
));
JSONObject
scene
=
JSONObject
.
fromObject
(
param
.
get
(
"scene"
));
if
(!
StringUtils
.
isEmpty
(
scene
.
getString
(
"sceneId"
)))
{
//自定义场景参数进入服务窗事件
return
new
InAlipayDIYQRCodeEnterExecutor
(
bizContentJson
);
}
else
{
//普通进入服务窗事件
return
new
InAlipayEnterExecutor
(
bizContentJson
);
}
}
catch
(
Exception
exception
)
{
//无法解析sceneId的情况作为普通进入服务窗事件
return
new
InAlipayEnterExecutor
(
bizContentJson
);
}
}
/**
* 点击事件执行器
*
* @param bizContentJson
* @return
*/
private
static
ActionExecutor
getClickEventExecutor
(
JSONObject
bizContentJson
)
{
String
actionParam
=
bizContentJson
.
getString
(
"ActionParam"
);
if
(
"authentication"
.
equals
(
actionParam
))
{
//申请开发者会员绑定事件: actionParam支付宝服务窗固定值
//TODO 开发者自行实现,开发者若不需要绑定开发者会员,可无需实现
return
null
;
}
else
if
(
"delete"
.
equals
(
actionParam
))
{
//删除开发者会员绑定事件:actionParam支付宝服务窗固定值
//TODO 开发者自行实现,开发者若不需要绑定开发者会员,可无需实现
return
null
;
// 除上述支付宝保留key外,其他key为开发者配置菜单时自定义
}
else
{
//服务窗菜单点击事件:actionParam开发者可以自定义,除不能与authentication和delete重复及特殊字符外,没有其他要求
//"async_image_text"即为开发者自定义的异步发送图文消息的菜单key,这里只是个样例而已
if
(
"async_image_text"
.
equals
(
actionParam
))
{
// 根据配置的菜单具体含义,开发者进行业务应答,这里只是个样例
return
new
InAlipayAsyncMsgSendExecutor
(
bizContentJson
);
// 其他菜单key请开发者自行补充,并执行开发相应响应
}
else
if
(
"xxx"
.
equals
(
actionParam
))
{
// TODO 开发者根据key自行开发相应响应,这里只是个样例
return
null
;
}
else
{
// TODO 开发者根据key自行开发相应响应,这里只是个样例
return
null
;
}
}
}
}
...
...
users/src/main/java/com/alipay/executor/ActionExecutor.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
executor
;
import
com.alipay.common.MyException
;
/**
* 业务执行接口
*
* @author taixu.zqq
* @version $Id: ActionExecutor.java, v 0.1 2014年7月24日 下午3:57:01 taixu.zqq Exp $
*/
public
interface
ActionExecutor
{
/**
* 业务执行方法
* @return
*/
public
String
execute
()
throws
MyException
;
}
...
...
users/src/main/java/com/alipay/executor/InAlipayAsyncMsgSendExecutor.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
executor
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
net.sf.json.JSONObject
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.request.AlipayMobilePublicMessageCustomSendRequest
;
import
com.alipay.api.request.AlipayOpenPublicMessageCustomSendRequest
;
import
com.alipay.api.response.AlipayMobilePublicMessageCustomSendResponse
;
import
com.alipay.api.response.AlipayOpenPublicMessageCustomSendResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
com.alipay.util.AlipayMsgBuildUtil
;
/**
* 菜单点击异步响应执行器
*
* @author baoxing.gbx
* @version $Id: InAlipayAsyncMsgSendExecutor.java, v 0.1 Jul 24, 2014 4:30:38 PM baoxing.gbx Exp $
*/
public
class
InAlipayAsyncMsgSendExecutor
implements
ActionExecutor
{
/** 线程池 */
private
static
ExecutorService
executors
=
Executors
.
newSingleThreadExecutor
();
/** 业务参数 */
private
JSONObject
bizContent
;
public
InAlipayAsyncMsgSendExecutor
(
JSONObject
bizContent
)
{
this
.
bizContent
=
bizContent
;
}
public
InAlipayAsyncMsgSendExecutor
()
{
super
();
}
@Override
public
String
execute
()
{
//取得发起请求的支付宝账号id
final
String
fromUserId
=
bizContent
.
getString
(
"FromUserId"
);
//1. 首先同步响应一个消息
String
syncResponseMsg
=
AlipayMsgBuildUtil
.
buildBaseAckMsg
(
fromUserId
);
//2. 异步发送消息
executors
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
// 2.1 构建一个业务响应消息,开发者根据自行业务构建,这里只是一个简单的样例
String
requestMsg
=
AlipayMsgBuildUtil
.
buildSingleImgTextMsg
(
fromUserId
);
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMessageCustomSendRequest
request
=
new
AlipayOpenPublicMessageCustomSendRequest
();
request
.
setBizContent
(
requestMsg
);
// 2.2 使用SDK接口类发送响应
AlipayOpenPublicMessageCustomSendResponse
response
=
alipayClient
.
execute
(
request
);
// 2.3 开发者根据响应结果处理结果
//这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"异步发送成功,结果为:"
+
response
.
getBody
());
}
else
{
System
.
out
.
println
(
"异步发送失败 code="
+
response
.
getCode
()
+
"msg:"
+
response
.
getMsg
());
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"异步发送失败"
);
}
}
});
return
syncResponseMsg
;
}
}
...
...
users/src/main/java/com/alipay/executor/InAlipayChatTextExecutor.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
executor
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.request.AlipayOpenPublicMessageCustomSendRequest
;
import
com.alipay.api.response.AlipayOpenPublicMessageCustomSendResponse
;
import
com.alipay.common.MyException
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
com.alipay.util.AlipayMsgBuildUtil
;
import
net.sf.json.JSONObject
;
/**
* 聊天执行器(纯文本消息)
*
* @author baoxing.gbx
* @version $Id: InAlipayChatExecutor.java, v 0.1 Jul 28, 2014 5:17:04 PM baoxing.gbx Exp $
*/
public
class
InAlipayChatTextExecutor
implements
ActionExecutor
{
/** 线程池 */
private
static
ExecutorService
executors
=
Executors
.
newSingleThreadExecutor
();
/** 业务参数 */
private
JSONObject
bizContent
;
public
InAlipayChatTextExecutor
(
JSONObject
bizContent
)
{
this
.
bizContent
=
bizContent
;
}
public
InAlipayChatTextExecutor
()
{
super
();
}
/**
*
* @see com.alipay.executor.ActionExecutor#execute()
*/
@Override
public
String
execute
()
throws
MyException
{
//取得发起请求的支付宝账号id
final
String
fromUserId
=
bizContent
.
getString
(
"FromUserId"
);
//1. 首先同步构建ACK响应
String
syncResponseMsg
=
AlipayMsgBuildUtil
.
buildBaseAckMsg
(
fromUserId
);
//2. 异步发送消息
executors
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
// 2.1 构建一个业务响应消息,商户根据自行业务构建,这里只是一个简单的样例
String
requestMsg
=
AlipayMsgBuildUtil
.
buildSingleImgTextMsg
(
fromUserId
);
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMessageCustomSendRequest
request
=
new
AlipayOpenPublicMessageCustomSendRequest
();
request
.
setBizContent
(
requestMsg
);
// 2.2 使用SDK接口类发送响应
AlipayOpenPublicMessageCustomSendResponse
response
=
alipayClient
.
execute
(
request
);
// 2.3 商户根据响应结果处理结果
//这里只是简单的打印,请商户根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"异步发送成功,结果为:"
+
response
.
getBody
());
}
else
{
System
.
out
.
println
(
"异步发送失败 code="
+
response
.
getCode
()
+
"msg:"
+
response
.
getMsg
());
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"异步发送失败"
);
}
}
});
// 3.返回同步的ACK响应
return
syncResponseMsg
;
}
}
...
...
users/src/main/java/com/alipay/executor/InAlipayDIYQRCodeEnterExecutor.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
executor
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.request.AlipayOpenPublicMessageCustomSendRequest
;
import
com.alipay.api.response.AlipayOpenPublicMessageCustomSendResponse
;
import
com.alipay.common.MyException
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
com.alipay.util.AlipayMsgBuildUtil
;
import
net.sf.json.JSONObject
;
/**
* 自定义二维码进入服务窗事件处理器
*
* @author taixu.zqq
* @version $Id: InAlipayDIYQRCodeEnterExecutor.java, v 0.1 2014年7月24日 下午9:22:02 taixu.zqq Exp $
*/
public
class
InAlipayDIYQRCodeEnterExecutor
implements
ActionExecutor
{
/** 线程池 */
private
static
ExecutorService
executors
=
Executors
.
newSingleThreadExecutor
();
/** 业务参数 */
private
JSONObject
bizContent
;
public
InAlipayDIYQRCodeEnterExecutor
(
JSONObject
bizContent
)
{
this
.
bizContent
=
bizContent
;
}
public
InAlipayDIYQRCodeEnterExecutor
()
{
super
();
}
/**
* @see com.alipay.executor.ActionExecutor#executor(java.util.Map)
*/
@Override
public
String
execute
()
throws
MyException
{
//自身业务处理
//理论上,自定义二维码会有sceneId设置,通过该id,开发者开始知道是哪个自定义二维码进入
String
syncResponseMsg
=
""
;
try
{
JSONObject
actionParam
=
JSONObject
.
fromObject
(
bizContent
.
getString
(
"ActionParam"
));
JSONObject
scene
=
JSONObject
.
fromObject
(
actionParam
.
get
(
"scene"
));
String
sceneId
=
scene
.
getString
(
"sceneId"
);
System
.
out
.
println
(
"sceneId:"
+
sceneId
);
//取得发起请求的支付宝账号id
final
String
fromUserId
=
bizContent
.
getString
(
"FromUserId"
);
//1. 首先同步构建ACK响应
syncResponseMsg
=
AlipayMsgBuildUtil
.
buildBaseAckMsg
(
fromUserId
);
//2. 异步发送消息,根据不同的sceneId推送不同的消息(这里的sceneId的意义由商户自己定义)
if
(
"1"
.
equals
(
sceneId
)){
executors
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
// 2.1 构建一个业务响应消息,开发者根据自行业务构建,这里只是一个简单的样例
String
requestMsg
=
"{'msg_type':'text','text':{'content':'通过sceneId为1的二维码关注服务窗'}, 'to_user_id':'"
+
fromUserId
+
"'}"
;
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMessageCustomSendRequest
request
=
new
AlipayOpenPublicMessageCustomSendRequest
();
request
.
setBizContent
(
requestMsg
);
// 2.2 使用SDK接口类发送响应
AlipayOpenPublicMessageCustomSendResponse
response
=
alipayClient
.
execute
(
request
);
// 2.3 开发者根据响应结果处理结果
//这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"异步发送成功,结果为:"
+
response
.
getBody
());
}
else
{
System
.
out
.
println
(
"异步发送失败 code="
+
response
.
getCode
()
+
"msg:"
+
response
.
getMsg
());
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"异步发送失败"
);
}
}
});
}
else
if
(
"2"
.
equals
(
sceneId
))
{
executors
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
// 2.1 构建一个业务响应消息,开发者根据自行业务构建,这里只是一个简单的样例
String
requestMsg
=
"{'msg_type':'text','text':{'content':'通过sceneId为2的二维码关注服务窗'}, 'to_user_id':'"
+
fromUserId
+
"'}"
;
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMessageCustomSendRequest
request
=
new
AlipayOpenPublicMessageCustomSendRequest
();
request
.
setBizContent
(
requestMsg
);
// 2.2 使用SDK接口类发送响应
AlipayOpenPublicMessageCustomSendResponse
response
=
alipayClient
.
execute
(
request
);
// 2.3 开发者根据响应结果处理结果
//这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"异步发送成功,结果为:"
+
response
.
getBody
());
}
else
{
System
.
out
.
println
(
"异步发送失败 code="
+
response
.
getCode
()
+
"msg:"
+
response
.
getMsg
());
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"异步发送失败"
);
}
}
});
}
}
catch
(
Exception
exception
)
{
throw
new
MyException
(
"转换json错误,检查数据格式"
);
}
// 同步返回ACK响应
return
syncResponseMsg
;
}
}
...
...
users/src/main/java/com/alipay/executor/InAlipayDefaultExecutor.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
executor
;
import
net.sf.json.JSONObject
;
import
com.alipay.common.MyException
;
import
com.alipay.util.AlipayMsgBuildUtil
;
/**
* 默认执行器(该执行器仅发送ack响应)
*
* @author baoxing.gbx
* @version $Id: InAlipayDefaultExecutor.java, v 0.1 Jul 30, 2014 10:22:11 AM baoxing.gbx Exp $
*/
public
class
InAlipayDefaultExecutor
implements
ActionExecutor
{
/** 业务参数 */
private
JSONObject
bizContent
;
public
InAlipayDefaultExecutor
(
JSONObject
bizContent
)
{
this
.
bizContent
=
bizContent
;
}
public
InAlipayDefaultExecutor
()
{
super
();
}
/**
*
* @see com.alipay.executor.ActionExecutor#execute()
*/
@Override
public
String
execute
()
throws
MyException
{
//取得发起请求的支付宝账号id
final
String
fromUserId
=
bizContent
.
getString
(
"FromUserId"
);
return
AlipayMsgBuildUtil
.
buildBaseAckMsg
(
fromUserId
);
}
}
...
...
users/src/main/java/com/alipay/executor/InAlipayEnterExecutor.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
executor
;
import
net.sf.json.JSONObject
;
import
com.alipay.common.MyException
;
import
com.alipay.util.AlipayMsgBuildUtil
;
/**
* 普通进入服务窗事件处理器
* 用户进入服务窗,可在此处理器处理开发者需要的业务逻辑
*
* @author taixu.zqq
* @version $Id: InAlipayEnterExecutor.java, v 0.1 2014年7月24日 下午7:58:25 taixu.zqq Exp $
*/
public
class
InAlipayEnterExecutor
implements
ActionExecutor
{
/** 业务参数 */
private
JSONObject
bizContent
;
public
InAlipayEnterExecutor
(
JSONObject
bizContent
)
{
this
.
bizContent
=
bizContent
;
}
public
InAlipayEnterExecutor
()
{
super
();
}
/**
* @see com.alipay.executor.ActionExecutor#executor(java.util.Map)
*/
@Override
public
String
execute
()
throws
MyException
{
//自身业务处理,这里只是简单打印下
//建议开发者自行处理采用异步方式,参见InAlipayChatTextExecutor
System
.
out
.
println
(
"欢迎光临!"
);
// 同步返回ack响应
return
this
.
setResponse
();
}
/**
* 设置response返回数据
*
* @return
*/
private
String
setResponse
()
throws
MyException
{
//取得发起请求的支付宝账号id
String
fromUserId
=
bizContent
.
getString
(
"FromUserId"
);
return
AlipayMsgBuildUtil
.
buildBaseAckMsg
(
fromUserId
);
}
}
...
...
users/src/main/java/com/alipay/executor/InAlipayFollowExecutor.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
executor
;
import
net.sf.json.JSONObject
;
import
com.alipay.util.AlipayMsgBuildUtil
;
/**
* 关注服务窗执行器
*
* @author baoxing.gbx
* @version $Id: InAlipayFollowExecutor.java, v 0.1 Jul 24, 2014 4:29:04 PM baoxing.gbx Exp $
*/
public
class
InAlipayFollowExecutor
implements
ActionExecutor
{
/** 业务参数 */
private
JSONObject
bizContent
;
public
InAlipayFollowExecutor
(
JSONObject
bizContent
)
{
this
.
bizContent
=
bizContent
;
}
public
InAlipayFollowExecutor
()
{
super
();
}
@Override
public
String
execute
()
{
//TODO 根据支付宝请求参数,可以将支付宝账户UID-服务窗ID关系持久化,用于后续开发者自己的其他操作
// 这里只是个样例程序,所以这步省略。
// 直接构造简单响应结果返回
final
String
fromUserId
=
bizContent
.
getString
(
"FromUserId"
);
return
AlipayMsgBuildUtil
.
buildBaseAckMsg
(
fromUserId
);
}
}
...
...
users/src/main/java/com/alipay/executor/InAlipayUnFollowExecutor.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
executor
;
import
net.sf.json.JSONObject
;
import
com.alipay.util.AlipayMsgBuildUtil
;
/**
* 取消关注服务窗执行器
*
* @author baoxing.gbx
* @version $Id: InAlipayUnFollowExecutor.java, v 0.1 Jul 24, 2014 4:29:29 PM baoxing.gbx Exp $
*/
public
class
InAlipayUnFollowExecutor
implements
ActionExecutor
{
/** 业务参数 */
private
JSONObject
bizContent
;
public
InAlipayUnFollowExecutor
(
JSONObject
bizContent
)
{
this
.
bizContent
=
bizContent
;
}
public
InAlipayUnFollowExecutor
()
{
super
();
}
@Override
public
String
execute
()
{
//取得发起请求的支付宝账号id
final
String
fromUserId
=
bizContent
.
getString
(
"FromUserId"
);
//TODO 根据支付宝请求参数,开发者可以删除之前保存的本地支付宝UID-服务窗ID的关注关系
// 这里只是个样例程序,所以这步省略。
return
AlipayMsgBuildUtil
.
buildBaseAckMsg
(
fromUserId
);
}
}
...
...
users/src/main/java/com/alipay/executor/InAlipayVerifyExecutor.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
executor
;
import
com.alipay.common.MyException
;
import
com.alipay.constants.AlipayServiceEnvConstants
;
/**
* 开通服务窗开发者功能处理器
*
* @author taixu.zqq
* @version $Id: InAlipayOpenExecutor.java, v 0.1 2014年7月24日 下午5:05:13 taixu.zqq Exp $
*/
public
class
InAlipayVerifyExecutor
implements
ActionExecutor
{
/**
* @see com.alipay.executor.ActionExecutor#executor(java.util.Map)
*/
@Override
public
String
execute
()
throws
MyException
{
return
this
.
setResponse
();
}
/**
* 设置response返回数据
*
* @return
*/
private
String
setResponse
()
throws
MyException
{
//固定响应格式,必须按此格式返回
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
"<success>"
).
append
(
Boolean
.
TRUE
.
toString
()).
append
(
"</success>"
);
builder
.
append
(
"<biz_content>"
).
append
(
AlipayServiceEnvConstants
.
PUBLIC_KEY
)
.
append
(
"</biz_content>"
);
return
builder
.
toString
();
}
}
...
...
users/src/main/java/com/alipay/extension/AlipayPublicExtension.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
extension
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.FileItem
;
import
com.alipay.api.domain.AlipayOpenPublicDefaultExtensionCreateModel
;
import
com.alipay.api.domain.AlipayOpenPublicPersonalizedExtensionCreateModel
;
import
com.alipay.api.domain.AlipayOpenPublicPersonalizedExtensionDeleteModel
;
import
com.alipay.api.domain.ExtensionArea
;
import
com.alipay.api.domain.LabelRule
;
import
com.alipay.api.request.AlipayOfflineMaterialImageUploadRequest
;
import
com.alipay.api.request.AlipayOpenPublicDefaultExtensionCreateRequest
;
import
com.alipay.api.request.AlipayOpenPublicPersonalizedExtensionBatchqueryRequest
;
import
com.alipay.api.request.AlipayOpenPublicPersonalizedExtensionCreateRequest
;
import
com.alipay.api.request.AlipayOpenPublicPersonalizedExtensionDeleteRequest
;
import
com.alipay.api.response.AlipayOfflineMaterialImageUploadResponse
;
import
com.alipay.api.response.AlipayOpenPublicDefaultExtensionCreateResponse
;
import
com.alipay.api.response.AlipayOpenPublicPersonalizedExtensionBatchqueryResponse
;
import
com.alipay.api.response.AlipayOpenPublicPersonalizedExtensionCreateResponse
;
import
com.alipay.api.response.AlipayOpenPublicPersonalizedExtensionDeleteResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
/**
* 扩展区接口调用示例
*
* @author liliang
* @version $Id: AlipayPublicExtension.java, v 0.1 2017年6月28日 下午3:00:10 liliang Exp $
*/
public
class
AlipayPublicExtension
{
public
static
void
main
(
String
[]
args
)
{
// imageUpload();
personalizedExtensionCreate
();
// extensionDelete();
// batchQueryExtensions();
}
//使用alipay.offline.material.image.upload接口预先上传图片
public
static
void
imageUpload
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOfflineMaterialImageUploadRequest
request
=
new
AlipayOfflineMaterialImageUploadRequest
();
request
.
setImageType
(
"jpg"
);
request
.
setImageName
(
"chengzetest001"
);
FileItem
ImageContent
=
new
FileItem
(
"/Users/liliang/Documents/1.jpg"
);
request
.
setImageContent
(
ImageContent
);
AlipayOfflineMaterialImageUploadResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//默认扩展区创建
public
static
void
defaultExtensionCreate
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicDefaultExtensionCreateRequest
request
=
new
AlipayOpenPublicDefaultExtensionCreateRequest
();
AlipayOpenPublicDefaultExtensionCreateModel
model
=
new
AlipayOpenPublicDefaultExtensionCreateModel
();
List
<
ExtensionArea
>
areas
=
new
ArrayList
<
ExtensionArea
>();
ExtensionArea
area
=
new
ExtensionArea
();
area
.
setType
(
"image"
);
area
.
setGotoUrl
(
"https://baidu.com"
);
area
.
setName
(
"扩展区1"
);
area
.
setHeight
(
500
l
);
//使用alipay.offline.material.image.upload接口预先上传图片
area
.
setUrl
(
"https://oalipay-dl-django.alicdn.com/rest/1.0/image?fileIds=JVo6g7dXRHGoGNllHDFYgwAAACMAAQQD&zoom=original"
);
areas
.
add
(
area
);
model
.
setAreas
(
areas
);
request
.
setBizModel
(
model
);
AlipayOpenPublicDefaultExtensionCreateResponse
response
=
new
AlipayOpenPublicDefaultExtensionCreateResponse
();
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//个性化扩展区创建
public
static
void
personalizedExtensionCreate
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicPersonalizedExtensionCreateRequest
request
=
new
AlipayOpenPublicPersonalizedExtensionCreateRequest
();
AlipayOpenPublicPersonalizedExtensionCreateModel
model
=
new
AlipayOpenPublicPersonalizedExtensionCreateModel
();
List
<
ExtensionArea
>
areas
=
new
ArrayList
<
ExtensionArea
>();
List
<
LabelRule
>
labelRules
=
new
ArrayList
<
LabelRule
>();
ExtensionArea
area
=
new
ExtensionArea
();
area
.
setType
(
"image"
);
area
.
setGotoUrl
(
"https://baidu.com"
);
area
.
setName
(
"扩展区1"
);
area
.
setHeight
(
500
l
);
//使用alipay.offline.material.image.upload接口预先上传图片
area
.
setUrl
(
"https://oalipay-dl-django.alicdn.com/rest/1.0/image?fileIds=JVo6g7dXRHGoGNllHDFYgwAAACMAAQQD&zoom=original"
);
areas
.
add
(
area
);
LabelRule
labelRule
=
new
LabelRule
();
labelRule
.
setLabelId
(
"9"
);
labelRule
.
setLabelValue
(
"湖北"
);
labelRules
.
add
(
labelRule
);
model
.
setAreas
(
areas
);
model
.
setLabelRule
(
labelRules
);
request
.
setBizModel
(
model
);
AlipayOpenPublicPersonalizedExtensionCreateResponse
response
=
new
AlipayOpenPublicPersonalizedExtensionCreateResponse
();
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//化扩展区删除
public
static
void
extensionDelete
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicPersonalizedExtensionDeleteRequest
request
=
new
AlipayOpenPublicPersonalizedExtensionDeleteRequest
();
AlipayOpenPublicPersonalizedExtensionDeleteModel
model
=
new
AlipayOpenPublicPersonalizedExtensionDeleteModel
();
//删除默认扩展区,extension_key为default
// model.setExtensionKey("default");
model
.
setExtensionKey
(
"2015121600984320_c8cc9dc6-cd22-4b97-b435-0ed1e516b049"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicPersonalizedExtensionDeleteResponse
response
=
new
AlipayOpenPublicPersonalizedExtensionDeleteResponse
();
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//个性化扩展区批量查询
public
static
void
batchQueryExtensions
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicPersonalizedExtensionBatchqueryRequest
request
=
new
AlipayOpenPublicPersonalizedExtensionBatchqueryRequest
();
AlipayOpenPublicPersonalizedExtensionBatchqueryResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
}
...
...
users/src/main/java/com/alipay/factory/AlipayAPIClientFactory.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
factory
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.DefaultAlipayClient
;
import
com.alipay.constants.AlipayServiceEnvConstants
;
/**
* API调用客户端工厂
*
* @author taixu.zqq
* @version $Id: AlipayAPIClientFactory.java, v 0.1 2014年7月23日 下午5:07:45 taixu.zqq Exp $
*/
public
class
AlipayAPIClientFactory
{
/** API调用客户端 */
private
static
AlipayClient
alipayClient
;
/**
* 获得API调用客户端
*
* @return
*/
public
static
AlipayClient
getAlipayClient
(){
if
(
null
==
alipayClient
){
alipayClient
=
new
DefaultAlipayClient
(
AlipayServiceEnvConstants
.
ALIPAY_GATEWAY
,
AlipayServiceEnvConstants
.
APP_ID
,
AlipayServiceEnvConstants
.
PRIVATE_KEY
,
"json"
,
AlipayServiceEnvConstants
.
CHARSET
,
AlipayServiceEnvConstants
.
ALIPAY_PUBLIC_KEY
,
AlipayServiceEnvConstants
.
SIGN_TYPE
);
}
return
alipayClient
;
}
}
...
...
users/src/main/java/com/alipay/generalize/AlipayOpenGeneralize.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
generalize
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.domain.AlipayOpenPublicQrcodeCreateModel
;
import
com.alipay.api.domain.AlipayOpenPublicShortlinkCreateModel
;
import
com.alipay.api.domain.CodeInfo
;
import
com.alipay.api.domain.Scene
;
import
com.alipay.api.request.AlipayOpenPublicQrcodeCreateRequest
;
import
com.alipay.api.request.AlipayOpenPublicShortlinkCreateRequest
;
import
com.alipay.api.response.AlipayOpenPublicQrcodeCreateResponse
;
import
com.alipay.api.response.AlipayOpenPublicShortlinkCreateResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
/**
* 推广支持接口调用示例
* @author liliang
*
*/
public
class
AlipayOpenGeneralize
{
// 带参推广二维码接口
public
static
void
qrcodeCreate
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicQrcodeCreateRequest
request
=
new
AlipayOpenPublicQrcodeCreateRequest
();
AlipayOpenPublicQrcodeCreateModel
model
=
new
AlipayOpenPublicQrcodeCreateModel
();
CodeInfo
codeInfo
=
new
CodeInfo
();
Scene
scene
=
new
Scene
();
scene
.
setSceneId
(
"1"
);
codeInfo
.
setGotoUrl
(
"https://xxxxxx.com"
);
codeInfo
.
setScene
(
scene
);
model
.
setCodeInfo
(
codeInfo
);
model
.
setCodeType
(
"TEMP"
);
model
.
setExpireSecond
(
"1800"
);
model
.
setShowLogo
(
"Y"
);
request
.
setBizModel
(
model
);
System
.
out
.
println
(
request
.
getBizContent
());
AlipayOpenPublicQrcodeCreateResponse
response
=
new
AlipayOpenPublicQrcodeCreateResponse
();
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: 异常处理
}
}
// 带参推广短链接接口
public
static
void
shortlinkCreate
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicShortlinkCreateRequest
request
=
new
AlipayOpenPublicShortlinkCreateRequest
();
AlipayOpenPublicShortlinkCreateModel
model
=
new
AlipayOpenPublicShortlinkCreateModel
();
model
.
setSceneId
(
"2"
);
model
.
setRemark
(
"门店1支付推广"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicShortlinkCreateResponse
response
=
new
AlipayOpenPublicShortlinkCreateResponse
();
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: 异常处理
}
}
public
static
void
main
(
String
[]
args
)
{
qrcodeCreate
();
// shortlinkCreate();
}
}
...
...
users/src/main/java/com/alipay/label/AlipayPublicLabel.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
label
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.domain.AlipayOpenPublicLifeLabelCreateModel
;
import
com.alipay.api.domain.AlipayOpenPublicLifeLabelDeleteModel
;
import
com.alipay.api.domain.AlipayOpenPublicLifeLabelModifyModel
;
import
com.alipay.api.domain.AlipayOpenPublicMatchuserLabelCreateModel
;
import
com.alipay.api.domain.AlipayOpenPublicMatchuserLabelDeleteModel
;
import
com.alipay.api.domain.Matcher
;
import
com.alipay.api.request.AlipayOpenPublicLifeLabelBatchqueryRequest
;
import
com.alipay.api.request.AlipayOpenPublicLifeLabelCreateRequest
;
import
com.alipay.api.request.AlipayOpenPublicLifeLabelDeleteRequest
;
import
com.alipay.api.request.AlipayOpenPublicLifeLabelModifyRequest
;
import
com.alipay.api.request.AlipayOpenPublicMatchuserLabelCreateRequest
;
import
com.alipay.api.request.AlipayOpenPublicMatchuserLabelDeleteRequest
;
import
com.alipay.api.response.AlipayOpenPublicLifeLabelBatchqueryResponse
;
import
com.alipay.api.response.AlipayOpenPublicLifeLabelCreateResponse
;
import
com.alipay.api.response.AlipayOpenPublicLifeLabelDeleteResponse
;
import
com.alipay.api.response.AlipayOpenPublicLifeLabelModifyResponse
;
import
com.alipay.api.response.AlipayOpenPublicMatchuserLabelCreateResponse
;
import
com.alipay.api.response.AlipayOpenPublicMatchuserLabelDeleteResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
/**
* 服务窗自定义标签接口调用示例
*
* @author liliang
*
*/
public
class
AlipayPublicLabel
{
public
static
void
main
(
String
[]
args
)
{
createLifeLabel
();
// modifyLifeLabel();
// lifeLabelBatchQuery();
// deleteLifeLabel();
// matchuserLabelAdd();
// matchuserLabelDel();
}
//创建自定义标签
public
static
void
createLifeLabel
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicLifeLabelCreateRequest
request
=
new
AlipayOpenPublicLifeLabelCreateRequest
();
AlipayOpenPublicLifeLabelCreateModel
model
=
new
AlipayOpenPublicLifeLabelCreateModel
();
model
.
setLabelName
(
"线上测试标签005"
);
model
.
setDataType
(
"String"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicLifeLabelCreateResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//修改自定义标签
public
static
void
modifyLifeLabel
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicLifeLabelModifyRequest
request
=
new
AlipayOpenPublicLifeLabelModifyRequest
();
AlipayOpenPublicLifeLabelModifyModel
model
=
new
AlipayOpenPublicLifeLabelModifyModel
();
model
.
setLabelId
(
"6"
);
model
.
setLabelName
(
"测试标签003"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicLifeLabelModifyResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//批量查询自定义标签
public
static
void
lifeLabelBatchQuery
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicLifeLabelBatchqueryRequest
request
=
new
AlipayOpenPublicLifeLabelBatchqueryRequest
();
AlipayOpenPublicLifeLabelBatchqueryResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//删除自定义标签
public
static
void
deleteLifeLabel
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicLifeLabelDeleteRequest
request
=
new
AlipayOpenPublicLifeLabelDeleteRequest
();
AlipayOpenPublicLifeLabelDeleteModel
model
=
new
AlipayOpenPublicLifeLabelDeleteModel
();
model
.
setLabelId
(
"6"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicLifeLabelDeleteResponse
response
=
new
AlipayOpenPublicLifeLabelDeleteResponse
();
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//匹配用户打标
public
static
void
matchuserLabelAdd
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMatchuserLabelCreateRequest
request
=
new
AlipayOpenPublicMatchuserLabelCreateRequest
();
AlipayOpenPublicMatchuserLabelCreateModel
model
=
new
AlipayOpenPublicMatchuserLabelCreateModel
();
model
.
setLabelId
(
"9"
);
model
.
setLabelValue
(
"湖北"
);
List
<
Matcher
>
matchers
=
new
ArrayList
<
Matcher
>();
Matcher
matcher
=
new
Matcher
();
// matcher.setMobileNo("15926225236");
matcher
.
setUserId
(
"2088102877563751"
);
matchers
.
add
(
matcher
);
model
.
setMatchers
(
matchers
);
request
.
setBizModel
(
model
);
AlipayOpenPublicMatchuserLabelCreateResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//匹配用户标签取消
public
static
void
matchuserLabelDel
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMatchuserLabelDeleteRequest
request
=
new
AlipayOpenPublicMatchuserLabelDeleteRequest
();
AlipayOpenPublicMatchuserLabelDeleteModel
model
=
new
AlipayOpenPublicMatchuserLabelDeleteModel
();
model
.
setLabelId
(
"6"
);
List
<
Matcher
>
matchers
=
new
ArrayList
<
Matcher
>();
Matcher
matcher
=
new
Matcher
();
matcher
.
setMobileNo
(
"15926225236"
);
matchers
.
add
(
matcher
);
model
.
setMatchers
(
matchers
);
request
.
setBizModel
(
model
);
AlipayOpenPublicMatchuserLabelDeleteResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
}
...
...
users/src/main/java/com/alipay/menu/AlipayPublicMenu.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
menu
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.FileItem
;
import
com.alipay.api.domain.AlipayOpenPublicMenuCreateModel
;
import
com.alipay.api.domain.AlipayOpenPublicMenuModifyModel
;
import
com.alipay.api.domain.AlipayOpenPublicPersonalizedMenuCreateModel
;
import
com.alipay.api.domain.AlipayOpenPublicPersonalizedMenuDeleteModel
;
import
com.alipay.api.domain.ButtonObject
;
import
com.alipay.api.domain.LabelRule
;
import
com.alipay.api.request.AlipayOfflineMaterialImageUploadRequest
;
import
com.alipay.api.request.AlipayOpenPublicMenuBatchqueryRequest
;
import
com.alipay.api.request.AlipayOpenPublicMenuCreateRequest
;
import
com.alipay.api.request.AlipayOpenPublicMenuModifyRequest
;
import
com.alipay.api.request.AlipayOpenPublicPersonalizedMenuCreateRequest
;
import
com.alipay.api.request.AlipayOpenPublicPersonalizedMenuDeleteRequest
;
import
com.alipay.api.response.AlipayOfflineMaterialImageUploadResponse
;
import
com.alipay.api.response.AlipayOpenPublicMenuBatchqueryResponse
;
import
com.alipay.api.response.AlipayOpenPublicMenuCreateResponse
;
import
com.alipay.api.response.AlipayOpenPublicMenuModifyResponse
;
import
com.alipay.api.response.AlipayOpenPublicPersonalizedMenuCreateResponse
;
import
com.alipay.api.response.AlipayOpenPublicPersonalizedMenuDeleteResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
/**
* 服务窗菜单相关接口调用示例
*
* @author liliang
*
*/
public
class
AlipayPublicMenu
{
public
static
void
main
(
String
[]
args
)
{
// imageUpload();
// createMenu();
// modifyMenu();
// createPersonalizedMenu();
// deletePersonalizedMenu();
menuBatchQuery
();
}
//使用alipay.offline.material.image.upload接口预先上传图片
public
static
void
imageUpload
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOfflineMaterialImageUploadRequest
request
=
new
AlipayOfflineMaterialImageUploadRequest
();
request
.
setImageType
(
"jpg"
);
request
.
setImageName
(
"chengzetest001"
);
FileItem
ImageContent
=
new
FileItem
(
"/Users/liliang/Documents/picture/3.jpg"
);
request
.
setImageContent
(
ImageContent
);
AlipayOfflineMaterialImageUploadResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
// 创建生活号默认菜单信息
public
static
void
createMenu
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMenuCreateRequest
request
=
new
AlipayOpenPublicMenuCreateRequest
();
AlipayOpenPublicMenuCreateModel
model
=
new
AlipayOpenPublicMenuCreateModel
();
List
<
ButtonObject
>
list
=
new
ArrayList
<
ButtonObject
>();
ButtonObject
button
=
new
ButtonObject
();
button
.
setName
(
"测试"
);
button
.
setActionType
(
"link"
);
button
.
setActionParam
(
"www.baidu.com"
);
list
.
add
(
button
);
model
.
setButton
(
list
);
model
.
setType
(
"text"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicMenuCreateResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
// 生活号默认菜单更新
public
static
void
modifyMenu
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMenuModifyRequest
request
=
new
AlipayOpenPublicMenuModifyRequest
();
AlipayOpenPublicMenuModifyModel
model
=
new
AlipayOpenPublicMenuModifyModel
();
List
<
ButtonObject
>
list
=
new
ArrayList
<
ButtonObject
>();
ButtonObject
button
=
new
ButtonObject
();
button
.
setName
(
"测试"
);
button
.
setActionType
(
"link"
);
button
.
setActionParam
(
"www.baidu.com"
);
list
.
add
(
button
);
model
.
setButton
(
list
);
model
.
setType
(
"text"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicMenuModifyResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//创建个性化菜单
public
static
void
createPersonalizedMenu
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicPersonalizedMenuCreateRequest
request
=
new
AlipayOpenPublicPersonalizedMenuCreateRequest
();
AlipayOpenPublicPersonalizedMenuCreateModel
model
=
new
AlipayOpenPublicPersonalizedMenuCreateModel
();
model
.
setType
(
"icon"
);
List
<
ButtonObject
>
list
=
new
ArrayList
<
ButtonObject
>();
ButtonObject
button
=
new
ButtonObject
();
button
.
setName
(
"测试"
);
button
.
setActionType
(
"link"
);
button
.
setActionParam
(
"www.baidu.com"
);
button
.
setIcon
(
"https://oalipay-dl-django.alicdn.com/rest/1.0/image?fileIds=OPwy4WqdSaWKYaLCe6-mqQAAACMAAQED&zoom=original"
);
list
.
add
(
button
);
model
.
setButton
(
list
);
List
<
LabelRule
>
labelRules
=
new
ArrayList
<
LabelRule
>();
LabelRule
labelRule
=
new
LabelRule
();
labelRule
.
setLabelId
(
"15"
);
labelRule
.
setLabelValue
(
"湖北"
);
labelRules
.
add
(
labelRule
);
model
.
setLabelRule
(
labelRules
);
request
.
setBizModel
(
model
);
AlipayOpenPublicPersonalizedMenuCreateResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//个性化菜单删除
public
static
void
deletePersonalizedMenu
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicPersonalizedMenuDeleteRequest
request
=
new
AlipayOpenPublicPersonalizedMenuDeleteRequest
();
AlipayOpenPublicPersonalizedMenuDeleteModel
model
=
new
AlipayOpenPublicPersonalizedMenuDeleteModel
();
model
.
setMenuKey
(
""
);
request
.
setBizModel
(
model
);
AlipayOpenPublicPersonalizedMenuDeleteResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//菜单批量查询
public
static
void
menuBatchQuery
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMenuBatchqueryRequest
request
=
new
AlipayOpenPublicMenuBatchqueryRequest
();
AlipayOpenPublicMenuBatchqueryResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
err
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
}
...
...
users/src/main/java/com/alipay/msg/ToAlipayGroupSendImgTextMsg.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
msg
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.request.AlipayOpenPublicMessageTotalSendRequest
;
import
com.alipay.api.response.AlipayOpenPublicMessageTotalSendResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
com.alipay.util.AlipayMsgBuildUtil
;
/**
* 开发者群发消息接口(群发图文消息)
*
* @author baoxing.gbx
* @version $Id: ToAlipayGroupSendImgTextMsg.java, v 0.1 Jul 25, 2014 3:41:40 PM baoxing.gbx Exp $
*/
public
class
ToAlipayGroupSendImgTextMsg
{
/**
*
* @param args
*/
public
static
void
main
(
String
[]
args
)
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
// 使用SDK,构建群发请求模型
AlipayOpenPublicMessageTotalSendRequest
request
=
new
AlipayOpenPublicMessageTotalSendRequest
();
request
.
setBizContent
(
AlipayMsgBuildUtil
.
buildGroupImgTextMsg
());
try
{
// 使用SDK,调用群发接口发送图文消息
AlipayOpenPublicMessageTotalSendResponse
response
=
alipayClient
.
execute
(
request
);
//这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"消息发送成功 : response = "
+
response
.
getBody
());
}
else
{
System
.
out
.
println
(
"消息发送失败 code="
+
response
.
getCode
()
+
"msg="
+
response
.
getMsg
());
}
}
catch
(
AlipayApiException
e
)
{
System
.
out
.
println
(
"消息发送失败"
);
}
}
}
...
...
users/src/main/java/com/alipay/msg/ToAlipayGroupSendTextMsg.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
msg
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.request.AlipayOpenPublicMessageTotalSendRequest
;
import
com.alipay.api.response.AlipayOpenPublicMessageTotalSendResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
com.alipay.util.AlipayMsgBuildUtil
;
/**
* 开发者群发消息接口(群发纯文本消息)
*
* @author baoxing.gbx
* @version $Id: ToAlipayGroupSendTextMsg.java, v 0.1 Jul 25, 2014 3:42:09 PM baoxing.gbx Exp $
*/
public
class
ToAlipayGroupSendTextMsg
{
/**
*
* @param args
*/
public
static
void
main
(
String
[]
args
)
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
// 使用SDK,构建群发请求模型
AlipayOpenPublicMessageTotalSendRequest
request
=
new
AlipayOpenPublicMessageTotalSendRequest
();
request
.
setBizContent
(
AlipayMsgBuildUtil
.
buildGroupTextMsg
());
try
{
// 使用SDK,调用群发接口发送纯文本消息
AlipayOpenPublicMessageTotalSendResponse
response
=
alipayClient
.
execute
(
request
);
//这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"消息发送成功 : response = "
+
response
.
getBody
());
}
else
{
System
.
out
.
println
(
"消息发送失败 code="
+
response
.
getCode
()
+
"msg="
+
response
.
getMsg
());
}
}
catch
(
AlipayApiException
e
)
{
System
.
out
.
println
(
"消息发送失败"
);
}
}
}
...
...
users/src/main/java/com/alipay/msg/ToAlipayLabelSendMsg.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
msg
;
import
java.util.HashMap
;
import
java.util.Map
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.request.AlipayOpenPublicMessageSingleSendRequest
;
import
com.alipay.api.response.AlipayOpenPublicMessageSingleSendResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
net.sf.json.JSONObject
;
/**
* 服务窗组发消息(标签组发消息接口)
* @author liliang
*
*/
public
class
ToAlipayLabelSendMsg
{
//单发模板消息,需要先领取对应的消息模板,参数要根据要使用的模板样式来拼接,具体说明可参见开放平台接口文档
public
static
void
main
(
String
[]
args
)
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicMessageSingleSendRequest
request
=
new
AlipayOpenPublicMessageSingleSendRequest
();
Map
<
String
,
Object
>
bizMap
=
new
HashMap
<
String
,
Object
>();
bizMap
.
put
(
"to_user_id"
,
"2088802608984030"
);
Map
<
String
,
Object
>
templateMap
=
new
HashMap
<
String
,
Object
>();
templateMap
.
put
(
"template_id"
,
"2cadf4d7b89648fd87a30c8ee3b4b505"
);
Map
<
String
,
Object
>
contextMap
=
new
HashMap
<
String
,
Object
>();
contextMap
.
put
(
"head_color"
,
"#85be53"
);
contextMap
.
put
(
"url"
,
"http://m.baidu.com"
);
contextMap
.
put
(
"action_name"
,
"查看详情"
);
Map
<
String
,
Object
>
first
=
new
HashMap
<
String
,
Object
>();
first
.
put
(
"value"
,
"亲爱的李亮同学你好,现在是李亮在给你发消息"
);
Map
<
String
,
Object
>
keyword1
=
new
HashMap
<
String
,
Object
>();
keyword1
.
put
(
"value"
,
"12345"
);
Map
<
String
,
Object
>
keyword2
=
new
HashMap
<
String
,
Object
>();
keyword2
.
put
(
"value"
,
"测试交易"
);
Map
<
String
,
Object
>
keyword3
=
new
HashMap
<
String
,
Object
>();
keyword3
.
put
(
"value"
,
"2016-08-02 15:16:00"
);
Map
<
String
,
Object
>
keyword4
=
new
HashMap
<
String
,
Object
>();
keyword4
.
put
(
"value"
,
"宝剑锋从磨砺出,梅花香自苦寒来!"
);
Map
<
String
,
Object
>
remark
=
new
HashMap
<
String
,
Object
>();
remark
.
put
(
"value"
,
"哈哈哈哈"
);
contextMap
.
put
(
"first"
,
first
);
contextMap
.
put
(
"keyword1"
,
keyword1
);
contextMap
.
put
(
"keyword2"
,
keyword2
);
contextMap
.
put
(
"keyword3"
,
keyword3
);
contextMap
.
put
(
"keyword4"
,
keyword4
);
contextMap
.
put
(
"remark"
,
remark
);
templateMap
.
put
(
"context"
,
contextMap
);
bizMap
.
put
(
"template"
,
templateMap
);
request
.
setBizContent
(
JSONObject
.
fromObject
(
bizMap
).
toString
());
System
.
out
.
println
(
request
.
getBizContent
());
AlipayOpenPublicMessageSingleSendResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
}
...
...
users/src/main/java/com/alipay/msg/ToAlipaySingleSendImgTextMsg.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
msg
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.request.AlipayOpenPublicMessageCustomSendRequest
;
import
com.alipay.api.response.AlipayOpenPublicMessageCustomSendResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
com.alipay.util.AlipayMsgBuildUtil
;
/**
* 开发者单发图文消息
*
* @author baoxing.gbx
* @version $Id: ToAlipaySingleSendImgTextMsg.java, v 0.1 Jul 25, 2014 3:40:35 PM baoxing.gbx Exp $
*/
public
class
ToAlipaySingleSendImgTextMsg
{
/** 发给哪个用户 这是测试账号,开发者请自行改为实际的userId */
//aYMvrMC8+qdi3Mj1lqxRZJPUsrychFTewHXFVXq5ySDxWgIluiZN3K2r70Eebm4r01
private
static
String
TO_USER_ID
=
"aYMvrMC8+qdi3Mj1lqxRZJPUsrychFTewHXFVXq5ySDxWgIluiZN3K2r70Eebm4r01"
;
/**
*
* @param args
*/
public
static
void
main
(
String
[]
args
)
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
// 使用SDK,构建单发请求模型
AlipayOpenPublicMessageCustomSendRequest
request
=
new
AlipayOpenPublicMessageCustomSendRequest
();
request
.
setBizContent
(
AlipayMsgBuildUtil
.
buildSingleImgTextMsg
(
TO_USER_ID
));
try
{
// 使用SDK,调用单发接口发送图文消息
AlipayOpenPublicMessageCustomSendResponse
response
=
alipayClient
.
execute
(
request
);
//这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"消息发送成功 : response = "
+
response
.
getBody
());
}
else
{
System
.
out
.
println
(
"消息发送失败 code="
+
response
.
getCode
()
+
"msg="
+
response
.
getMsg
());
}
}
catch
(
AlipayApiException
e
)
{
System
.
out
.
println
(
"消息发送失败"
);
}
}
}
...
...
users/src/main/java/com/alipay/msg/ToAlipaySingleSendTextMsg.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
msg
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.request.AlipayOpenPublicMessageCustomSendRequest
;
import
com.alipay.api.response.AlipayOpenPublicMessageCustomSendResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
com.alipay.util.AlipayMsgBuildUtil
;
/**
* 开发者单发纯文本消息
*
* @author baoxing.gbx
* @version $Id: ToAlipaySingleSendTextMsg.java, v 0.1 Jul 25, 2014 3:39:35 PM baoxing.gbx Exp $
*/
public
class
ToAlipaySingleSendTextMsg
{
/** 发给哪个用户 这是测试账号,开发者请自行改为实际的userId */
//aYMvrMC8+qdi3Mj1lqxRZJPUsrychFTewHXFVXq5ySDxWgIluiZN3K2r70Eebm4r01
private
static
String
TO_USER_ID
=
"aYMvrMC8+qdi3Mj1lqxRZJPUsrychFTewHXFVXq5ySDxWgIluiZN3K2r70Eebm4r01"
;
/**
*
* @param args
*/
public
static
void
main
(
String
[]
args
)
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
// 使用SDK,构建单发请求模型
AlipayOpenPublicMessageCustomSendRequest
request
=
new
AlipayOpenPublicMessageCustomSendRequest
();
request
.
setBizContent
(
AlipayMsgBuildUtil
.
buildSingleTextMsg
(
TO_USER_ID
));
try
{
// 使用SDK,调用单发接口发送纯文本消息
AlipayOpenPublicMessageCustomSendResponse
response
=
alipayClient
.
execute
(
request
);
//这里只是简单的打印,请开发者根据实际情况自行进行处理
if
(
null
!=
response
&&
response
.
isSuccess
())
{
System
.
out
.
println
(
"消息发送成功 : response = "
+
response
.
getBody
());
}
else
{
System
.
out
.
println
(
"消息发送失败 code="
+
response
.
getCode
()
+
"msg="
+
response
.
getMsg
());
}
}
catch
(
AlipayApiException
e
)
{
System
.
out
.
println
(
"消息发送失败"
);
}
}
}
...
...
users/src/main/java/com/alipay/servlet/auth/AlipayPublicFollowUser.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
servlet
.
auth
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.domain.AlipayOpenPublicGisQueryModel
;
import
com.alipay.api.request.AlipayOpenPublicFollowBatchqueryRequest
;
import
com.alipay.api.request.AlipayOpenPublicGisQueryRequest
;
import
com.alipay.api.response.AlipayOpenPublicFollowBatchqueryResponse
;
import
com.alipay.api.response.AlipayOpenPublicGisQueryResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
/**
* 获取关注用户相关信息接口调用示例
* @author liliang
*
*/
public
class
AlipayPublicFollowUser
{
public
static
void
main
(
String
[]
args
)
{
followlistQuery
();
// gisQuery();
}
// 获取服务窗关注者列表
public
static
void
followlistQuery
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicFollowBatchqueryRequest
request
=
new
AlipayOpenPublicFollowBatchqueryRequest
();
request
.
setBizContent
(
"{}"
);
AlipayOpenPublicFollowBatchqueryResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
//获取用户地理位置
public
static
void
gisQuery
()
{
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayOpenPublicGisQueryRequest
request
=
new
AlipayOpenPublicGisQueryRequest
();
AlipayOpenPublicGisQueryModel
model
=
new
AlipayOpenPublicGisQueryModel
();
model
.
setUserId
(
"2088802608984030"
);
request
.
setBizModel
(
model
);
AlipayOpenPublicGisQueryResponse
response
=
null
;
try
{
response
=
alipayClient
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
}
}
...
...
users/src/main/java/com/alipay/servlet/auth/LoginAuthServlet.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
servlet
.
auth
;
import
java.io.IOException
;
import
java.util.Map
;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServlet
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.request.AlipaySystemOauthTokenRequest
;
import
com.alipay.api.request.AlipayUserInfoShareRequest
;
import
com.alipay.api.response.AlipaySystemOauthTokenResponse
;
import
com.alipay.api.response.AlipayUserInfoShareResponse
;
import
com.alipay.constants.AlipayServiceEnvConstants
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
com.alipay.util.RequestUtil
;
/**
* 用户信息共享(网页授权获取用户信息)
*
* @author taixu.zqq
* @version $Id: LoginAuthServlet.java, v 0.1 2014年7月25日 下午5:13:03 taixu.zqq Exp $
*/
public
class
LoginAuthServlet
extends
HttpServlet
{
/** */
private
static
final
long
serialVersionUID
=
-
6807693807426739985L
;
/**
* 业务处理
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected
void
doGet
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
ServletException
,
IOException
{
//1. 解析请求参数
Map
<
String
,
String
>
params
=
RequestUtil
.
getRequestParams
(
request
);
//2. 获得authCode
String
authCode
=
params
.
get
(
"auth_code"
);
try
{
//3. 利用authCode获得authToken
AlipaySystemOauthTokenRequest
oauthTokenRequest
=
new
AlipaySystemOauthTokenRequest
();
oauthTokenRequest
.
setCode
(
authCode
);
oauthTokenRequest
.
setGrantType
(
AlipayServiceEnvConstants
.
GRANT_TYPE
);
AlipayClient
alipayClient
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipaySystemOauthTokenResponse
oauthTokenResponse
=
alipayClient
.
execute
(
oauthTokenRequest
);
System
.
out
.
println
(
oauthTokenResponse
.
getAlipayUserId
());
System
.
out
.
println
(
oauthTokenResponse
.
getUserId
());
response
.
getWriter
().
write
(
"用户id:"
+
oauthTokenResponse
.
getUserId
());
//成功获得authToken
if
(
null
!=
oauthTokenResponse
&&
oauthTokenResponse
.
isSuccess
())
{
//4. 利用authToken获取用户信息
AlipayUserInfoShareRequest
userinfoShareRequest
=
new
AlipayUserInfoShareRequest
();
AlipayUserInfoShareResponse
userinfoShareResponse
=
alipayClient
.
execute
(
userinfoShareRequest
,
oauthTokenResponse
.
getAccessToken
());
//成功获得用户信息
if
(
null
!=
userinfoShareResponse
&&
userinfoShareResponse
.
isSuccess
())
{
//这里仅是简单打印, 请开发者按实际情况自行进行处理
System
.
out
.
println
(
"获取用户信息成功:"
+
userinfoShareResponse
.
getBody
());
}
else
{
//这里仅是简单打印, 请开发者按实际情况自行进行处理
System
.
out
.
println
(
"获取用户信息失败"
);
}
}
else
{
//这里仅是简单打印, 请开发者按实际情况自行进行处理
System
.
out
.
println
(
"authCode换取authToken失败"
);
}
}
catch
(
AlipayApiException
alipayApiException
)
{
//自行处理异常
alipayApiException
.
printStackTrace
();
}
}
}
...
...
users/src/main/java/com/alipay/servlet/gateway/GatewayServlet.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
servlet
.
gateway
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.util.Map
;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServlet
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.AlipayConstants
;
import
com.alipay.api.DefaultAlipayClient
;
import
com.alipay.api.domain.AlipayTradeAppPayModel
;
import
com.alipay.api.internal.util.AlipaySignature
;
import
com.alipay.api.internal.util.StringUtils
;
import
com.alipay.api.request.AlipayTradeAppPayRequest
;
import
com.alipay.constants.AlipayServiceEnvConstants
;
import
com.alipay.dispatcher.Dispatcher
;
import
com.alipay.executor.ActionExecutor
;
import
com.alipay.factory.AlipayAPIClientFactory
;
import
com.alipay.util.LogUtil
;
import
com.alipay.util.RequestUtil
;
/**
* 开发者网关,支付宝所有主动和开发者的交互会经过此网关进入开发者系统(配置在开放平台的应用网关)
*
* @author taixu.zqq
* @version $Id: GatewayServlet.java, v 0.1 2014年7月22日 下午5:59:55 taixu.zqq Exp $
*/
public
class
GatewayServlet
extends
HttpServlet
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1210436705188940602L
;
/**
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected
void
doGet
(
HttpServletRequest
req
,
HttpServletResponse
resp
)
throws
ServletException
,
IOException
{
this
.
doPost
(
req
,
resp
);
}
/**
* 网关处理
*
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected
void
doPost
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
ServletException
,
IOException
{
//支付宝响应消息
String
responseMsg
=
""
;
//1. 解析请求参数
Map
<
String
,
String
>
params
=
RequestUtil
.
getRequestParams
(
request
);
//打印本次请求日志,开发者自行决定是否需要
LogUtil
.
log
(
"支付宝请求串"
,
params
.
toString
());
try
{
//2. 验证签名
this
.
verifySign
(
params
);
//3. 获取业务执行器 根据请求中的 service, msgType, eventType, actionParam 确定执行器
ActionExecutor
executor
=
Dispatcher
.
getExecutor
(
params
);
//4. 执行业务逻辑
responseMsg
=
executor
.
execute
();
}
catch
(
AlipayApiException
alipayApiException
)
{
//开发者可以根据异常自行进行处理
alipayApiException
.
printStackTrace
();
}
catch
(
Exception
exception
)
{
//开发者可以根据异常自行进行处理
exception
.
printStackTrace
();
}
finally
{
//5. 响应结果加签及返回
try
{
//对响应内容加签
responseMsg
=
encryptAndSign
(
responseMsg
,
AlipayServiceEnvConstants
.
ALIPAY_PUBLIC_KEY
,
AlipayServiceEnvConstants
.
PRIVATE_KEY
,
AlipayServiceEnvConstants
.
CHARSET
,
false
,
true
,
AlipayServiceEnvConstants
.
SIGN_TYPE
);
//http 内容应答
response
.
reset
();
response
.
setContentType
(
"text/xml;charset=GBK"
);
PrintWriter
printWriter
=
response
.
getWriter
();
printWriter
.
print
(
responseMsg
);
response
.
flushBuffer
();
//开发者自行决定是否要记录,视自己需求
LogUtil
.
log
(
"开发者响应串"
,
responseMsg
);
}
catch
(
AlipayApiException
alipayApiException
)
{
//开发者可以根据异常自行进行处理
alipayApiException
.
printStackTrace
();
}
}
}
/**
* 验签
*
* @param request‘
* @return
*/
private
void
verifySign
(
Map
<
String
,
String
>
params
)
throws
AlipayApiException
{
if
(!
AlipaySignature
.
rsaCheckV2
(
params
,
AlipayServiceEnvConstants
.
ALIPAY_PUBLIC_KEY
,
AlipayServiceEnvConstants
.
SIGN_CHARSET
,
AlipayServiceEnvConstants
.
SIGN_TYPE
))
{
throw
new
AlipayApiException
(
"verify sign fail."
);
}
}
public
static
String
encryptAndSign
(
String
bizContent
,
String
alipayPublicKey
,
String
cusPrivateKey
,
String
charset
,
boolean
isEncrypt
,
boolean
isSign
,
String
signType
)
throws
AlipayApiException
{
StringBuilder
sb
=
new
StringBuilder
();
if
(
StringUtils
.
isEmpty
(
charset
))
{
charset
=
AlipayConstants
.
CHARSET_GBK
;
}
sb
.
append
(
"<?xml version=\"1.0\" encoding=\""
+
charset
+
"\"?>"
);
if
(
isEncrypt
)
{
// 加密
sb
.
append
(
"<alipay>"
);
String
encrypted
=
AlipaySignature
.
rsaEncrypt
(
bizContent
,
alipayPublicKey
,
charset
);
sb
.
append
(
"<response>"
+
encrypted
+
"</response>"
);
sb
.
append
(
"<encryption_type>AES</encryption_type>"
);
if
(
isSign
)
{
String
sign
=
AlipaySignature
.
rsaSign
(
encrypted
,
cusPrivateKey
,
charset
,
signType
);
sb
.
append
(
"<sign>"
+
sign
+
"</sign>"
);
sb
.
append
(
"<sign_type>"
);
sb
.
append
(
signType
);
sb
.
append
(
"</sign_type>"
);
}
sb
.
append
(
"</alipay>"
);
}
else
if
(
isSign
)
{
// 不加密,但需要签名
sb
.
append
(
"<alipay>"
);
sb
.
append
(
"<response>"
+
bizContent
+
"</response>"
);
String
sign
=
AlipaySignature
.
rsaSign
(
bizContent
,
cusPrivateKey
,
charset
,
signType
);
sb
.
append
(
"<sign>"
+
sign
+
"</sign>"
);
sb
.
append
(
"<sign_type>"
);
sb
.
append
(
signType
);
sb
.
append
(
"</sign_type>"
);
sb
.
append
(
"</alipay>"
);
}
else
{
// 不加密,不加签
sb
.
append
(
bizContent
);
}
return
sb
.
toString
();
}
}
...
...
users/src/main/java/com/alipay/util/AlipayCore.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
util
;
import
java.io.FileWriter
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/* *
*类名:AlipayFunction
*功能:支付宝接口公用函数类
*详细:该类是请求、通知返回两个文件所调用的公用函数核心处理文件,不需要修改
*版本:3.3
*日期:2012-08-14
*说明:
*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
*/
public
class
AlipayCore
{
/**
* 除去数组中的空值和签名参数
* @param sArray 签名参数组
* @return 去掉空值与签名参数后的新签名参数组
*/
public
static
Map
<
String
,
String
>
paraFilter
(
Map
<
String
,
String
>
sArray
)
{
Map
<
String
,
String
>
result
=
new
HashMap
<
String
,
String
>();
if
(
sArray
==
null
||
sArray
.
size
()
<=
0
)
{
return
result
;
}
for
(
String
key
:
sArray
.
keySet
())
{
String
value
=
sArray
.
get
(
key
);
if
(
value
==
null
||
value
.
equals
(
""
)
||
key
.
equalsIgnoreCase
(
"sign"
)
||
key
.
equalsIgnoreCase
(
"sign_type"
))
{
continue
;
}
result
.
put
(
key
,
value
);
}
return
result
;
}
/**
* 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
* @param params 需要排序并参与字符拼接的参数组
* @return 拼接后字符串
*/
public
static
String
createLinkString
(
Map
<
String
,
String
>
params
)
{
List
<
String
>
keys
=
new
ArrayList
<
String
>(
params
.
keySet
());
Collections
.
sort
(
keys
);
String
prestr
=
""
;
for
(
int
i
=
0
;
i
<
keys
.
size
();
i
++)
{
String
key
=
keys
.
get
(
i
);
String
value
=
params
.
get
(
key
);
if
(
i
==
keys
.
size
()
-
1
)
{
//拼接时,不包括最后一个&字符
prestr
=
prestr
+
key
+
"="
+
value
;
}
else
{
prestr
=
prestr
+
key
+
"="
+
value
+
"&"
;
}
}
return
prestr
;
}
/**
* 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
* @param sWord 要写入日志里的文本内容
*/
public
static
void
logResult
(
String
sWord
)
{
FileWriter
writer
=
null
;
try
{
writer
=
new
FileWriter
(
"alipay_log_"
+
System
.
currentTimeMillis
()+
".txt"
);
writer
.
write
(
sWord
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
writer
!=
null
)
{
try
{
writer
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
}
}
...
...
users/src/main/java/com/alipay/util/AlipayMsgBuildUtil.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
util
;
import
java.util.Calendar
;
import
com.alipay.constants.AlipayServiceEnvConstants
;
/**
* 消息构造工具
*
* @author baoxing.gbx
* @version $Id: AlipayMsgBuildUtil.java, v 0.1 Jul 24, 2014 5:47:19 PM baoxing.gbx Exp $
*/
public
class
AlipayMsgBuildUtil
{
/**
* 构造单发图文消息
*
* @param fromUserId
* @return
*/
public
static
String
buildSingleImgTextMsg
(
String
fromUserId
)
{
StringBuilder
sb
=
new
StringBuilder
();
//构建json格式单发图文消息: 所有内容开发者请根据自有业务自行设置响应值,这里只是个样例
sb
.
append
(
"{'articles':[{'action_name':'立即查看','desc':'这是图文内容','image_url':'http://pic.alipayobjects.com/e/201311/1PaQ27Go6H_src.jpg','title':'这是标题','url':'https://www.alipay.com/'}],'msg_type':'image-text','to_user_id':'"
+
fromUserId
+
"'}"
);
return
sb
.
toString
();
}
/**
* 构造群发图文消息
*
* @return
*/
public
static
String
buildGroupImgTextMsg
()
{
StringBuilder
sb
=
new
StringBuilder
();
//构建json格式群发图文消息: 所有内容开发者请根据自有业务自行设置响应值,这里只是个样例
sb
.
append
(
"{'articles':[{'action_name':'立即查看','desc':'这是图文内容','image_url':'http://pic.alipayobjects.com/e/201311/1PaQ27Go6H_src.jpg','title':'这是标题','url':'https://www.alipay.com/'}],'msg_type':'image-text'}"
);
return
sb
.
toString
();
}
/**
* 构造单发纯文本消息
*
* @param fromUserId
* @return
*/
public
static
String
buildSingleTextMsg
(
String
fromUserId
)
{
StringBuilder
sb
=
new
StringBuilder
();
//构建json格式单发纯文本消息体: 所有内容开发者请根据自有业务自行设置响应值,这里只是个样例
sb
.
append
(
"{'msg_type':'text','text':{'content':'这是纯文本消息'}, 'to_user_id':'"
+
fromUserId
+
"'}"
);
return
sb
.
toString
();
}
/**
* 构造群发纯文本消息
*
* @return
*/
public
static
String
buildGroupTextMsg
()
{
StringBuilder
sb
=
new
StringBuilder
();
//构建json格式群发纯文本消息体: 所有内容开发者请根据自有业务自行设置响应值,这里只是个样例
sb
.
append
(
"{'msg_type':'text','text':{'content':'这是纯文本消息'}}"
);
return
sb
.
toString
();
}
/**
* 构造免登图文消息
*
* @param fromUserId
* @return
*/
public
static
String
buildImgTextLoginAuthMsg
(
String
fromUserId
)
{
StringBuilder
sb
=
new
StringBuilder
();
//免登连接地址,开发者需根据部署服务修改相应服务ip地址
String
url
=
"http://10.15.132.68:8080/AlipayFuwuDemo/loginAuth.html"
;
//构建json格式的单发免登图文消息体 authType 等于 "loginAuth"表示免登消息 : 所有内容开发者请根据自有业务自行设置响应值,这里只是个样例
sb
.
append
(
"{'articles':[{'action_name':'立即查看','desc':'这是图文内容','image_url':'http://pic.alipayobjects.com/e/201311/1PaQ27Go6H_src.jpg','title':'这是标题','url':'"
+
url
+
"', 'auth_type':'loginAuth'}],'msg_type':'image-text', 'to_user_id':'"
+
fromUserId
+
"'}"
);
return
sb
.
toString
();
}
/**
* 构造基础的响应消息
*
* @return
*/
public
static
String
buildBaseAckMsg
(
String
fromUserId
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"<XML>"
);
sb
.
append
(
"<ToUserId><![CDATA["
+
fromUserId
+
"]]></ToUserId>"
);
sb
.
append
(
"<AppId><![CDATA["
+
AlipayServiceEnvConstants
.
APP_ID
+
"]]></AppId>"
);
sb
.
append
(
"<CreateTime>"
+
Calendar
.
getInstance
().
getTimeInMillis
()
+
"</CreateTime>"
);
sb
.
append
(
"<MsgType><![CDATA[ack]]></MsgType>"
);
sb
.
append
(
"</XML>"
);
return
sb
.
toString
();
}
}
...
...
users/src/main/java/com/alipay/util/AlipayNotify.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
util
;
import
java.io.BufferedReader
;
import
java.io.InputStreamReader
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.util.Map
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.internal.util.AlipaySignature
;
import
com.alipay.constants.AlipayServiceEnvConstants
;
/* *
*类名:AlipayNotify
*功能:支付宝通知处理类
*详细:处理支付宝各接口通知返回
*版本:3.3
*日期:2012-08-17
*说明:
*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*该代码仅供学习和研究支付宝接口使用,只是提供一个参考
*************************注意*************************
*调试通知返回时,可查看或改写log日志的写入TXT里的数据,来检查通知返回是否正常
*/
public
class
AlipayNotify
{
/**
* 支付宝消息验证地址
*/
private
static
final
String
HTTPS_VERIFY_URL
=
"https://mapi.alipay.com/gateway.do?service=notify_verify&"
;
/**
* 验证消息是否是支付宝发出的合法消息
* @param params 通知返回来的参数数组
* @return 验证结果
*/
public
static
boolean
verify
(
Map
<
String
,
String
>
params
)
{
//判断responsetTxt是否为true,isSign是否为true
//responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
//isSign不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
String
responseTxt
=
"true"
;
if
(
params
.
get
(
"notify_id"
)
!=
null
)
{
String
notify_id
=
params
.
get
(
"notify_id"
);
responseTxt
=
verifyResponse
(
notify_id
);
}
String
sign
=
""
;
if
(
params
.
get
(
"sign"
)
!=
null
)
{
sign
=
params
.
get
(
"sign"
);}
boolean
isSign
=
getRSASignVerify
(
params
,
sign
);
//写日志记录(若要调试,请取消下面两行注释)
//String sWord = "responseTxt=" + responseTxt + "\n isSign=" + isSign + "\n 返回回来的参数:" + AlipayCore.createLinkString(params);
//AlipayCore.logResult(sWord);
if
(
isSign
&&
responseTxt
.
equals
(
"true"
))
{
return
true
;
}
else
{
return
false
;
}
}
/**
* 根据反馈回来的信息,生成签名结果
* @param Params 通知返回来的参数数组
* @param sign 比对的签名结果
* @return 生成的签名结果
*/
private
static
boolean
getRSASignVerify
(
Map
<
String
,
String
>
Params
,
String
sign
)
{
//过滤空值、sign与sign_type参数
Map
<
String
,
String
>
sParaNew
=
AlipayCore
.
paraFilter
(
Params
);
//获取待签名字符串
String
preSignStr
=
AlipayCore
.
createLinkString
(
sParaNew
);
//获得签名验证结果
boolean
isSign
=
false
;
try
{
isSign
=
AlipaySignature
.
rsaCheckContent
(
preSignStr
,
sign
,
AlipayServiceEnvConstants
.
ALIPAY_PUBLIC_KEY
,
AlipayServiceEnvConstants
.
CHARSET
);
}
catch
(
AlipayApiException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
return
isSign
;
}
/**
* 获取远程服务器ATN结果,验证返回URL
* @param notify_id 通知校验ID
* @return 服务器ATN结果
* 验证结果集:
* invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空
* true 返回正确信息
* false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟
*/
private
static
String
verifyResponse
(
String
notify_id
)
{
//获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求
String
partner
=
AlipayServiceEnvConstants
.
PARTNER
;
String
veryfy_url
=
HTTPS_VERIFY_URL
+
"partner="
+
partner
+
"¬ify_id="
+
notify_id
;
return
checkUrl
(
veryfy_url
);
}
/**
* 获取远程服务器ATN结果
* @param urlvalue 指定URL路径地址
* @return 服务器ATN结果
* 验证结果集:
* invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空
* true 返回正确信息
* false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟
*/
private
static
String
checkUrl
(
String
urlvalue
)
{
String
inputLine
=
""
;
try
{
URL
url
=
new
URL
(
urlvalue
);
HttpURLConnection
urlConnection
=
(
HttpURLConnection
)
url
.
openConnection
();
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
urlConnection
.
getInputStream
()));
inputLine
=
in
.
readLine
().
toString
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
inputLine
=
""
;
}
return
inputLine
;
}
}
...
...
users/src/main/java/com/alipay/util/AppPayTest.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
util
;
import
java.util.Map
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.AlipayRequest
;
import
com.alipay.api.AlipayResponse
;
import
com.alipay.api.domain.AlipayTradeAppPayModel
;
import
com.alipay.api.request.AlipayTradeAppPayRequest
;
import
com.alipay.api.response.AlipayTradeAppPayResponse
;
import
com.alipay.factory.AlipayAPIClientFactory
;
public
class
AppPayTest
{
public
static
void
main
(
String
[]
args
)
throws
AlipayApiException
{
AlipayTradeAppPayRequest
request
=
new
AlipayTradeAppPayRequest
();
AlipayTradeAppPayModel
model
=
new
AlipayTradeAppPayModel
();
model
.
setOutTradeNo
(
"fdsafdasfdsaf14343fs1fsda12321321312"
);
model
.
setSubject
(
"标题"
);
model
.
setProductCode
(
"QUICK_MSECURITY_PAY"
);
model
.
setTotalAmount
(
"0.01"
);
request
.
setBizModel
(
model
);
request
.
setNotifyUrl
(
"http://ruanke.ngrok.sapronlee.com/alipay-wappay-demo/alipay_wappay_notify.html"
);
System
.
out
.
println
(
populateRequest
(
request
));
}
public
static
AlipayTradeAppPayResponse
handleReuslt
(
Map
<
String
,
String
>
resultMap
)
throws
AlipayApiException
{
AlipayClient
client
=
AlipayAPIClientFactory
.
getAlipayClient
();
AlipayTradeAppPayResponse
response
=
client
.
parseAppSyncResult
(
resultMap
,
AlipayTradeAppPayRequest
.
class
);
return
response
;
}
public
static
<
T
extends
AlipayResponse
>
String
populateRequest
(
AlipayRequest
<
T
>
request
)
throws
AlipayApiException
{
AlipayClient
client
=
AlipayAPIClientFactory
.
getAlipayClient
();
return
client
.
sdkExecute
(
request
).
getBody
();
}
}
...
...
users/src/main/java/com/alipay/util/LogUtil.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
util
;
/**
* 日志打印工具
*
* @author taixu.zqq
* @version $Id: LogUtil.java, v 0.1 2014年7月25日 下午4:34:46 taixu.zqq Exp $
*/
public
class
LogUtil
{
/**
* 信息日志打印
*
* @param prefixName 前缀名称
* @param params 参数
*/
public
static
void
log
(
String
prefixName
,
String
msgContent
)
{
System
.
out
.
println
(
prefixName
+
" : "
+
msgContent
);
}
}
...
...
users/src/main/java/com/alipay/util/RequestUtil.java
0 → 100755
View file @
c413c1b
/**
* Alipay.com Inc.
* Copyright (c) 2004-2014 All Rights Reserved.
*/
package
com
.
alipay
.
util
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Set
;
import
javax.servlet.http.HttpServletRequest
;
/**
* 解析HttpServletRequest参数
*
* @author taixu.zqq
* @version $Id: RequestUtil.java, v 0.1 2014年7月23日 上午10:48:10 taixu.zqq Exp $
*/
public
class
RequestUtil
{
/**
* 获取所有request请求参数key-value
*
* @param request
* @return
*/
public
static
Map
<
String
,
String
>
getRequestParams
(
HttpServletRequest
request
){
Map
<
String
,
String
>
params
=
new
HashMap
<
String
,
String
>();
if
(
null
!=
request
){
Set
<
String
>
paramsKey
=
request
.
getParameterMap
().
keySet
();
for
(
String
key
:
paramsKey
){
params
.
put
(
key
,
request
.
getParameter
(
key
));
}
}
return
params
;
}
}
...
...
users/src/main/java/com/alipay/util/TestMain.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
util
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.DefaultAlipayClient
;
import
com.alipay.api.domain.AlipayTradeCreateModel
;
import
com.alipay.api.domain.AlipayTradePayModel
;
import
com.alipay.api.request.AlipayTradeCreateRequest
;
import
com.alipay.api.request.AlipayTradePayRequest
;
import
com.alipay.api.response.AlipayTradeCreateResponse
;
import
com.alipay.api.response.AlipayTradePayResponse
;
import
com.alipay.constants.AlipayServiceEnvConstants
;
public
class
TestMain
{
public
static
void
tradeCreate
(){
AlipayClient
client
=
new
DefaultAlipayClient
(
AlipayServiceEnvConstants
.
ALIPAY_GATEWAY
,
AlipayServiceEnvConstants
.
APP_ID
,
AlipayServiceEnvConstants
.
PRIVATE_KEY
,
"json"
,
AlipayServiceEnvConstants
.
CHARSET
,
AlipayServiceEnvConstants
.
ALIPAY_PUBLIC_KEY
,
AlipayServiceEnvConstants
.
SIGN_TYPE
);
AlipayTradeCreateRequest
request
=
new
AlipayTradeCreateRequest
();
AlipayTradeCreateModel
model
=
new
AlipayTradeCreateModel
();
model
.
setOutTradeNo
(
"2131231412"
);
model
.
setSellerId
(
"2088102168512190"
);
model
.
setTotalAmount
(
"0.01"
);
model
.
setBuyerLogonId
(
"501624560335vj@sandbox.com"
);
model
.
setSubject
(
"iphone7"
);
request
.
setBizModel
(
model
);
AlipayTradeCreateResponse
response
=
new
AlipayTradeCreateResponse
();
try
{
response
=
client
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
}
public
static
void
tradePay
(){
AlipayClient
client
=
new
DefaultAlipayClient
(
AlipayServiceEnvConstants
.
ALIPAY_GATEWAY
,
AlipayServiceEnvConstants
.
APP_ID
,
AlipayServiceEnvConstants
.
PRIVATE_KEY
,
"json"
,
AlipayServiceEnvConstants
.
CHARSET
,
AlipayServiceEnvConstants
.
ALIPAY_PUBLIC_KEY
,
AlipayServiceEnvConstants
.
SIGN_TYPE
);
AlipayTradePayRequest
request
=
new
AlipayTradePayRequest
();
AlipayTradePayModel
model
=
new
AlipayTradePayModel
();
model
.
setOutTradeNo
(
"1324124124"
);
model
.
setScene
(
"bar_code"
);
model
.
setAuthCode
(
"289179686864713886"
);
model
.
setSubject
(
"iphone7"
);
model
.
setTotalAmount
(
"0.01"
);
request
.
setBizModel
(
model
);
AlipayTradePayResponse
response
=
new
AlipayTradePayResponse
();
try
{
response
=
client
.
execute
(
request
);
System
.
out
.
println
(
response
.
getBody
());
}
catch
(
Exception
e
)
{
// TODO: handle exception
e
.
printStackTrace
();
}
}
public
static
void
main
(
String
[]
args
)
{
// tradeCreate();
tradePay
();
}
}
...
...
users/src/main/java/com/alipay/util/UtilDate.java
0 → 100755
View file @
c413c1b
package
com
.
alipay
.
util
;
import
java.util.Date
;
import
java.util.Random
;
import
java.text.SimpleDateFormat
;
import
java.text.DateFormat
;
/* *
*类名:UtilDate
*功能:自定义订单类
*详细:工具类,可以用作获取系统日期、订单编号等
*版本:3.3
*日期:2012-08-17
*说明:
*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
*/
public
class
UtilDate
{
/** 年月日时分秒(无下划线) yyyyMMddHHmmss */
public
static
final
String
dtLong
=
"yyyyMMddHHmmss"
;
/** 完整时间 yyyy-MM-dd HH:mm:ss */
public
static
final
String
simple
=
"yyyy-MM-dd HH:mm:ss"
;
/** 年月日(无下划线) yyyyMMdd */
public
static
final
String
dtShort
=
"yyyyMMdd"
;
/**
* 返回系统当前时间(精确到毫秒),作为一个唯一的订单编号
* @return
* 以yyyyMMddHHmmss为格式的当前系统时间
*/
public
static
String
getOrderNum
(){
Date
date
=
new
Date
();
DateFormat
df
=
new
SimpleDateFormat
(
dtLong
);
return
df
.
format
(
date
);
}
/**
* 获取系统当前日期(精确到毫秒),格式:yyyy-MM-dd HH:mm:ss
* @return
*/
public
static
String
getDateFormatter
(){
Date
date
=
new
Date
();
DateFormat
df
=
new
SimpleDateFormat
(
simple
);
return
df
.
format
(
date
);
}
/**
* 获取系统当期年月日(精确到天),格式:yyyyMMdd
* @return
*/
public
static
String
getDate
(){
Date
date
=
new
Date
();
DateFormat
df
=
new
SimpleDateFormat
(
dtShort
);
return
df
.
format
(
date
);
}
/**
* 产生随机的三位数
* @return
*/
public
static
String
getThree
(){
Random
rad
=
new
Random
();
return
rad
.
nextInt
(
1000
)+
""
;
}
}
...
...
web/src/main/webapp/WEB-INF/web.xml
View file @
c413c1b
...
...
@@ -42,6 +42,25 @@
<url-pattern>
/html/h5Share/css/font/sf-pro-text-medium.woff
</url-pattern>
<url-pattern>
/html/ios_ufo_shortcut.html
</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>
gatewayServlet
</servlet-name>
<servlet-class>
com.alipay.servlet.gateway.GatewayServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
gatewayServlet
</servlet-name>
<url-pattern>
/gateway.do
</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>
loginAuthServlet
</servlet-name>
<servlet-class>
com.alipay.servlet.auth.LoginAuthServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
loginAuthServlet
</servlet-name>
<url-pattern>
/loginAuth.html
</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>
dispatcher
</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
...
...
Please
register
or
login
to post a comment