mirror of
https://gitee.com/egzosn/pay-java-parent.git
synced 2026-06-02 22:12:43 +08:00
增加支付宝微信支付案例
This commit is contained in:
@@ -0,0 +1,258 @@
|
||||
|
||||
package com.egzosn.pay.demo.controller;
|
||||
|
||||
|
||||
import com.egzosn.pay.ali.api.AliPayConfigStorage;
|
||||
import com.egzosn.pay.ali.api.AliPayService;
|
||||
import com.egzosn.pay.ali.bean.AliTransactionType;
|
||||
import com.egzosn.pay.common.api.Callback;
|
||||
import com.egzosn.pay.common.api.PayConfigStorage;
|
||||
import com.egzosn.pay.common.api.PayService;
|
||||
import com.egzosn.pay.common.bean.*;
|
||||
import com.egzosn.pay.common.http.UriVariables;
|
||||
import com.egzosn.pay.common.util.MatrixToImageWriter;
|
||||
import com.egzosn.pay.common.util.sign.SignUtils;
|
||||
import com.egzosn.pay.common.util.str.StringUtils;
|
||||
import com.egzosn.pay.demo.entity.ApyAccount;
|
||||
import com.egzosn.pay.demo.entity.PayType;
|
||||
import com.egzosn.pay.demo.request.QueryOrder;
|
||||
import com.egzosn.pay.demo.service.ApyAccountService;
|
||||
import com.egzosn.pay.demo.service.PayResponse;
|
||||
import com.egzosn.pay.payoneer.api.PayoneerPayService;
|
||||
import com.egzosn.pay.wx.bean.WxTransactionType;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import static com.egzosn.pay.demo.dao.ApyAccountRepository.apyAccounts;
|
||||
|
||||
/**
|
||||
* 发起支付入口
|
||||
*
|
||||
* @author: egan
|
||||
* @email egzosn@gmail.com
|
||||
* @date 2016/11/18 0:25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("ali")
|
||||
public class AliPayController {
|
||||
|
||||
private PayService service = null;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage();
|
||||
aliPayConfigStorage.setPid("2088102169916436");
|
||||
aliPayConfigStorage.setAppId("2016080400165436");
|
||||
aliPayConfigStorage.setKeyPublic("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEyWlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DIpIxmIyKXv4GGAkPyJ/6FTFY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB");
|
||||
aliPayConfigStorage.setKeyPrivate("MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKroe/8h5vC4L6T+B2WdXiVwGsMvUKgb2XsKix6VY3m2wcf6tyzpNRDCNykbIwGtaeo7FshN+qZxdXHLiIam9goYncBit/8ojfLGy2gLxO/PXfzGxYGs0KsDZ+ryVPPmE34ZZ8jiJpR0ygzCFl8pN3QJPJRGTJn5+FTT9EF/9zyZAgMBAAECgYAktngcYC35u7cQXDk+jMVyiVhWYU2ULxdSpPspgLGzrZyG1saOcTIi/XVX8Spd6+B6nmLQeF/FbU3rOeuD8U2clzul2Z2YMbJ0FYay9oVZFfp5gTEFpFRTVfzqUaZQBIjJe/xHL9kQVqc5xHlE/LVA27/Kx3dbC35Y7B4EVBDYAQJBAOhsX8ZreWLKPhXiXHTyLmNKhOHJc+0tFH7Ktise/0rNspojU7o9prOatKpNylp9v6kux7migcMRdVUWWiVe+4ECQQC8PqsuEz7B0yqirQchRg1DbHjh64bw9Kj82EN1/NzOUd53tP9tg+SO97EzsibK1F7tOcuwqsa7n2aY48mQ+y0ZAkBndA2xcRcnvOOjtAz5VO8G7R12rse181HjGfG6AeMadbKg30aeaGCyIxN1loiSfNR5xsPJwibGIBg81mUrqzqBAkB+K6rkaPXJR9XtzvdWb/N3235yPkDlw7Z4MiOVM3RzvR/VMDV7m8lXoeDde2zQyeMOMYy6ztwA6WgE1bhGOnQRAkEAouUBv1sVdSBlsexX15qphOmAevzYrpufKgJIRLFWQxroXMS7FTesj+f+FmGrpPCxIde1dqJ8lqYLTyJmbzMPYw==");
|
||||
aliPayConfigStorage.setNotifyUrl("http://pay.egzosn.com/payBack.json");
|
||||
aliPayConfigStorage.setReturnUrl("http://pay.egzosn.com/payBack.html");
|
||||
aliPayConfigStorage.setSignType(SignUtils.RSA.name());
|
||||
aliPayConfigStorage.setSeller("2088102169916436");
|
||||
aliPayConfigStorage.setInputCharset("utf-8");
|
||||
//是否为测试账号,沙箱环境
|
||||
aliPayConfigStorage.setTest(true);
|
||||
|
||||
service = new AliPayService(aliPayConfigStorage);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 跳到支付页面
|
||||
* 针对实时支付,即时付款
|
||||
*
|
||||
* @param price 金额
|
||||
* @return 跳到支付页面
|
||||
*/
|
||||
@RequestMapping(value = "toPay.html", produces = "text/html;charset=UTF-8")
|
||||
public String toPay( BigDecimal price) {
|
||||
//及时收款
|
||||
PayOrder order = new PayOrder("订单title", "摘要", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), AliTransactionType.DIRECT);
|
||||
//WAP
|
||||
// PayOrder order = new PayOrder("订单title", "摘要", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), AliTransactionType.WAP);
|
||||
|
||||
Map orderInfo = service.orderInfo(order);
|
||||
return service.buildRequest(orderInfo, MethodType.POST);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取支付预订单信息
|
||||
*
|
||||
* @return 支付预订单信息
|
||||
*/
|
||||
@RequestMapping("app")
|
||||
public Map<String, Object> app() {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("code", 0);
|
||||
PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01), UUID.randomUUID().toString().replace("-", ""));
|
||||
//App支付
|
||||
order.setTransactionType(AliTransactionType.APP);
|
||||
data.put("orderInfo", UriVariables.getMapToParameters(service.orderInfo(order)));
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取二维码图像
|
||||
* 二维码支付
|
||||
* @param price 金额
|
||||
* @return 二维码图像
|
||||
*/
|
||||
@RequestMapping(value = "toQrPay.jpg", produces = "image/jpeg;charset=UTF-8")
|
||||
public byte[] toWxQrPay( BigDecimal price) throws IOException {
|
||||
//获取对应的支付账户操作工具(可根据账户id)
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
ImageIO.write(service.genQrPay( new PayOrder("订单title", "摘要", null == price ? new BigDecimal(0.01) : price, System.currentTimeMillis()+"", AliTransactionType.SWEEPPAY)), "JPEG", baos);
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 刷卡付,pos主动扫码付款(条码付)
|
||||
* @param authCode 授权码,条码等
|
||||
* @param price 金额
|
||||
* @return 支付结果
|
||||
*/
|
||||
@RequestMapping(value = "microPay")
|
||||
public Map<String, Object> microPay(BigDecimal price, String authCode) throws IOException {
|
||||
//获取对应的支付账户操作工具(可根据账户id)
|
||||
//条码付
|
||||
PayOrder order = new PayOrder("huodull order", "huodull order", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), AliTransactionType.BAR_CODE);
|
||||
//声波付
|
||||
// PayOrder order = new PayOrder("huodull order", "huodull order", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), AliTransactionType.WAVE_CODE);
|
||||
//设置授权码,条码等
|
||||
order.setAuthCode(authCode);
|
||||
//支付结果
|
||||
Map<String, Object> params = service.microPay(order);
|
||||
//校验
|
||||
if (service.verify(params)) {
|
||||
|
||||
//支付校验通过后的处理
|
||||
//......业务逻辑处理块........
|
||||
|
||||
|
||||
}
|
||||
//这里开发者自行处理
|
||||
return params;
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付回调地址
|
||||
*
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "payBack.json")
|
||||
public String payBack(HttpServletRequest request) throws IOException {
|
||||
|
||||
//获取支付方返回的对应参数
|
||||
Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
|
||||
if (null == params) {
|
||||
return service.getPayOutMessage("fail", "失败").toMessage();
|
||||
}
|
||||
|
||||
//校验
|
||||
if (service.verify(params)) {
|
||||
//这里处理业务逻辑
|
||||
//......业务逻辑处理块........
|
||||
return service.getPayOutMessage("success", "成功").toMessage();
|
||||
}
|
||||
|
||||
return service.getPayOutMessage("fail", "失败").toMessage();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回查询回来的结果集,支付方原值返回
|
||||
*/
|
||||
@RequestMapping("query")
|
||||
public Map<String, Object> query(QueryOrder order) {
|
||||
return service.query(order.getTradeNo(), order.getOutTradeNo());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 交易关闭接口
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方交易关闭后的结果
|
||||
*/
|
||||
@RequestMapping("close")
|
||||
public Map<String, Object> close(QueryOrder order) {
|
||||
return service.close(order.getTradeNo(), order.getOutTradeNo());
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请退款接口
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方申请退款后的结果
|
||||
*/
|
||||
@RequestMapping("refund")
|
||||
public Map<String, Object> refund(RefundOrder order) {
|
||||
return service.refund(order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询退款
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方查询退款后的结果
|
||||
*/
|
||||
@RequestMapping("refundquery")
|
||||
public Map<String, Object> refundquery(QueryOrder order) {
|
||||
return service.refundquery(order.getTradeNo(), order.getOutTradeNo());
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载对账单
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方下载对账单的结果
|
||||
*/
|
||||
@RequestMapping("downloadbill")
|
||||
public Object downloadbill(QueryOrder order) {
|
||||
return service.downloadbill(order.getBillDate(), order.getBillType());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通用查询接口,根据 AliTransactionType 类型进行实现,此接口不包括退款
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方对应接口的结果
|
||||
*/
|
||||
@RequestMapping("secondaryInterface")
|
||||
public Map<String, Object> secondaryInterface(QueryOrder order) {
|
||||
TransactionType type = AliTransactionType.valueOf(order.getTransactionType());
|
||||
return service.secondaryInterface(order.getTradeNoOrBillDate(), order.getOutTradeNoBillType(), type, new Callback<Map<String, Object>>() {
|
||||
@Override
|
||||
public Map<String, Object> perform(Map<String, Object> map) {
|
||||
return map;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -56,32 +56,18 @@ public class PayController {
|
||||
* 获取授权页面
|
||||
* @param payId
|
||||
* @param payeeId
|
||||
* @param authPageType
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("getAuthorizationPage.json")
|
||||
public Map<String ,Object> getAuthorizationPage(Integer payId,String payeeId,AuthPageType authPageType ){
|
||||
public Map<String ,Object> getAuthorizationPage(Integer payId,String payeeId ){
|
||||
PayResponse payResponse = service.getPayResponse(payId);
|
||||
PayoneerPayService payoneerPayService = (PayoneerPayService) payResponse.getService();
|
||||
Map<String, Object> data = new LinkedHashMap<>();
|
||||
data.put("code", 0);
|
||||
data.put("url", payoneerPayService.getAuthorizationPage(payeeId,authPageType));
|
||||
data.put("url", payoneerPayService.getAuthorizationPage(payeeId));
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发起收款申请
|
||||
* @param payId 账户id
|
||||
* @param payeeId 授权id(收款id)
|
||||
* @param payOrder 订单信息
|
||||
* @return 收款请求结果
|
||||
*/
|
||||
@RequestMapping("charges")
|
||||
public Map<String ,Object> charges(Integer payId,String payeeId,PayOrder payOrder){
|
||||
PayResponse payResponse = service.getPayResponse(payId);
|
||||
PayoneerPayService service = (PayoneerPayService) payResponse.getService();
|
||||
return service.charges(payeeId,payOrder);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -194,7 +180,7 @@ public class PayController {
|
||||
//获取对应的支付账户操作工具(可根据账户id)
|
||||
PayResponse payResponse = service.getPayResponse(payId);
|
||||
|
||||
PayOrder order = new PayOrder("订单title", "摘要", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), PayType.valueOf(payResponse.getStorage().getPayType()).getTransactionType(transactionType));
|
||||
PayOrder order = new PayOrder("huodull order", "huodull order", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), PayType.valueOf(payResponse.getStorage().getPayType()).getTransactionType(transactionType));
|
||||
//设置授权码,条码等
|
||||
order.setAuthCode(authCode);
|
||||
//支付结果
|
||||
|
||||
@@ -0,0 +1,265 @@
|
||||
|
||||
package com.egzosn.pay.demo.controller;
|
||||
|
||||
|
||||
import com.egzosn.pay.common.api.Callback;
|
||||
import com.egzosn.pay.common.api.PayService;
|
||||
import com.egzosn.pay.common.bean.MethodType;
|
||||
import com.egzosn.pay.common.bean.PayOrder;
|
||||
import com.egzosn.pay.common.bean.RefundOrder;
|
||||
import com.egzosn.pay.common.bean.TransactionType;
|
||||
import com.egzosn.pay.common.http.UriVariables;
|
||||
import com.egzosn.pay.demo.entity.PayType;
|
||||
import com.egzosn.pay.demo.request.QueryOrder;
|
||||
import com.egzosn.pay.demo.service.PayResponse;
|
||||
import com.egzosn.pay.wx.api.WxPayConfigStorage;
|
||||
import com.egzosn.pay.wx.api.WxPayService;
|
||||
import com.egzosn.pay.wx.bean.WxTransactionType;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* 发起支付入口
|
||||
*
|
||||
* @author: egan
|
||||
* @email egzosn@gmail.com
|
||||
* @date 2016/11/18 0:25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("wx")
|
||||
public class WxPayController {
|
||||
|
||||
private PayService service = null;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
WxPayConfigStorage wxPayConfigStorage = new WxPayConfigStorage();
|
||||
wxPayConfigStorage.setMchId("合作者id(商户号)");
|
||||
wxPayConfigStorage.setAppid("应用id");
|
||||
wxPayConfigStorage.setKeyPublic("密钥");
|
||||
wxPayConfigStorage.setKeyPrivate("密钥");
|
||||
wxPayConfigStorage.setNotifyUrl("异步回调地址");
|
||||
wxPayConfigStorage.setReturnUrl("同步回调地址");
|
||||
wxPayConfigStorage.setSignType("签名方式");
|
||||
wxPayConfigStorage.setInputCharset("utf-8");
|
||||
|
||||
|
||||
service = new WxPayService(wxPayConfigStorage);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 跳到支付页面
|
||||
* 针对实时支付
|
||||
*
|
||||
* @param price 金额
|
||||
* @return 跳到支付页面
|
||||
*/
|
||||
@RequestMapping(value = "toPay.html", produces = "text/html;charset=UTF-8")
|
||||
public String toPay( HttpServletRequest request, BigDecimal price) {
|
||||
PayOrder order = new PayOrder("订单title", "摘要", null == price ? new BigDecimal(0.01) : price , UUID.randomUUID().toString().replace("-", ""), WxTransactionType.MWEB);
|
||||
order.setSpbillCreateIp(request.getHeader("X-Real-IP"));
|
||||
StringBuffer requestURL = request.getRequestURL();
|
||||
//设置网页地址
|
||||
order.setWapUrl(requestURL.substring(0, requestURL.indexOf("/") > 0 ? requestURL.indexOf("/") : requestURL.length() ));
|
||||
//设置网页名称
|
||||
order.setWapName("在线充值");
|
||||
|
||||
Map orderInfo = service.orderInfo(order);
|
||||
return service.buildRequest(orderInfo, MethodType.POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* 公众号支付
|
||||
*
|
||||
*
|
||||
* @param openid openid
|
||||
* @param price 金额
|
||||
* @return 返回jsapi所需参数
|
||||
*/
|
||||
@RequestMapping(value = "jsapi" )
|
||||
public Map toPay(String openid, BigDecimal price) {
|
||||
|
||||
PayOrder order = new PayOrder("订单title", "摘要", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), WxTransactionType.JSAPI);
|
||||
order.setOpenid(openid);
|
||||
|
||||
Map orderInfo = service.orderInfo(order);
|
||||
orderInfo.put("code", 0);
|
||||
|
||||
return orderInfo;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取支付预订单信息
|
||||
*
|
||||
* @return 支付预订单信息
|
||||
*/
|
||||
@RequestMapping("app")
|
||||
public Map<String, Object> app() {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("code", 0);
|
||||
PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01), UUID.randomUUID().toString().replace("-", ""));
|
||||
//App支付
|
||||
order.setTransactionType(WxTransactionType.APP);
|
||||
data.put("orderInfo", service.orderInfo(order));
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取二维码图像
|
||||
* 二维码支付
|
||||
* @param price 金额
|
||||
* @return 二维码图像
|
||||
*/
|
||||
@RequestMapping(value = "toQrPay.jpg", produces = "image/jpeg;charset=UTF-8")
|
||||
public byte[] toWxQrPay( BigDecimal price) throws IOException {
|
||||
//获取对应的支付账户操作工具(可根据账户id)
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
ImageIO.write(service.genQrPay( new PayOrder("订单title", "摘要", null == price ? new BigDecimal(0.01) : price, System.currentTimeMillis()+"", WxTransactionType.NATIVE)), "JPEG", baos);
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 刷卡付,pos主动扫码付款(条码付)
|
||||
* @param authCode 授权码,条码等
|
||||
* @param price 金额
|
||||
* @return 支付结果
|
||||
*/
|
||||
@RequestMapping(value = "microPay")
|
||||
public Map<String, Object> microPay( BigDecimal price, String authCode) throws IOException {
|
||||
//获取对应的支付账户操作工具(可根据账户id)
|
||||
//条码付
|
||||
PayOrder order = new PayOrder("huodull order", "huodull order", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), WxTransactionType.MICROPAY);
|
||||
//设置授权码,条码等
|
||||
order.setAuthCode(authCode);
|
||||
//支付结果
|
||||
Map<String, Object> params = service.microPay(order);
|
||||
//校验
|
||||
if (service.verify(params)) {
|
||||
|
||||
//支付校验通过后的处理
|
||||
//......业务逻辑处理块........
|
||||
|
||||
|
||||
}
|
||||
//这里开发者自行处理
|
||||
return params;
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付回调地址
|
||||
*
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "payBack.json")
|
||||
public String payBack(HttpServletRequest request) throws IOException {
|
||||
|
||||
//获取支付方返回的对应参数
|
||||
Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
|
||||
if (null == params) {
|
||||
return service.getPayOutMessage("fail", "失败").toMessage();
|
||||
}
|
||||
|
||||
//校验
|
||||
if (service.verify(params)) {
|
||||
//这里处理业务逻辑
|
||||
//......业务逻辑处理块........
|
||||
return service.getPayOutMessage("success", "成功").toMessage();
|
||||
}
|
||||
|
||||
return service.getPayOutMessage("fail", "失败").toMessage();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回查询回来的结果集,支付方原值返回
|
||||
*/
|
||||
@RequestMapping("query")
|
||||
public Map<String, Object> query(QueryOrder order) {
|
||||
return service.query(order.getTradeNo(), order.getOutTradeNo());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 交易关闭接口
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方交易关闭后的结果
|
||||
*/
|
||||
@RequestMapping("close")
|
||||
public Map<String, Object> close(QueryOrder order) {
|
||||
return service.close(order.getTradeNo(), order.getOutTradeNo());
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请退款接口
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方申请退款后的结果
|
||||
*/
|
||||
@RequestMapping("refund")
|
||||
public Map<String, Object> refund(RefundOrder order) {
|
||||
return service.refund(order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询退款
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方查询退款后的结果
|
||||
*/
|
||||
@RequestMapping("refundquery")
|
||||
public Map<String, Object> refundquery(QueryOrder order) {
|
||||
return service.refundquery(order.getTradeNo(), order.getOutTradeNo());
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载对账单
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方下载对账单的结果
|
||||
*/
|
||||
@RequestMapping("downloadbill")
|
||||
public Object downloadbill(QueryOrder order) {
|
||||
return service.downloadbill(order.getBillDate(), order.getBillType());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通用查询接口,根据 WxTransactionType 类型进行实现,此接口不包括退款
|
||||
*
|
||||
* @param order 订单的请求体
|
||||
* @return 返回支付方对应接口的结果
|
||||
*/
|
||||
@RequestMapping("secondaryInterface")
|
||||
public Map<String, Object> secondaryInterface(QueryOrder order) {
|
||||
TransactionType type = WxTransactionType.valueOf(order.getTransactionType());
|
||||
return service.secondaryInterface(order.getTradeNoOrBillDate(), order.getOutTradeNoBillType(), type, new Callback<Map<String, Object>>() {
|
||||
@Override
|
||||
public Map<String, Object> perform(Map<String, Object> map) {
|
||||
return map;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -116,6 +116,21 @@ getOrderInfo" target="_blank">
|
||||
<button id="js_submit">提交</button>
|
||||
|
||||
|
||||
<br>
|
||||
主动收款(pos条码声波付等)
|
||||
<form action="microPay" target="_blank">
|
||||
账户id<input type="text" name="payId">
|
||||
<br>
|
||||
金额<input type="text" name="price">
|
||||
<br>
|
||||
交易类型<input type="text" name="transactionType">
|
||||
<br>
|
||||
条码授权信息<input type="text" name="authCode">
|
||||
<br>
|
||||
<input type="submit" value="提交">
|
||||
</form>
|
||||
<br>
|
||||
|
||||
<br>
|
||||
二维码
|
||||
<form action="toQrPay.jpg" target="_blank">
|
||||
|
||||
Reference in New Issue
Block a user