public Merchant getMerchant() { if (merchant == null) { merchant = new Merchant(); } return merchant; }
public AlipayClient getAopClient() { return new DefaultAlipayClient(openapiGatewayUrl, getMerchant().getAppId(), getMerchant().getPrivateKeyPem(), "json", getCharset(), getMerchant().getPrivateKeyPem(), "RSA"); }
/** * 获得商户数据。网关存在多个商户数据时返回第一个,无法找到返回null * * @param gatewayType * 网关类型 * @return 网关存在多个商户数据时返回第一个,无法找到返回null */ public Merchant getMerchant(GatewayType gatewayType) { return merchantList.stream().filter(m -> m.getGatewayType() == gatewayType).findFirst().get(); }
@Override public GatewayBase initGateway() { AlipayGateway alipayGateway = new AlipayGateway(); alipayGateway.getMerchant().setAppId(this.getAppid()); alipayGateway.getMerchant().setEmail(this.getSeller_email()); alipayGateway.getMerchant().setPartner(this.getPartner()); alipayGateway.getMerchant().setKey(this.getKey()); alipayGateway.getMerchant().setPrivateKeyPem(this.getPrivatekeypem()); alipayGateway.getMerchant().setPublicKeyPem(this.getPublicKeypem()); try { alipayGateway.getMerchant().setNotifyUrl(new URI(this.getNotifyurl())); alipayGateway.getMerchant().setReturnUrl(new URI(this.getReturnurl())); } catch (URISyntaxException e) { // TODO Auto-generated catch block throw new GatewayException(e.getMessage(), e); } return alipayGateway; } }
@Override public GatewayBase initGateway() { WeChatpayGataway weChatpayGataway = new WeChatpayGataway(); weChatpayGataway.getMerchant().setAppId(this.getAppid()); weChatpayGataway.getMerchant().setPartner(this.getMch_id()); weChatpayGataway.getMerchant().setKey(this.getKey()); try { weChatpayGataway.getMerchant().setNotifyUrl(new URI(this.getNotifyurl())); weChatpayGataway.getMerchant().setReturnUrl(new URI(this.getReturnurl())); } catch (URISyntaxException e) { // TODO Auto-generated catch block throw new GatewayException(e.getMessage(), e); } return weChatpayGataway; } }
@Override public GatewayBase initGateway() { UnionpayGateway unionpayGateway = new UnionpayGateway(); unionpayGateway.getMerchant().setPartner(this.getMerid()); try { unionpayGateway.getMerchant().setNotifyUrl(new URI(this.getNotifyurl())); unionpayGateway.getMerchant().setReturnUrl(new URI(this.getReturnurl())); } catch (URISyntaxException e) { // TODO Auto-generated catch block throw new GatewayException(e.getMessage(), e); } return unionpayGateway; } }
param.put("frontUrl", getMerchant().getReturnUrl().toString()); param.put("backUrl", getMerchant().getNotifyUrl().toString()); param.put("merId", getMerchant().getPartner());
@Override public Map<String, String> buildPayParams() { // TODO Auto-generated method stub AlipayClient alipayClient = getAopClient(); // 获得初始化的AlipayClient AlipayTradeAppPayRequest alipayRequest = new AlipayTradeAppPayRequest();// 创建API对应的request alipayRequest.setReturnUrl(getMerchant().getReturnUrl().toString()); alipayRequest.setNotifyUrl(getMerchant().getNotifyUrl().toString());// 在公共参数中设置回跳和通知地址 AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); model.setSubject(getOrder().getSubject()); model.setOutTradeNo(getOrder().getOrderNo()); model.setTimeoutExpress("30m"); model.setTotalAmount(String.valueOf(getOrder().getOrderAmount())); model.setProductCode("QUICK_MSECURITY_PAY"); alipayRequest.setBizModel(model); Map<String, String> resParam = new HashMap<String, String>(); try { resParam.put("body", alipayClient.pageExecute(alipayRequest).getBody()); } catch (AlipayApiException e) { // TODO Auto-generated catch block throw new GatewayException(e.getMessage(), e); } return resParam; }
/** * 初始化支付订单的参数 * * @param trade_type * @param spbill_create_ip */ private void initPaymentOrderParameter(String trade_type, String spbill_create_ip) { setGatewayParameterValue("appid", getMerchant().getAppId()); setGatewayParameterValue("mch_id", getMerchant().getPartner()); setGatewayParameterValue("nonce_str", Utility.generateUUID()); setGatewayParameterValue("body", getOrder().getSubject()); setGatewayParameterValue("out_trade_no", getOrder().getOrderNo()); setGatewayParameterValue("total_fee", (int) (getOrder().getOrderAmount() * 100)); setGatewayParameterValue("spbill_create_ip", spbill_create_ip); setGatewayParameterValue("notify_url", getMerchant().getNotifyUrl().toString()); setGatewayParameterValue("trade_type", trade_type); setGatewayParameterValue("sign", getSign()); // 签名需要在最后设置,以免缺少参数。 }
/** * 初始化支付订单的参数 * */ private void initQueryOrderParameter() { // TODO Auto-generated method stub setGatewayParameterValue("appid", getMerchant().getAppId()); setGatewayParameterValue("mch_id", getMerchant().getPartner()); setGatewayParameterValue("out_trade_no", getOrder().getOrderNo()); setGatewayParameterValue("nonce_str", Utility.generateUUID()); setGatewayParameterValue("sign", getSign()); // 签名需要在最后设置,以免缺少参数。 }
private String getSign() { // TODO Auto-generated method stub StringBuilder signBuilder = new StringBuilder(); getSortedGatewayParameter().forEach((key, val) -> { if (!Utility.isBlankOrEmpty(val) && !key.equalsIgnoreCase("sign")) { signBuilder.append(String.format("%s=%s&", key, val)); } }); signBuilder.append(String.format("key=%s", getMerchant().getKey())); return Utility.getMD5(signBuilder.toString()).toUpperCase(); }
data.put("merId", getMerchant().getPartner()); // 商户号码,请改成自己申请的商户号或者open上注册得来的777商户号测试 data.put("accessType", "0"); // 接入类型,商户接入固定填0,不需修改
@Override public GatewayBase initGateway() { DemoGateway demoGateway = new DemoGateway(); demoGateway.getMerchant().setPartner(this.getMerid()); try { demoGateway.getMerchant().setNotifyUrl(new URI(this.getNotifyurl())); demoGateway.getMerchant().setReturnUrl(new URI(this.getReturnurl())); } catch (URISyntaxException e) { // TODO Auto-generated catch block throw new GatewayException(e.getMessage(), e); } return demoGateway; } }
requestData.put("merId", getMerchant().getPartner()); // 商户号码,请改成自己申请的正式商户号或者open上注册得来的777测试商户号 requestData.put("accessType", "0"); // 接入类型,0:直连商户 requestData.put("orderId", getOrder().getOrderNo()); // 商户订单号,8-40位数字字母,不能含“-”或“_”,可以自行定制规则 requestData.put("frontUrl", getMerchant().getReturnUrl().toString()); requestData.put("backUrl", getMerchant().getNotifyUrl().toString());
@Override public String buildPaymentForm() { // TODO Auto-generated method stub AlipayClient alipayClient = getAopClient(); // 获得初始化的AlipayClient AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();// 创建API对应的request alipayRequest.setReturnUrl(getMerchant().getReturnUrl().toString()); alipayRequest.setNotifyUrl(getMerchant().getNotifyUrl().toString());// 在公共参数中设置回跳和通知地址 AlipayTradePagePayModel model = new AlipayTradePagePayModel(); model.setSubject(getOrder().getSubject()); model.setOutTradeNo(getOrder().getOrderNo()); model.setTimeoutExpress("30m"); model.setTotalAmount(String.valueOf(getOrder().getOrderAmount())); model.setProductCode("FAST_INSTANT_TRADE_PAY"); alipayRequest.setBizModel(model); try { // 调用SDK生成表单 return alipayClient.pageExecute(alipayRequest).getBody(); } catch (AlipayApiException e) { // TODO Auto-generated catch block throw new GatewayException(e.getMessage(), e); } }
@Override public Map<String, String> buildPayParams() { // TODO Auto-generated method stub initPaymentOrderParameter("APP", "127.0.0.1"); String xmlString = convertGatewayParameterDataToXml(); String resultString = HttpClientUtil.doPost(payGatewayUrl, xmlString, "text/xml"); getWeixinPaymentUrl(resultString); String prepayid = getGatewayParameterValue("prepay_id"); clearGatewayParameterData(); setGatewayParameterValue("appid", getMerchant().getAppId()); setGatewayParameterValue("partnerid", getMerchant().getPartner()); setGatewayParameterValue("prepayid", prepayid); setGatewayParameterValue("package", "Sign=WXPay"); setGatewayParameterValue("noncestr", Utility.generateUUID()); setGatewayParameterValue("timestamp", Utility.getCurrentTimestampMs()); setGatewayParameterValue("sign", getSign()); Map<String, String> resParam = new HashMap<String, String>(); resParam.put("prepayid", prepayid); resParam.put("noncestr", getGatewayParameterValue("noncestr")); resParam.put("sign", getGatewayParameterValue("sign")); resParam.put("timestamp", getGatewayParameterValue("timestamp")); resParam.put("partnerid", getGatewayParameterValue("partnerid")); return resParam; }
@Override public String buildWapPaymentUrl(Map<String, String> map) { // TODO Auto-generated method stub AlipayClient alipayClient = getAopClient(); // 获得初始化的AlipayClient AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();// 创建API对应的request alipayRequest.setReturnUrl(getMerchant().getReturnUrl().toString()); alipayRequest.setNotifyUrl(getMerchant().getNotifyUrl().toString());// 在公共参数中设置回跳和通知地址 AlipayTradeWapPayModel model = new AlipayTradeWapPayModel(); model.setSubject(getOrder().getSubject()); model.setOutTradeNo(getOrder().getOrderNo()); model.setTimeoutExpress("30m"); model.setTotalAmount(String.valueOf(getOrder().getOrderAmount())); model.setProductCode("QUICK_WAP_PAY"); alipayRequest.setBizModel(model); try { // 调用SDK生成表单 return alipayClient.pageExecute(alipayRequest).getBody(); } catch (AlipayApiException e) { // TODO Auto-generated catch block throw new GatewayException(e.getMessage(), e); } }
/** * 删除商户数据 * * @param gatewayType * 网关类型 */ public void removeMerchant(GatewayType gatewayType) { Merchant removeMerchant = merchantList.stream().filter(m -> m.getGatewayType() == gatewayType).findFirst().get(); if (removeMerchant != null) { merchantList.remove(removeMerchant); } }
/** * 添加商户数据。与添加的商户数据重复的网关将会被删除 * * @param merchant * 商户数据 */ public void addMerchant(Merchant merchant) { removeMerchant(merchant.getGatewayType()); merchantList.add(merchant); }