You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

827 lines
30 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package cn.jlw.aliPay;
import cn.hutool.core.date.DateUtil;
import cn.jlw.aliPay.entity.AliPayBean;
import cn.jlw.aliPay.utils.StringUtils;
import cn.jlw.aliPay.vo.AjaxResult;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.domain.*;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.response.AlipayFundAuthOrderFreezeResponse;
import com.alipay.api.response.AlipayFundCouponOrderAgreementPayResponse;
import com.alipay.api.response.AlipayTradeCreateResponse;
import com.ijpay.alipay.AliPayApi;
import com.ijpay.alipay.AliPayApiConfig;
import com.ijpay.alipay.AliPayApiConfigKit;
import com.ijpay.core.kit.PayKit;
import com.ijpay.core.kit.RsaKit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 支付宝支付
*/
@Controller
@RequestMapping("/aliPay")
public class AliPayController extends AbstractAliPayApiController {
private static final Logger log = LoggerFactory.getLogger(AliPayController.class);
@Autowired
private AliPayBean aliPayBean;
private final AjaxResult result = new AjaxResult();
/**
* 普通公钥模式
*/
private final static String NOTIFY_URL = "/aliPay/notify_url";
/**
* 证书模式
*/
// private final static String NOTIFY_URL = "/aliPay/cert_notify_url";
/**
* 普通公钥返回
*/
private final static String RETURN_URL = "/aliPay/return_url";
/**
* 证书模式返回
*/
// private final static String RETURN_URL = "/aliPay/cert_return_url";
@Override
public AliPayApiConfig getApiConfig() throws AlipayApiException {
AliPayApiConfig aliPayApiConfig;
try {
aliPayApiConfig = AliPayApiConfigKit.getApiConfig(aliPayBean.getAppId());
} catch (Exception e) {
aliPayApiConfig = AliPayApiConfig.builder()
.setAppId(aliPayBean.getAppId())
.setAliPayPublicKey(aliPayBean.getPublicKey())
.setAppCertPath(aliPayBean.getAppCertPath())
.setAliPayCertPath(aliPayBean.getAliPayCertPath())
.setAliPayRootCertPath(aliPayBean.getAliPayRootCertPath())
.setCharset("UTF-8")
.setPrivateKey(aliPayBean.getPrivateKey())
.setServiceUrl(aliPayBean.getServerUrl())
.setSignType("RSA2")
// 普通公钥方式
//.build();
// 证书模式
.buildByCert();
}
return aliPayApiConfig;
}
@RequestMapping("/test")
@ResponseBody
public AliPayApiConfig test() {
AliPayApiConfig aliPayApiConfig = AliPayApiConfigKit.getAliPayApiConfig();
String charset = aliPayApiConfig.getCharset();
log.info("charset>" + charset);
return aliPayApiConfig;
}
/**
* app支付
*/
@RequestMapping(value = "/appPay")
@ResponseBody
public AjaxResult appPay() {
try {
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody("我是测试数据-By Javen");
model.setSubject("App支付测试-By Javen");
model.setOutTradeNo(StringUtils.getOutTradeNo());
model.setTimeoutExpress("30m");
model.setTotalAmount("0.01");
model.setPassbackParams("callback params");
model.setProductCode("QUICK_MSECURITY_PAY");
String orderInfo = AliPayApi.appPayToResponse(model, aliPayBean.getDomain() + NOTIFY_URL).getBody();
result.success(orderInfo);
} catch (AlipayApiException e) {
e.printStackTrace();
result.addError("system error:" + e.getMessage());
}
return result;
}
@RequestMapping(value = "/wapPayNoSdk")
@ResponseBody
public void wapPayNoSdk(HttpServletResponse response) {
try {
AliPayApiConfig aliPayApiConfig = AliPayApiConfigKit.getAliPayApiConfig();
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("app_id", aliPayApiConfig.getAppId());
paramsMap.put("method", "alipay.trade.wap.pay");
paramsMap.put("return_url", aliPayBean.getDomain() + RETURN_URL);
paramsMap.put("charset", aliPayApiConfig.getCharset());
paramsMap.put("sign_type", aliPayApiConfig.getSignType());
paramsMap.put("timestamp", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
paramsMap.put("version", "1.0");
paramsMap.put("notify_url", aliPayBean.getDomain() + NOTIFY_URL);
Map<String, String> bizMap = new HashMap<>();
bizMap.put("body", "IJPay 聚合支付-H5");
bizMap.put("subject", "IJPay 让支付触手可及");
bizMap.put("out_trade_no", StringUtils.getOutTradeNo());
bizMap.put("total_amount", "6.66");
bizMap.put("product_code", "QUICK_WAP_WAY");
paramsMap.put("biz_content", JSON.toJSONString(bizMap));
String content = PayKit.createLinkString(paramsMap);
System.out.println("wapPayNoSdk:"+content);
String encrypt = RsaKit.encryptByPrivateKey(content, aliPayApiConfig.getPrivateKey());
System.out.println(encrypt);
// encrypt = AlipaySignature.rsaSign(content,aliPayApiConfig.getPrivateKey(), "UTF-8","RSA2");
// System.out.println(encrypt);
paramsMap.put("sign", encrypt);
String url = aliPayApiConfig.getServiceUrl() + "?" + PayKit.createLinkString(paramsMap, true);
System.out.println(url);
response.sendRedirect(url);
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping(value = "/wapPay")
@ResponseBody
public void wapPay(HttpServletResponse response) {
String body = "我是测试数据-By Javen";
String subject = "Javen Wap支付测试";
String totalAmount = "1";
String passBackParams = "1";
String returnUrl = aliPayBean.getDomain() + RETURN_URL;
String notifyUrl = aliPayBean.getDomain() + NOTIFY_URL;
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
model.setBody(body);
model.setSubject(subject);
model.setTotalAmount(totalAmount);
model.setPassbackParams(passBackParams);
String outTradeNo = StringUtils.getOutTradeNo();
System.out.println("wap outTradeNo>" + outTradeNo);
model.setOutTradeNo(outTradeNo);
model.setProductCode("QUICK_WAP_PAY");
try {
AliPayApi.wapPay(response, model, returnUrl, notifyUrl);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* PC支付
*/
@RequestMapping(value = "/pcPay")
@ResponseBody
public void pcPay(HttpServletResponse response) {
try {
String totalAmount = "88.88";
String outTradeNo = StringUtils.getOutTradeNo();
log.info("pc outTradeNo>" + outTradeNo);
String returnUrl = aliPayBean.getDomain() + RETURN_URL;
String notifyUrl = aliPayBean.getDomain() + NOTIFY_URL;
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.setOutTradeNo(outTradeNo);
model.setProductCode("FAST_INSTANT_TRADE_PAY");
model.setTotalAmount(totalAmount);
model.setSubject("Javen PC支付测试");
model.setBody("Javen IJPay PC支付测试");
model.setPassbackParams("passback_params");
/**
* 花呗分期相关的设置,测试环境不支持花呗分期的测试
* hb_fq_num代表花呗分期数仅支持传入3、6、12其他期数暂不支持传入会报错
* hb_fq_seller_percent代表卖家承担收费比例商家承担手续费传入100用户承担手续费传入0仅支持传入100、0两种其他比例暂不支持传入会报错。
*/
// ExtendParams extendParams = new ExtendParams();
// extendParams.setHbFqNum("3");
// extendParams.setHbFqSellerPercent("0");
// model.setExtendParams(extendParams);
AliPayApi.tradePage(response, model, notifyUrl, returnUrl);
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping(value = "/tradePay")
@ResponseBody
public String tradePay(@RequestParam("authCode") String authCode, @RequestParam("scene") String scene) {
String subject = null;
String waveCode = "wave_code";
String barCode = "bar_code";
if (scene.equals(waveCode)) {
subject = "Javen 支付宝声波支付测试";
} else if (scene.equals(barCode)) {
subject = "Javen 支付宝条形码支付测试";
}
String totalAmount = "100";
String notifyUrl = aliPayBean.getDomain() + NOTIFY_URL;
AlipayTradePayModel model = new AlipayTradePayModel();
model.setAuthCode(authCode);
model.setSubject(subject);
model.setTotalAmount(totalAmount);
model.setOutTradeNo(StringUtils.getOutTradeNo());
model.setScene(scene);
try {
return AliPayApi.tradePayToResponse(model, notifyUrl).getBody();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 扫码支付
*/
@RequestMapping(value = "/tradePreCreatePay")
@ResponseBody
public String tradePreCreatePay() {
String subject = "Javen 支付宝扫码支付测试";
String totalAmount = "86";
String storeId = "123";
// String notifyUrl = aliPayBean.getDomain() + NOTIFY_URL;
String notifyUrl = aliPayBean.getDomain() + "/aliPay/cert_notify_url";
AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
model.setSubject(subject);
model.setTotalAmount(totalAmount);
model.setStoreId(storeId);
model.setTimeoutExpress("5m");
model.setOutTradeNo(StringUtils.getOutTradeNo());
try {
String resultStr = AliPayApi.tradePrecreatePayToResponse(model, notifyUrl).getBody();
JSONObject jsonObject = JSONObject.parseObject(resultStr);
return jsonObject.getJSONObject("alipay_trade_precreate_response").getString("qr_code");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 单笔转账到支付宝账户
* https://docs.open.alipay.com/309/106235/
*/
@RequestMapping(value = "/transfer")
@ResponseBody
public String transfer() {
String totalAmount = "66";
AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
model.setOutBizNo(StringUtils.getOutTradeNo());
model.setPayeeType("ALIPAY_LOGONID");
model.setPayeeAccount("gxthqd7606@sandbox.com");
model.setAmount(totalAmount);
model.setPayerShowName("测试退款");
model.setPayerRealName("沙箱环境");
model.setRemark("javen测试单笔转账到支付宝");
try {
return AliPayApi.transferToResponse(model).getBody();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@RequestMapping(value = "/transferQuery")
@ResponseBody
public String transferQuery(@RequestParam(required = false, name = "outBizNo") String outBizNo,
@RequestParam(required = false, name = "orderId") String orderId) {
AlipayFundTransOrderQueryModel model = new AlipayFundTransOrderQueryModel();
if (StringUtils.isNotEmpty(outBizNo)) {
model.setOutBizNo(outBizNo);
}
if (StringUtils.isNotEmpty(orderId)) {
model.setOrderId(orderId);
}
try {
return AliPayApi.transferQueryToResponse(model).getBody();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@RequestMapping(value = "/uniTransfer")
@ResponseBody
public String uniTransfer() {
String totalAmount = "1";
AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel();
model.setOutBizNo(StringUtils.getOutTradeNo());
model.setTransAmount(totalAmount);
model.setProductCode("TRANS_ACCOUNT_NO_PWD");
model.setBizScene("DIRECT_TRANSFER");
model.setOrderTitle("统一转账-转账至支付宝账户");
model.setRemark("IJPay 测试统一转账");
Participant payeeInfo = new Participant();
payeeInfo.setIdentity("gxthqd7606@sandbox.com");
payeeInfo.setIdentityType("ALIPAY_LOGON_ID");
payeeInfo.setName("沙箱环境");
model.setPayeeInfo(payeeInfo);
try {
return AliPayApi.uniTransferToResponse(model,null).getBody();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@RequestMapping(value = "/uniTransferQuery")
@ResponseBody
public String uniTransferQuery(@RequestParam(required = false, name = "outBizNo") String outBizNo,
@RequestParam(required = false, name = "orderId") String orderId) {
AlipayFundTransCommonQueryModel model = new AlipayFundTransCommonQueryModel();
if (StringUtils.isNotEmpty(outBizNo)) {
model.setOutBizNo(outBizNo);
}
if (StringUtils.isNotEmpty(orderId)) {
model.setOrderId(orderId);
}
try {
return AliPayApi.transCommonQueryToResponse(model,null).getBody();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@RequestMapping(value = "/accountQuery")
@ResponseBody
public String accountQuery(@RequestParam(required = true, name = "aliPayUserId") String aliPayUserId) {
AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel();
model.setAlipayUserId(aliPayUserId);
model.setAccountType("ACCTRANS_ACCOUNT");
try {
return AliPayApi.accountQueryToResponse(model,null).getBody();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 资金授权冻结接口
*/
@RequestMapping(value = "/authOrderFreeze")
@ResponseBody
public AlipayFundAuthOrderFreezeResponse authOrderFreeze(@RequestParam("auth_code") String authCode) {
try {
AlipayFundAuthOrderFreezeModel model = new AlipayFundAuthOrderFreezeModel();
model.setOutOrderNo(StringUtils.getOutTradeNo());
model.setOutRequestNo(StringUtils.getOutTradeNo());
model.setAuthCode(authCode);
model.setAuthCodeType("bar_code");
model.setOrderTitle("资金授权冻结-By IJPay");
model.setAmount("36");
model.setProductCode("PRE_AUTH");
return AliPayApi.authOrderFreezeToResponse(model);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 红包协议支付接口
* https://docs.open.alipay.com/301/106168/
*/
@RequestMapping(value = "/agreementPay")
@ResponseBody
public AlipayFundCouponOrderAgreementPayResponse agreementPay() {
try {
AlipayFundCouponOrderAgreementPayModel model = new AlipayFundCouponOrderAgreementPayModel();
model.setOutOrderNo(StringUtils.getOutTradeNo());
model.setOutRequestNo(StringUtils.getOutTradeNo());
model.setOrderTitle("红包协议支付接口-By IJPay");
model.setAmount("36");
model.setPayerUserId("2088102180432465");
return AliPayApi.fundCouponOrderAgreementPayToResponse(model);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 下载对账单
*/
@RequestMapping(value = "/dataDataServiceBill")
@ResponseBody
public String dataDataServiceBill(@RequestParam("billDate") String billDate) {
try {
AlipayDataDataserviceBillDownloadurlQueryModel model = new AlipayDataDataserviceBillDownloadurlQueryModel();
model.setBillType("trade");
model.setBillDate(billDate);
return AliPayApi.billDownloadUrlQuery(model);
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 退款
*/
@RequestMapping(value = "/tradeRefund")
@ResponseBody
public String tradeRefund(@RequestParam(required = false, name = "outTradeNo") String outTradeNo, @RequestParam(required = false, name = "tradeNo") String tradeNo) {
try {
AlipayTradeRefundModel model = new AlipayTradeRefundModel();
if (StringUtils.isNotEmpty(outTradeNo)) {
model.setOutTradeNo(outTradeNo);
}
if (StringUtils.isNotEmpty(tradeNo)) {
model.setTradeNo(tradeNo);
}
model.setRefundAmount("86.00");
model.setRefundReason("正常退款");
return AliPayApi.tradeRefundToResponse(model).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 交易查询
*/
@RequestMapping(value = "/tradeQuery")
@ResponseBody
public String tradeQuery(@RequestParam(required = false, name = "outTradeNo") String outTradeNo, @RequestParam(required = false, name = "tradeNo") String tradeNo) {
try {
AlipayTradeQueryModel model = new AlipayTradeQueryModel();
if (StringUtils.isNotEmpty(outTradeNo)) {
model.setOutTradeNo(outTradeNo);
}
if (StringUtils.isNotEmpty(tradeNo)) {
model.setTradeNo(tradeNo);
}
return AliPayApi.tradeQueryToResponse(model).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
@RequestMapping(value = "/tradeQueryByStr")
@ResponseBody
public String tradeQueryByStr(@RequestParam(required = false, name = "outTradeNo") String outTradeNo, @RequestParam(required = false, name = "tradeNo") String tradeNo) {
AlipayTradeQueryModel model = new AlipayTradeQueryModel();
if (StringUtils.isNotEmpty(outTradeNo)) {
model.setOutTradeNo(outTradeNo);
}
if (StringUtils.isNotEmpty(tradeNo)) {
model.setTradeNo(tradeNo);
}
try {
return AliPayApi.tradeQueryToResponse(model).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 创建订单
* {"alipay_trade_create_response":{"code":"10000","msg":"Success","out_trade_no":"081014283315033","trade_no":"2017081021001004200200274066"},"sign":"ZagfFZntf0loojZzdrBNnHhenhyRrsXwHLBNt1Z/dBbx7cF1o7SZQrzNjRHHmVypHKuCmYifikZIqbNNrFJauSuhT4MQkBJE+YGPDtHqDf4Ajdsv3JEyAM3TR/Xm5gUOpzCY7w+RZzkHevsTd4cjKeGM54GBh0hQH/gSyhs4pEN3lRWopqcKkrkOGZPcmunkbrUAF7+AhKGUpK+AqDw4xmKFuVChDKaRdnhM6/yVsezJFXzlQeVgFjbfiWqULxBXq1gqicntyUxvRygKA+5zDTqE5Jj3XRDjVFIDBeOBAnM+u03fUP489wV5V5apyI449RWeybLg08Wo+jUmeOuXOA=="}
*/
@RequestMapping(value = "/tradeCreate")
@ResponseBody
public String tradeCreate(@RequestParam("outTradeNo") String outTradeNo) {
String notifyUrl = aliPayBean.getDomain() + NOTIFY_URL;
AlipayTradeCreateModel model = new AlipayTradeCreateModel();
model.setOutTradeNo(outTradeNo);
model.setTotalAmount("88.88");
model.setBody("Body");
model.setSubject("Javen 测试统一收单交易创建接口");
//买家支付宝账号和buyer_id不能同时为空
model.setBuyerLogonId("abpkvd0206@sandbox.com");
try {
AlipayTradeCreateResponse response = AliPayApi.tradeCreateToResponse(model, notifyUrl);
return response.getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 撤销订单
*/
@RequestMapping(value = "/tradeCancel")
@ResponseBody
public String tradeCancel(@RequestParam(required = false, name = "outTradeNo") String outTradeNo, @RequestParam(required = false, name = "tradeNo") String tradeNo) {
try {
AlipayTradeCancelModel model = new AlipayTradeCancelModel();
if (StringUtils.isNotEmpty(outTradeNo)) {
model.setOutTradeNo(outTradeNo);
}
if (StringUtils.isNotEmpty(tradeNo)) {
model.setTradeNo(tradeNo);
}
return AliPayApi.tradeCancelToResponse(model).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 关闭订单
*/
@RequestMapping(value = "/tradeClose")
@ResponseBody
public String tradeClose(@RequestParam("outTradeNo") String outTradeNo, @RequestParam("tradeNo") String tradeNo) {
try {
AlipayTradeCloseModel model = new AlipayTradeCloseModel();
if (StringUtils.isNotEmpty(outTradeNo)) {
model.setOutTradeNo(outTradeNo);
}
if (StringUtils.isNotEmpty(tradeNo)) {
model.setTradeNo(tradeNo);
}
return AliPayApi.tradeCloseToResponse(model).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 结算
*/
@RequestMapping(value = "/tradeOrderSettle")
@ResponseBody
public String tradeOrderSettle(@RequestParam("tradeNo") String tradeNo) {
try {
AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel();
model.setOutRequestNo(StringUtils.getOutTradeNo());
model.setTradeNo(tradeNo);
return AliPayApi.tradeOrderSettleToResponse(model).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取应用授权URL并授权
*/
@RequestMapping(value = "/toOauth")
@ResponseBody
public void toOauth(HttpServletResponse response) {
try {
String redirectUri = aliPayBean.getDomain() + "/aliPay/redirect_uri";
String oauth2Url = AliPayApi.getOauth2Url(aliPayBean.getAppId(), redirectUri);
response.sendRedirect(oauth2Url);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 应用授权回调
*/
@RequestMapping(value = "/redirect_uri")
@ResponseBody
public String redirectUri(@RequestParam("app_id") String appId, @RequestParam("app_auth_code") String appAuthCode) {
try {
System.out.println("app_id:" + appId);
System.out.println("app_auth_code:" + appAuthCode);
//使用app_auth_code换取app_auth_token
AlipayOpenAuthTokenAppModel model = new AlipayOpenAuthTokenAppModel();
model.setGrantType("authorization_code");
model.setCode(appAuthCode);
return AliPayApi.openAuthTokenAppToResponse(model).getBody();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 查询授权信息
*/
@RequestMapping(value = "/openAuthTokenAppQuery")
@ResponseBody
public String openAuthTokenAppQuery(@RequestParam("appAuthToken") String appAuthToken) {
try {
AlipayOpenAuthTokenAppQueryModel model = new AlipayOpenAuthTokenAppQueryModel();
model.setAppAuthToken(appAuthToken);
return AliPayApi.openAuthTokenAppQueryToResponse(model).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 批量付款到支付宝账户有密接口
*/
@RequestMapping(value = "/batchTrans")
@ResponseBody
public void batchTrans(HttpServletResponse response) {
try {
String signType = "MD5";
String notifyUrl = aliPayBean.getDomain() + NOTIFY_URL;
Map<String, String> params = new HashMap<>(15);
params.put("partner", "PID");
params.put("sign_type", signType);
params.put("notify_url", notifyUrl);
params.put("account_name", "xxx");
params.put("detail_data", "流水号1^收款方账号1^收款账号姓名1^付款金额1^备注说明1|流水号2^收款方账号2^收款账号姓名2^付款金额2^备注说明2");
params.put("batch_no", String.valueOf(System.currentTimeMillis()));
params.put("batch_num", 1 + "");
params.put("batch_fee", 10.00 + "");
params.put("email", "xx@xxx.com");
AliPayApi.batchTrans(params, aliPayBean.getPrivateKey(), signType, response);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 地铁购票核销码发码
*/
@RequestMapping(value = "/voucherGenerate")
@ResponseBody
public String voucherGenerate(@RequestParam("tradeNo") String tradeNo) {
try {
//需要支付成功的订单号
// String tradeNo = getPara("tradeNo");
AlipayCommerceCityfacilitatorVoucherGenerateModel model = new AlipayCommerceCityfacilitatorVoucherGenerateModel();
model.setCityCode("440300");
model.setTradeNo(tradeNo);
model.setTotalFee("8");
model.setTicketNum("2");
model.setTicketType("oneway");
model.setSiteBegin("001");
model.setSiteEnd("002");
model.setTicketPrice("4");
return AliPayApi.voucherGenerateToResponse(model).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
@RequestMapping(value = "/return_url")
@ResponseBody
public String returnUrl(HttpServletRequest request) {
try {
// 获取支付宝GET过来反馈信息
Map<String, String> map = AliPayApi.toMap(request);
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
boolean verifyResult = AlipaySignature.rsaCheckV1(map, aliPayBean.getPublicKey(), "UTF-8",
"RSA2");
if (verifyResult) {
// TODO 请在这里加上商户的业务逻辑程序代码
System.out.println("return_url 验证成功");
return "success";
} else {
System.out.println("return_url 验证失败");
// TODO
return "failure";
}
} catch (AlipayApiException e) {
e.printStackTrace();
return "failure";
}
}
@RequestMapping(value = "/cert_return_url")
@ResponseBody
public String certReturnUrl(HttpServletRequest request) {
try {
// 获取支付宝GET过来反馈信息
Map<String, String> map = AliPayApi.toMap(request);
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
boolean verifyResult = AlipaySignature.rsaCertCheckV1(map, aliPayBean.getAliPayCertPath(), "UTF-8",
"RSA2");
if (verifyResult) {
// TODO 请在这里加上商户的业务逻辑程序代码
System.out.println("certReturnUrl 验证成功");
return "success";
} else {
System.out.println("certReturnUrl 验证失败");
// TODO
return "failure";
}
} catch (AlipayApiException e) {
e.printStackTrace();
return "failure";
}
}
@RequestMapping(value = "/notify_url")
@ResponseBody
public String notifyUrl(HttpServletRequest request) {
try {
// 获取支付宝POST过来反馈信息
Map<String, String> params = AliPayApi.toMap(request);
for (Map.Entry<String, String> entry : params.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
boolean verifyResult = AlipaySignature.rsaCheckV1(params, aliPayBean.getPublicKey(), "UTF-8", "RSA2");
if (verifyResult) {
// TODO 请在这里加上商户的业务逻辑程序代码 异步通知可能出现订单重复通知 需要做去重处理
System.out.println("notify_url 验证成功succcess");
return "success";
} else {
System.out.println("notify_url 验证失败");
// TODO
return "failure";
}
} catch (AlipayApiException e) {
e.printStackTrace();
return "failure";
}
}
@RequestMapping(value = "/cert_notify_url")
@ResponseBody
public String certNotifyUrl(HttpServletRequest request) {
try {
// 获取支付宝POST过来反馈信息
Map<String, String> params = AliPayApi.toMap(request);
for (Map.Entry<String, String> entry : params.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
boolean verifyResult = AlipaySignature.rsaCertCheckV1(params, aliPayBean.getAliPayCertPath(), "UTF-8", "RSA2");
if (verifyResult) {
// TODO 请在这里加上商户的业务逻辑程序代码 异步通知可能出现订单重复通知 需要做去重处理
System.out.println("certNotifyUrl 验证成功succcess");
return "success";
} else {
System.out.println("certNotifyUrl 验证失败");
// TODO
return "failure";
}
} catch (AlipayApiException e) {
e.printStackTrace();
return "failure";
}
}
}