Authored by qinchao

临时增加-芝麻验证网关(验证以后可去掉)

Showing 38 changed files with 2881 additions and 0 deletions
/**
* <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) {
}
}
}
... ...
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
}
}
}
... ...
/**
* 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);
}
}
... ...
/**
* 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
... ...
/**
* 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";
}
... ...
/**
* 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";
}
... ...
/**
* 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;
}
}
}
}
... ...
/**
* 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;
}
... ...
/**
* 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;
}
}
... ...
/**
* 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;
}
}
... ...
/**
* 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;
}
}
... ...
/**
* 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);
}
}
... ...
/**
* 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);
}
}
... ...
/**
* 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);
}
}
... ...
/**
* 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);
}
}
... ...
/**
* 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();
}
}
... ...
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(500l);
//使用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(500l);
//使用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
}
}
}
... ...
/**
* 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;
}
}
... ...
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();
}
}
... ...
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
}
}
}
... ...
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
}
}
}
... ...
/**
* 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("消息发送失败");
}
}
}
... ...
/**
* 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("消息发送失败");
}
}
}
... ...
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
}
}
}
... ...
/**
* 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("消息发送失败");
}
}
}
... ...
/**
* 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("消息发送失败");
}
}
}
... ...
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
}
}
}
... ...
/**
* 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();
}
}
}
... ...
/**
* 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();
}
}
... ...
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();
}
}
}
}
}
... ...
/**
* 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();
}
}
... ...
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 + "&notify_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;
}
}
... ...
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();
}
}
... ...
/**
* 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);
}
}
... ...
/**
* 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;
}
}
... ...
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();
}
}
... ...
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)+"";
}
}
... ...
... ... @@ -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>
... ...