-
Notifications
You must be signed in to change notification settings - Fork 919
支付宝_发起支付接口
egan edited this page Dec 9, 2019
·
3 revisions
下面的代码假设你已经有了一个PayService实例,怎么构造请看 快速入门
@RestController
@RequestMapping
public class PayController {
private PayService payService;
private PayMessageRouter router;
/**
* 这里对 PayService 与 router进行构造
*/
@PostConstruct
public void init() {
....
}
/**
* 跳到支付页面
* 针对实时支付,即时付款
*
* @return 跳到支付页面
*/
@RequestMapping(value = "toPay.html", produces = "text/html;charset=UTF-8")
public String toPay() {
PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01), UUID.randomUUID().toString().replace("-", ""));
//WAP支付
//order.setTransactionType(AliTransactionType.WAP);
//电脑网页支付
order.setTransactionType(AliTransactionType.PAGE);
//获取支付订单信息
Map orderInfo = payService.orderInfo(order);
//组装成html表单信息
return payService.buildRequest(orderInfo, MethodType.POST);
}
/**
* 被动扫码付款(条码付),声波付
* @param authCode 条码信息
* @return 支付结果
*/
@RequestMapping(value = "microPay")
public Map<String, Object> microPay(String authCode) throws IOException {
PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01), UUID.randomUUID().toString().replace("-", ""));
//声波付
// order.setTransactionType(AliTransactionType.WAVE_CODE);
//条码付
order.setTransactionType(AliTransactionType.BAR_CODE);
//设置授权码,条码等
order.setAuthCode(authCode);
//支付结果
Map<String, Object> params = payService.microPay(order);
PayConfigStorage storage = payService.getPayConfigStorage();
//校验
if (payService.verify(params)) {
PayMessage message = new PayMessage(params, storage.getPayType(), storage.getMsgType().name());
//支付校验通过后通过路由进行业务处理
router.route(message);
}
//这里开发者自行处理
return params;
}
/**
* 获取二维码图像
* 二维码支付
*
* @return 二维码图像
*/
@RequestMapping(value = "toQrPay.jpg", produces = "image/jpeg;charset=UTF-8")
public byte[] toWxQrPay() throws IOException {
PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01), UUID.randomUUID().toString().replace("-", ""));
//扫码付
order.setTransactionType(AliTransactionType.SWEEPPAY);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(payService.genQrPay(order), "JPEG", baos);
return baos.toByteArray();
}
/**
* 获取支付预订单信息
*
* @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;
}