mirror of
https://gitee.com/egzosn/pay-java-parent.git
synced 2026-05-08 03:56:48 +08:00
支付宝支付简单例子
支付配置
AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage();
aliPayConfigStorage.setPid("合作者id");
aliPayConfigStorage.setAppId("应用id");
aliPayConfigStorage.setAliPublicKey("支付宝公钥");
aliPayConfigStorage.setKeyPrivate("应用私钥");
aliPayConfigStorage.setNotifyUrl("异步回调地址");
aliPayConfigStorage.setReturnUrl("同步回调地址");
aliPayConfigStorage.setSignType("签名方式");
aliPayConfigStorage.setSeller("收款账号");
aliPayConfigStorage.setInputCharset("utf-8");
//是否为测试账号,沙箱环境
aliPayConfigStorage.setTest(true);
网络请求配置
HttpConfigStorage httpConfigStorage = new HttpConfigStorage();
/* 网路代理配置 根据需求进行设置**/
//http代理地址
httpConfigStorage.setHttpProxyHost("192.168.1.69");
//代理端口
httpConfigStorage.setHttpProxyPort(3308);
//代理用户名
httpConfigStorage.setHttpProxyUsername("user");
//代理密码
httpConfigStorage.setHttpProxyPassword("password");
/* /网路代理配置 根据需求进行设置**/
/* 网络请求ssl证书 根据需求进行设置**/
//设置ssl证书路径
httpConfigStorage.setKeystorePath("证书绝对路径");
//设置ssl证书对应的密码
httpConfigStorage.setStorePassword("证书对应的密码");
/* /网络请求ssl证书**/
/* /网络请求连接池**/
//最大连接数
httpConfigStorage.setMaxTotal(20);
//默认的每个路由的最大连接数
httpConfigStorage.setDefaultMaxPerRoute(10);
创建支付服务
//支付服务
PayService service = new AliPayService(aliPayConfigStorage);
//设置网络请求配置根据需求进行设置
//service.setRequestTemplateConfigStorage(httpConfigStorage)
创建支付订单信息
//支付订单基础信息
PayOrder payOrder = new PayOrder("订单title", "摘要", new BigDecimal(0.01) , UUID.randomUUID().toString().replace("-", ""));
扫码付
/*-----------扫码付-------------------*/
payOrder.setTransactionType(AliTransactionType.SWEEPPAY);
//获取扫码付的二维码
BufferedImage image = service.genQrPay(payOrder);
/*-----------/扫码付-------------------*/
APP支付
/*-----------APP-------------------*/
payOrder.setTransactionType(AliTransactionType.APP);
//获取APP支付所需的信息组,直接给app端就可使用
Map appOrderInfo = service.orderInfo(payOrder);
/*-----------/APP-------------------*/
即时到帐 WAP 网页支付
/*-----------即时到帐 WAP 网页支付-------------------*/
// payOrder.setTransactionType(AliTransactionType.WAP); //WAP支付
payOrder.setTransactionType(AliTransactionType.DIRECT); // 即时到帐 PC网页支付
//获取支付所需的信息
Map directOrderInfo = service.orderInfo(payOrder);
//获取表单提交对应的字符串,将其序列化到页面即可,
String directHtml = service.buildRequest(directOrderInfo, MethodType.POST);
/*-----------/即时到帐 WAP 网页支付-------------------*/
条码付 声波付
/*-----------条码付 声波付-------------------*/
// payOrder.setTransactionType(AliTransactionType.WAVE_CODE); //声波付
payOrder.setTransactionType(AliTransactionType.BAR_CODE);//条码付
payOrder.setAuthCode("条码信息或者声波信息");
// 支付结果
Map params = service.microPay(payOrder);
/*-----------/条码付 声波付-------------------*/
回调处理
/*-----------回调处理-------------------*/
//HttpServletRequest request;
Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
if (service.verify(params)){
System.out.println("支付成功");
return;
}
System.out.println("支付失败");
/*-----------回调处理-------------------*/
支付订单查询
Map result = service..query("支付宝单号", "我方系统单号");
交易关闭接口
Map result = service.close("支付宝单号", "我方系统单号");
交易撤销接口
Map result = service.cancel("支付宝单号", "我方系统单号");
申请退款接口
//过时方法
//Map result = service.refund("支付宝单号", "我方系统单号", "退款金额", "订单总金额");
//支付宝单号与我方系统单号二选一
RefundOrder order = new RefundOrder("支付宝单号", "我方系统单号", "退款金额", "订单总金额");
//非必填, 根据业务需求而定,可用于多次退款
order.setRefundNo("退款单号")
Map result = service.refund(order);
查询退款
Map result = service.refundquery("支付宝单号", "我方系统单号");
下载对账单
Map result = service.downloadbill("账单时间:日账单格式为yyyy-MM-dd,月账单格式为yyyy-MM", "账单类型");
转账
TransferOrder order = new TransferOrder();
order.setOutNo("商户转账订单号");
order.setPayeeAccount("收款方账户,支付宝登录号,支持邮箱和手机号格式");
order.setAmount(new BigDecimal(10));
order.setPayerName("付款方姓名, 非必填");
order.setPayeeName("收款方真实姓名, 非必填");
order.setRemark("转账备注, 非必填");
//收款方账户类型 ,默认值 ALIPAY_LOGONID:支付宝登录号,支持邮箱和手机号格式。
order.setTransferType(AliTransferType.ALIPAY_LOGONID);
Map result = service.transfer(order);
转账查询
Map result = service.transferQuery("商户转账订单号", "支付平台转账订单号");