需要注入的类
@Component
public class WXConfig implements com.github.wxpay.sdk.WXPayConfig {
/**
* 服务器地址
*/
@Value("${weChat.domain}")
private String domain;
/**
* 商户Id
*/
@Value("${weChat.mchId}")
private String mchId;
/**
* 支付key
*/
@Value("${weChat.key}")
private String key;
/**
* appid
*/
@Value("${weChat.appId}")
private String appId;
/**
* appSecret
*/
@Value("${weChat.appSecret}")
private String appSecret;
@Override
public String getAppID() {
return appId;
}
@Override
public String getMchID() {
return mchId;
}
@Override
public String getKey() {
return key;
}
@Override
public InputStream getCertStream() {
return null;
}
/**
* 连接超时时间
*
* @return
*/
@Override
public int getHttpConnectTimeoutMs() {
return 10 * 1000;
}
/**
* 读取超时时间
*
* @return
*/
@Override
public int getHttpReadTimeoutMs() {
return 10 * 1000;
}
public String getMchId() {
return mchId;
}
public String getAppSecret() {
return appSecret;
}
public String getGrantType() {
return "authorization_code";
}
/**
* 回调地址
*/
public String getNotifyURL() {
return this.domain + "/order/wxPayUnifiedNotify";
}
}
调用的类
/**
* 微信相关
*
* @author tangchao
*/
@Component
public class WxUtil {
@Autowired
private WXConfig wxConfig;
private final Logger LOG = LoggerFactory.getLogger(this.getClass());
/**
* 用户登录
*
* @param code 前端登录code
* @param encryptedData 包括敏感数据在内的完整用户信息的加密数据
* @param iv 加密算法的初始向量
* @return 返回用户信息 nickName,avatarUrl,gender,unionid,city,province,country,openid
* @throws Exception
*/
public JSONObject loginByWeixin(String code, String encryptedData, String iv) throws Exception {
WxUtil wxUtil = new WxUtil();
//根据code去调用接口获取用户openid和session_key
JSONObject json = wxUtil.getSessionKeyAndOpenid(code);
System.out.println("返回过来的json数据:" + json.toString());
//会话秘钥
String sessionkey = json.get("session_key").toString();
//用户唯一标识
String openid = json.get("openid").toString();
//拿到用户session_key和用户敏感数据进行解密,拿到用户信息。
String decrypts = wxUtil.decrypt(encryptedData, sessionkey, iv, "utf-8");
JSONObject jsons = JSONObject.parseObject(decrypts);
jsons.put("openid", openid);
return jsons;
}
}
wxConfig报空指针,为什么?