diff --git a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java index bf74515..b2a412e 100644 --- a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java +++ b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java @@ -181,12 +181,8 @@ public class WxPayService extends BasePayService { parameters.put(APPID, payConfigStorage.getAppid()); parameters.put(MCH_ID, payConfigStorage.getMchId()); //判断如果是服务商模式信息则加入 - if (!StringUtils.isEmpty(payConfigStorage.getSubMchId())) { - parameters.put("sub_mch_id", payConfigStorage.getSubMchId()); - } - if (!StringUtils.isEmpty(payConfigStorage.getSubAppid())) { - parameters.put("sub_appid", payConfigStorage.getSubAppid()); - } + setParameters(parameters, "sub_mch_id", payConfigStorage.getSubMchId()); + setParameters(parameters, "sub_appid", payConfigStorage.getSubAppid()); parameters.put(NONCE_STR, SignUtils.randomStr()); return parameters; @@ -213,15 +209,18 @@ public class WxPayService extends BasePayService { parameters.put("spbill_create_ip", StringUtils.isEmpty(order.getSpbillCreateIp()) ? "192.168.1.150" : order.getSpbillCreateIp()); // 总金额单位为分 parameters.put("total_fee", Util.conversionCentAmount(order.getPrice())); - if (StringUtils.isNotEmpty(order.getAddition())) { - parameters.put("attach", order.getAddition()); - } + setParameters(parameters, "attach", order.getAddition()); parameters.put("notify_url", payConfigStorage.getNotifyUrl()); parameters.put("trade_type", order.getTransactionType().getType()); if (null != order.getExpirationTime()) { parameters.put("time_start", DateUtils.formatDate(new Date(), DateUtils.YYYYMMDDHHMMSS)); parameters.put("time_expire", DateUtils.formatDate(order.getExpirationTime(), DateUtils.YYYYMMDDHHMMSS)); } + + if (null != order.getCurType()) { + parameters.put("fee_type", order.getCurType().getType()); + } + ((WxTransactionType) order.getTransactionType()).setAttribute(parameters, order); parameters = preOrderHandler(parameters, order); setSign(parameters); @@ -514,7 +513,7 @@ public class WxPayService extends BasePayService { private Map setParameters(Map parameters, String key, String value) { - if (!StringUtils.isEmpty(value)) { + if (StringUtils.isNotEmpty(value)) { parameters.put(key, value); } return parameters; @@ -537,7 +536,7 @@ public class WxPayService extends BasePayService { parameters.put("total_fee", Util.conversionCentAmount(refundOrder.getTotalAmount())); parameters.put("refund_fee", Util.conversionCentAmount(refundOrder.getRefundAmount())); setParameters(parameters, "notify_url", payConfigStorage.getNotifyUrl()); - if (null != refundOrder.getCurType()){ + if (null != refundOrder.getCurType()) { parameters.put("refund_fee_type", refundOrder.getCurType().getType()); } setParameters(parameters, "refund_desc", refundOrder.getDescription()); @@ -613,7 +612,7 @@ public class WxPayService extends BasePayService { /** - * @param transactionIdOrBillDate 支付平台订单号或者账单类型, 具体请 类型为{@link String }或者 {@link Date },类型须强制限制,类型不对应则抛出异常{@link PayErrorException} + * @param transactionIdOrBillDate 支付平台订单号或者账单日期, 具体请 类型为{@link String }或者 {@link Date },类型须强制限制,类型不对应则抛出异常{@link PayErrorException} * @param outTradeNoBillType 商户单号或者 账单类型 * @param transactionType 交易类型 * @return 返回支付方对应接口的结果 @@ -638,11 +637,8 @@ public class WxPayService extends BasePayService { //获取公共参数 Map parameters = getPublicParameters(); - if (StringUtils.isEmpty((String) transactionIdOrBillDate)) { - parameters.put("out_trade_no", outTradeNoBillType); - } else { - parameters.put("transaction_id", transactionIdOrBillDate); - } + setParameters(parameters, "out_trade_no", outTradeNoBillType); + setParameters(parameters, "transaction_id", (String) transactionIdOrBillDate); //设置签名 setSign(parameters); return requestTemplate.postForObject(getReqUrl(transactionType), XML.getMap2Xml(parameters), JSONObject.class); @@ -654,13 +650,13 @@ public class WxPayService extends BasePayService { * @param order 转账订单 *
      *
-     *                           注意事项:
-     *                           ◆ 当返回错误码为“SYSTEMERROR”时,请不要更换商户订单号,一定要使用原商户订单号重试,否则可能造成重复支付等资金风险。
-     *                           ◆ XML具有可扩展性,因此返回参数可能会有新增,而且顺序可能不完全遵循此文档规范,如果在解析回包的时候发生错误,请商户务必不要换单重试,请商户联系客服确认付款情况。如果有新回包字段,会更新到此API文档中。
-     *                           ◆ 因为错误代码字段err_code的值后续可能会增加,所以商户如果遇到回包返回新的错误码,请商户务必不要换单重试,请商户联系客服确认付款情况。如果有新的错误码,会更新到此API文档中。
-     *                           ◆ 错误代码描述字段err_code_des只供人工定位问题时做参考,系统实现时请不要依赖这个字段来做自动化处理。
+     *                                        注意事项:
+     *                                        ◆ 当返回错误码为“SYSTEMERROR”时,请不要更换商户订单号,一定要使用原商户订单号重试,否则可能造成重复支付等资金风险。
+     *                                        ◆ XML具有可扩展性,因此返回参数可能会有新增,而且顺序可能不完全遵循此文档规范,如果在解析回包的时候发生错误,请商户务必不要换单重试,请商户联系客服确认付款情况。如果有新回包字段,会更新到此API文档中。
+     *                                        ◆ 因为错误代码字段err_code的值后续可能会增加,所以商户如果遇到回包返回新的错误码,请商户务必不要换单重试,请商户联系客服确认付款情况。如果有新的错误码,会更新到此API文档中。
+     *                                        ◆ 错误代码描述字段err_code_des只供人工定位问题时做参考,系统实现时请不要依赖这个字段来做自动化处理。
      *
-     *                           
+ * * @return 对应的转账结果 */ @Override