java实现APP微信支付——工具
下面是我修改后的代码
←←←←←← WXController
WXservice
import java.util.Map; public interface WXservice { Map<String, String> dounifiedOrder(String attach, String total_fee) throws Exception; String payBack(String notifyData); }
WXserviceImpl
下面都放到util 里
OurWxConfig
WxMD5Util
import com.github.wxpay.sdk.WXPayConstants; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.Map; import java.util.Set; /** * @Author: zyh * @Date: 2020/6/20 19:37 */ public class WxMD5Util { public String getSign(Map<String, String> data) throws Exception { OurWxConfig config = new OurWxConfig(); Set<String> keySet = data.keySet(); String[] keyArray = keySet.toArray(new String[keySet.size()]); Arrays.sort(keyArray); StringBuilder sb = new StringBuilder(); for (String k : keyArray) { if (k.equals(WXPayConstants.FIELD_SIGN)) { continue; } if (data.get(k).trim().length() > 0) // 参数值为空,则不参与签名 sb.append(k).append("=").append(data.get(k).trim()).append("&"); } sb.append("key=").append(config.getKey()); MessageDigest md = null; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } byte[] array = new byte[0]; try { array = md.digest(sb.toString().getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } StringBuilder sb2 = new StringBuilder(); for (byte item : array) { sb2.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3)); } return sb2.toString().toUpperCase(); } }
WxPayTool