| | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.TypeReference; |
| | | import com.doumee.dao.business.dto.PayOrderNotifyParam; |
| | | import org.apache.commons.codec.binary.Base64; |
| | | |
| | | public class SybUtil { |
| | |
| | | |
| | | public static boolean validSign(TreeMap<String, String> param, |
| | | String appkey, String signType) throws Exception { |
| | | if (param != null && !param.isEmpty()) { |
| | | if (!param.containsKey("sign")) |
| | | return false; |
| | | String sign = param.remove("sign"); |
| | | if ("MD5".equals(signType)) {// 如果是md5则需要把md5的key加入到排序 |
| | | param.put("key", appkey); |
| | | } |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (Map.Entry<String, String> entry : param.entrySet()) { |
| | | if (entry.getValue() != null && entry.getValue().length() > 0) { |
| | | if (param != null && !param.isEmpty()) { |
| | | if (!param.containsKey("sign")) |
| | | return false; |
| | | String sign = param.remove("sign"); |
| | | if ("MD5".equals(signType)) {// 如果是md5则需要把md5的key加入到排序 |
| | | param.put("key", appkey); |
| | | } |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (Map.Entry<String, String> entry : param.entrySet()) { |
| | | if (entry.getValue() != null && entry.getValue().length() > 0) { |
| | | sb.append(entry.getKey()).append("=") |
| | | .append(entry.getValue()).append("&"); |
| | | } |
| | |
| | | |
| | | return keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey)); |
| | | } |
| | | public static String getPayInfoByStatus(PayOrderNotifyParam map) { |
| | | /** |
| | | * 0000:交易成功 |
| | | * 1001:交易不存在 |
| | | * 2008或者2000 : 交易处理中,请查询交易,如果是实时交易(例如刷卡支付,交易撤销,退货),建议每隔一段时间(10秒)查询交易 |
| | | * 3开头的错误码代表交易失败 |
| | | * 3888-流水号重复 |
| | | * 3889-交易控制失败,具体原因看errmsg |
| | | * 3099-渠道商户错误 |
| | | * 3014-交易金额小于应收手续费 |
| | | * 3024-退款频率限制,建议30秒后再发起退款 |
| | | * 3031-校验实名信息失败 |
| | | * 3088-交易未支付(在查询时间区间内未成功支付,如已影响资金24小时内会做差错退款处理) |
| | | * 3089-撤销异常,如已影响资金24小时内会做差错退款处理 |
| | | * 3045-其他错误,具体原因看errmsg |
| | | * 3050-交易已被撤销 |
| | | * 3999-其他错误,具体原因看errmsg |
| | | * 3008-商户余额不足 |
| | | */ |
| | | String info = "交易失败"; |
| | | switch (map.getTrxstatus()){ |
| | | case "0000": |
| | | info="交易成功"; |
| | | break; |
| | | case "1001": |
| | | info="交易不存在"; |
| | | break; |
| | | case "2008": |
| | | info="交易处理中,请查询交易,如果是实时交易(例如刷卡支付,交易撤销,退货),建议每隔一段时间(10秒)查询交易"; |
| | | break; |
| | | case "2000": |
| | | info="交易处理中,请查询交易,如果是实时交易(例如刷卡支付,交易撤销,退货),建议每隔一段时间(10秒)查询交易"; |
| | | break; |
| | | case "3888": |
| | | info="流水号重复"; |
| | | break; |
| | | case "3889": |
| | | info="交易控制失败,具体原因看errmsg"; |
| | | break; |
| | | case "3099": |
| | | info="渠道商户错误"; |
| | | break; |
| | | case "3014": |
| | | info="退款频率限制,建议30秒后再发起退款"; |
| | | break; |
| | | case "3024": |
| | | info="交易金额小于应收手续费"; |
| | | break; |
| | | case "3031": |
| | | info="校验实名信息失败"; |
| | | break; |
| | | case "3088": |
| | | info="交易未支付(在查询时间区间内未成功支付,如已影响资金24小时内会做差错退款处理)"; |
| | | break; |
| | | case "3089": |
| | | info="撤销异常,如已影响资金24小时内会做差错退款处理"; |
| | | break; |
| | | case "3045": |
| | | info="其他错误,具体原因看errmsg"; |
| | | break; |
| | | case "3050": |
| | | info="交易已被撤销"; |
| | | break; |
| | | case "3999": |
| | | info= "其他错误1,具体原因看errmsg"; |
| | | break; |
| | | case "3008": |
| | | info="商户余额不足"; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | return map.getTrxstatus() + info ; |
| | | } |
| | | public static String getPayTypeByCode(PayOrderNotifyParam map) { |
| | | /** |
| | | VSP501 微信支付 |
| | | VSP502 微信支付撤销 |
| | | VSP503 微信支付退款 |
| | | VSP511 支付宝支付 |
| | | VSP512 支付宝支付撤销 |
| | | VSP513 支付宝支付退款 |
| | | VSP551 银联扫码支付 |
| | | VSP552 银联扫码撤销 |
| | | VSP553 银联扫码退货 |
| | | */ |
| | | String info = "交易失败"; |
| | | switch (map.getTrxcode()){ |
| | | case "VSP501": |
| | | info="微信支付"; |
| | | break; |
| | | case "VSP502": |
| | | info="微信支付撤销"; |
| | | break; |
| | | case "VSP511": |
| | | info="付宝支付"; |
| | | break; |
| | | case "VSP512": |
| | | info="支付宝支付撤销"; |
| | | break; |
| | | case "VSP513": |
| | | info="支付宝支付退款"; |
| | | break; |
| | | case "VSP551": |
| | | info="银联扫码支付"; |
| | | break; |
| | | case "VSP552": |
| | | info="银联扫码撤销"; |
| | | break; |
| | | case "VSP553": |
| | | info="银联扫码退货"; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | return info ; |
| | | } |
| | | |
| | | } |