805 Starred Star 3K Fork 1.2K

egan / pay-java-parent

支付宝_快速入门

egan egan 上次修改于
导出

快速入门

        AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage();
        aliPayConfigStorage.setPid("合作者id");
        aliPayConfigStorage.setAppId("应用id");
        aliPayConfigStorage.setPublicKey("支付宝公钥");
        aliPayConfigStorage.setKeyPrivate("应用私钥");
        aliPayConfigStorage.setNotifyUrl("异步回调地址");
        aliPayConfigStorage.setReturnUrl("同步回调地址");
        aliPayConfigStorage.setSignType("签名方式");
        aliPayConfigStorage.setSeller("收款账号");
        aliPayConfigStorage.setInputCharset("utf-8");
        //是否为测试账号,沙箱环境
        aliPayConfigStorage.setTest(true);

        PayService service = new AliPayService(aliPayConfigStorage);

        PayOrder payOrder = new PayOrder("订单title", "摘要",  new BigDecimal(0.01) , UUID.randomUUID().toString().replace("-", ""));

       /*-----------扫码付-------------------*/
        payOrder.setTransactionType(AliTransactionType.SWEEPPAY);
        //获取扫码付的二维码
        BufferedImage image = service.genQrPay(payOrder);
        /*-----------/扫码付-------------------*/

spring mvc 简单案例


@RestController
public class PayController {

    private PayService service = null;

    @PostConstruct
    public void init() {
        AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage();
        aliPayConfigStorage.setPid("合作者id");
        aliPayConfigStorage.setAppId("应用id");
        aliPayConfigStorage.setKeyPublic("支付宝公钥");
        aliPayConfigStorage.setKeyPrivate("应用私钥");
        aliPayConfigStorage.setNotifyUrl("异步回调地址");
        aliPayConfigStorage.setReturnUrl("同步回调地址");
        aliPayConfigStorage.setSignType("签名方式");
        aliPayConfigStorage.setSeller("收款账号");
        aliPayConfigStorage.setInputCharset("utf-8");
        //是否为测试账号,沙箱环境
        aliPayConfigStorage.setTest(true);

       // service = new AliPayService(aliPayConfigStorage);
        //请求连接池配置
        HttpConfigStorage httpConfigStorage = new HttpConfigStorage();
        //最大连接数
        httpConfigStorage.setMaxTotal(20);
        //默认的每个路由的最大连接数
        httpConfigStorage.setDefaultMaxPerRoute(10);
        service =  new AliPayService(aliPayConfigStorage, httpConfigStorage);
        //以下拦截器与处理器用于支付与业务隔离简化版回调
        //增加支付回调消息拦截器
        service.addPayMessageInterceptor(new AliPayMessageInterceptor());
        //设置回调消息处理
        service.setPayMessageHandler(spring.getBean(AliPayMessageHandler.class));

    }

    /**
     * 跳到支付页面
     * 针对实时支付,即时付款
     * @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("-", ""));
        //网页支付
        order.setTransactionType(AliTransactionType.PAGE);
        //获取支付订单信息
        Map orderInfo = service.orderInfo(order);
        //组装成html表单信息
        return  service.buildRequest(orderInfo, MethodType.POST);
    }


    /**
     * 获取二维码图像
     * 二维码支付
     * @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(service.genQrPay(order), "JPEG", baos);
        return baos.toByteArray();
    }

/**
 * 支付回调地址 方式一
 *
 * 方式二,{@link #payBack(HttpServletRequest)} 是属于简化方式, 试用与简单的业务场景
 *
 *
 * @param request 请求
 *
 * @return 返回对应的响应码
 * @see #payBack(HttpServletRequest)
 */
@Deprecated
@RequestMapping(value = "payBackBefore.json")
public String payBackBefore(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 request 请求
 *
 * @return 返回对应的响应码
 *
 * 业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
 *
 * 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
 *
 */
@RequestMapping(value = "payBack.json")
public String payBack(HttpServletRequest request) throws IOException {
    //业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看com.egzosn.pay.common.api.PayService.setPayMessageHandler()
    return service.payBack(request.getParameterMap(), request.getInputStream()).toMessage();
}



Java
1
https://gitee.com/egzosn/pay-java-parent.git
git@gitee.com:egzosn/pay-java-parent.git
egzosn
pay-java-parent
pay-java-parent

搜索帮助

按下并拖动鼠标开始截图