项目中使用工厂家策略模式消灭if else
package com.elfsack.cs.services.alipay;import java.util.HashMap; import java.util.Map;/* 支付工厂* @author 3380*/ public class AliPayServicesFactory {private static final Map<String, AliPayService> map = new HashMap<>();static {map.put("2021003135631012", new AliPayFundTrans());map.put("2021003144621740", new AliPayFundTrans01());map.put("2021003144625694", new AliPayFundTrans02());map.put("2021003144642645", new AliPayFundTrans03());map.put("2021003144614973", new AliPayFundTrans04());map.put("2021003144631645", new AliPayFundTrans05());map.put("2021003144633649", new AliPayFundTrans06());map.put("2021002192621264", new AliPayFundTrans07());map.put("2021003144643632", new AliPayFundTrans08());}public static AliPayService getPayService(String medalType) {return map.get(medalType);}}
package com.elfsack.cs.services.alipay;import com.alipay.api.response.AlipayFundTransUniTransferResponse; import com.elfsack.cs.entity.refund.PayMethods;/* 支付宝支付服务接口* @author 3380* @adte 20220814*/ public interface AliPayService {AlipayFundTransUniTransferResponse aliPayAppId(PayMethods payMethods) throws Exception; }
package com.elfsack.cs.services.alipay;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayClient; import com.alipay.api.CertAlipayRequest; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayFundTransUniTransferRequest; import com.alipay.api.response.AlipayFundTransUniTransferResponse; import com.elfsack.cs.entity.refund.PayMethods; import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class AliPayFundTrans01 implements AliPayService {private Logger logger = LoggerFactory.getLogger(AliPayFundTrans01.class);//应用私钥private String privateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQClL8hPWb760xOSGMrm+xEBADb70rhuR5yVdTdjwu00xzKfvM73QYX0xm8jgTwgM8sfMzH0uVm9eiQjqx3KXwNhUU6IYklhxd47/cM7DLtlMC3fjasKQ0IM7GSm1fc9See9FUz3A9vk/RxRX4uiP1782RwQiW+2YzoOh1boFYC9DWZGKpvmbIfkZkUreaUEHRZYgHmQNJlSo5HGPgKORYw7zuAJXvoJFJlZC3Stc8kUrqwW+1YCPzrjrcMT72RZczjonssRA5IPYrheANIYJIyK/18AoNrTuTM2xjwD2oUHu7VTVBfQaAm0825qDIeOIo8ie7FM9C7EWnqHFtmVYM2lAgMBAAECggEAOHRSIzxq1tJYt++dOL/Jmev23q2vtpDm5PWAjqnJ4+XIWWtv2HUeUP+YcCv03pSU8P7QLfFCyEz8GOyca9N5FkNxcY8VwUKcpygdFwtM6FJE+0gxknpWEpCf/ZzWuK2Pc8HZ4foBpwsSKIVc9YBu+D9DJiuycEUNTHXYr8zZiMKE+cTOjX5BWd2x8yI+rYDZMO4vMt0fPtnR+qrxB0EkcTYfeydX1ovKDViTuhjW7CkjXviRqco5ldVSkgyAQg1XWyGS+8wUeS0Msus620xv8MeOwkLHwHYERsOZerevePjdKfmn8hubvQ4w3KaCnHfQh8oWKr8GTbNXOyxAMyBmwQKBgQDTe2iMJUw2jlv5YbMU6R7XLepALpWc1dRomlnob+Unt4IoizqCXJAJ9s3WWPI1RQpXKI2hnPuXZGlLTDewqjyeGzFDN6ckKHWJA6lUM6Fx96bsnAe9B+xvW/znISApYzbwaolN16bSa+atK/vzXeHITE0y7rWCCyAH1LT/JRoWOQKBgQDH9Y2M4dQYdgf3baahezZ+yTa9Z2xxgQanR61hb+PzYfVut6WQl3gA6Y9T6m7d7peyLDe0O0AUa7w+0n6wBUhfgBWonQve1b3p4lrPFRiQ26HIzYERgauQqfvHbe1U7/kTPPkgG5jk5K0LXXr/Ll+rwMdDFbLyhvcMa0AY8VUSzQKBgQDNh0YXzbe/3aKtPrIYRGdgoJLkRWHJxlZkQn3WU8jVTJcGaCk4wFSMGnv5MQBTnQFrq1HaGwK4IzHhp/UHkKrQzYSW2uNpVJjFy/Uoi/T/Gbv0f79VivnRUAj9Z0gmcPHXvPIr4MWUAqFw8yotXrQrQVxVf4CPHdjHQ4WT4a70oQKBgGca/dc0JwpJ6keyOaawguQTWu+FIczRLB4bfpJsgIzh6Q0jEvMgt1c5F5e8nVhAi+XqmPqNRriA6Ps3zO10e+IKiKB+Aj3v1tJ/zjVTemxPY/fHx5LAWzfn/pTR4PvYFYXO/eKJeGgmZfgjRqXIQrqsV9MGoFQgNckokE+MOULNAoGBALPsZXhHIzJD/hayP8xvETLNrGuPMO54I+62nXlMGNkaOlg0ciTqK41mmqgCjBIwQqz4Gp0yU+7FaXqHeo0vMxvHqJg699y9H4hpcjrvFJqFPKlfiHUA8CEFLXbsQnZEKI80MZN+/hQfN+dndgvwr5iFa7pxyl2NZRUjOmfHVfPU";@Overridepublic AlipayFundTransUniTransferResponse aliPayAppId(PayMethods payMethods) throws Exception {logger.info("01支付宝转账传参数据:{}", JSON.toJSON(payMethods));CertAlipayRequest certAlipayRequest = new CertAlipayRequest();certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); //gateway:支付宝网关(固定)https://openapi.alipay.com/gateway.docertAlipayRequest.setAppId("2021003144621740"); //APPID 即创建应用后生成,详情见创建应用并获取 APPIDcertAlipayRequest.setPrivateKey(privateKey); //开发者应用私钥,由开发者自己生成certAlipayRequest.setFormat("json"); //参数返回格式,只支持 json 格式certAlipayRequest.setCharset("UTF-8"); //请求和签名使用的字符编码格式,支持 GBK和 UTF-8certAlipayRequest.setSignType("RSA2"); //商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。certAlipayRequest.setCertContent(payMethods.getCertContent());certAlipayRequest.setAlipayPublicCertContent(payMethods.getAliPayContent());certAlipayRequest.setRootCertContent(payMethods.getRootContent());AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();//创建json对象JSONObject bizObject = new JSONObject();//商家侧唯一订单号不能重复bizObject.put("out_biz_no", payMethods.getMerchantOrderId());//订单总金额if(payMethods.getRefundAmount() != null){bizObject.put("trans_amount",payMethods.getRefundAmount().toString());}//销售产品码 默认bizObject.put("product_code","TRANS_ACCOUNT_NO_PWD");//业务场景bizObject.put("biz_scene","DIRECT_TRANSFER");//收款方信息JSONObject payeeObject = new JSONObject();//参与方的标识类型payeeObject.put("identity_type","ALIPAY_LOGON_ID");//参与方的标识IDpayeeObject.put("identity",payMethods.getReceiverAccount());//参与方真实姓名payeeObject.put("name",payMethods.getReceiver());//添加收款方信息bizObject.put("payee_info",payeeObject);//转账业务的标题,用于在支付宝用户的账单里显示。bizObject.put("order_title","客服线下申请退款");//是否展示付款方别名bizObject.put("business_params","true");request.setBizContent(String.valueOf(bizObject));logger.info("01支付宝转账调接口传参:{}",JSON.toJSON(request));AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);logger.info("01支付宝转账调接口返回结果:{}",JSON.toJSON(response));return response;} }