AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage (); aliPayConfigStorage .setPid ("合作者id" ); aliPayConfigStorage .setAppId ("应用id" ); // aliPayConfigStorage.setAppAuthToken("ISV代商户代用,指定appAuthToken"); aliPayConfigStorage .setKeyPublic ("支付宝公钥" ); aliPayConfigStorage .setKeyPrivate ("应用私钥" ); aliPayConfigStorage .setNotifyUrl ("异步回调地址" ); aliPayConfigStorage .setReturnUrl ("同步回调地址" ); aliPayConfigStorage .setSignType ("签名方式" ); aliPayConfigStorage .setSeller ("收款账号" ); aliPayConfigStorage .setInputCharset ("utf-8" ); //是否为测试账号,沙箱环境 aliPayConfigStorage .setTest (true ); AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage (); aliPayConfigStorage .setPid ("合作者id" ); aliPayConfigStorage .setAppId ("应用id" ); // aliPayConfigStorage.setAppAuthToken("ISV代商户代用,指定appAuthToken"); aliPayConfigStorage .setKeyPrivate ("应用私钥" ); //设置为证书方式 aliPayConfigStorage .setCertSign (true ); //设置证书存储方式,这里为路径 aliPayConfigStorage .setCertStoreType (CertStoreType .PATH ); aliPayConfigStorage .setMerchantCert ("请填写您的应用公钥证书文件路径,例如:d:/appCertPublicKey_2019051064521003.crt" ); aliPayConfigStorage .setAliPayCert ("请填写您的支付宝公钥证书文件路径,例如:d:/alipayCertPublicKey_RSA2.crt" ); aliPayConfigStorage .setAliPayRootCert ("请填写您的支付宝根证书文件路径,例如:d:/alipayRootCert.crt" ); 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 .setAuthUsername ("user" ); //代理密码 httpConfigStorage .setAuthPassword ("password" ); /* /网路代理配置 根据需求进行设置**/ /* 网络请求ssl证书 根据需求进行设置**/ //设置ssl证书路径 跟着setCertStoreType 进行对应 httpConfigStorage .setKeystore ("证书文件流,证书字符串信息或证书绝对地址" ); //设置ssl证书对应的密码 httpConfigStorage .setStorePassword ("证书对应的密码" ); //设置ssl证书对应的存储方式 httpConfigStorage .setCertStoreType (CertStoreType .PATH ); /* /网络请求ssl证书**/ /* /网络请求连接池**/ //最大连接数 httpConfigStorage .setMaxTotal (20 ); //默认的每个路由的最大连接数 httpConfigStorage .setDefaultMaxPerRoute (10 ); //支付服务 AliPayService service = new AliPayService (aliPayConfigStorage ); //设置网络请求配置根据需求进行设置 //service.setRequestTemplateConfigStorage(httpConfigStorage) 精简版支付回调配置,主要用于实现业务与支付代码隔离使用,下面会讲到支付回调处理 //增加支付回调消息拦截器 service .addPayMessageInterceptor (new AliPayMessageInterceptor ()); //设置回调消息处理 service .setPayMessageHandler (spring .getBean (AliPayMessageHandler .class )); //支付订单基础信息 PayOrder payOrder = new PayOrder ("订单title" , "摘要" , BigDecimal .valueOf (0.01 ) , UUID .randomUUID ().toString ().replace ("-" , "" )); /*-----------扫码付-------------------*/ payOrder .setTransactionType (AliTransactionType .SWEEPPAY ); //获取扫码付的二维码 // String image = service.getQrPay(payOrder); BufferedImage image = service .genQrPay (payOrder ); /*-----------/扫码付-------------------*/ /*-----------APP-------------------*/ payOrder .setTransactionType (AliTransactionType .APP ); //获取APP支付所需的信息组,直接给app端就可使用 Map appOrderInfo = service .orderInfo (payOrder ); /*-----------/APP-------------------*/ /*-----------APP-------------------*/ payOrder .setTransactionType (AliTransactionType .MINAPP ); payOrder .setOpenid ("支付宝小程序授权登录成功后获取到的支付宝 user_id" ) //获取小程序支付所需的信息组,直接给小程序网页端就可使用 Map appOrderInfo = service .orderInfo (payOrder ); /*-----------/APP-------------------*/ /*-----------即时到帐 WAP 网页支付-------------------*/ // payOrder.setTransactionType(AliTransactionType.WAP); //WAP支付 payOrder .setTransactionType (AliTransactionType .PAGE ); // 即时到帐 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 ("支付失败" ); /*-----------回调处理-------------------*/ /*-----------回调处理-------------------*/ //HttpServletRequest request; System .out .println (service .payBack (request .getParameterMap (), request .getInputStream ()).toMessage ()); /*-----------回调处理-------------------*/ OrderSettle order = new OrderSettle (); order .setTradeNo ("支付宝单号" ); order .setOutRequestNo ("商户单号" ); order .setAmount (new BigDecimal (100 )); order .setDesc ("线下转账" ); Map result = service .settle (order ); Map result = service .query ("支付宝单号" , "我方系统单号" ); Map result = service .close ("支付宝单号" , "我方系统单号" ); Map result = service .cancel ("支付宝单号" , "我方系统单号" ); //过时方法 //Map result = service.refund("支付宝单号", "我方系统单号", "退款金额", "订单总金额"); //支付宝单号与我方系统单号二选一 RefundOrder order = new RefundOrder ("支付宝单号" , "我方系统单号" , "退款金额" , "订单总金额" ); //非必填, 根据业务需求而定,可用于多次退款 order .setRefundNo ("退款单号" ) AliRefundResult result = service .refund (order ); RefundOrder order = new RefundOrder (); order .setOutTradeNo ("我方系统商户单号" ); order .setTradeNo ("支付宝单号" ); //退款金额 order .setRefundAmount (new BigDecimal (1 )); order .setRefundNo ("退款单号" ); order .setDescription ("" ); Map result = service .refundquery (); Map result = service .downloadbill ("账单时间:日账单格式为yyyy-MM-dd,月账单格式为yyyy-MM" , "账单类型" ); order .setOutBizNo ("转账单号" ); order .setTransAmount (new BigDecimal (10 )); order .setOrderTitle ("转账业务的标题" ); order .setIdentity ("参与方的唯一标识" ); order .setIdentityType ("参与方的标识类型,目前支持如下类型:" ); order .setName ("参与方真实姓名" ); order .setRemark ("转账备注, 非必填" ); //单笔无密转账到支付宝账户 order .setTransferType (AliTransferType .TRANS_ACCOUNT_NO_PWD ); //单笔无密转账到银行卡 // order.setTransferType(AliTransferType.TRANS_BANKCARD_NO_PWD); Map result = service .transfer (order ); Map result = service .transferQuery ("商户转账订单号" , "支付平台转账订单号" );