增加微信支付 授权码查询OPENID接口API #101

This commit is contained in:
Binary Wang
2017-03-27 15:35:10 +08:00
parent 96d72fe542
commit 0418f172f5
5 changed files with 144 additions and 7 deletions

View File

@ -0,0 +1,46 @@
package com.github.binarywang.wxpay.bean.request;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
* <pre>
* 授权码查询openid接口请求对象类
* Created by Binary Wang on 2017-3-27.
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
* </pre>
*/
@XStreamAlias("xml")
public class WxPayAuthcode2OpenidRequest extends WxPayBaseRequest {
/**
* <pre>
* 授权码
* auth_code
* 是
* String(128)
* 扫码支付授权码,设备读取用户微信中的条码或者二维码信息
* </pre>
*/
@XStreamAlias("auth_code")
private String authCode;
public WxPayAuthcode2OpenidRequest() {
}
public WxPayAuthcode2OpenidRequest(String authCode) {
this.authCode = authCode;
}
public String getAuthCode() {
return this.authCode;
}
public void setAuthCode(String authCode) {
this.authCode = authCode;
}
@Override
protected void checkConstraints() {
// nothing to do
}
}

View File

@ -0,0 +1,40 @@
package com.github.binarywang.wxpay.bean.result;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
* <pre>
* 授权码查询openid接口请求结果类
* Created by Binary Wang on 2017-3-27.
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
* </pre>
*/
@XStreamAlias("xml")
public class WxPayAuthcode2OpenidResult extends WxPayBaseResult {
/**
* <pre>
* 用户标识
* openid
* 是
* String(128)
* 用户在商户appid下的唯一标识
* </pre>
*/
@XStreamAlias("openid")
private String openid;
public WxPayAuthcode2OpenidResult() {
}
public WxPayAuthcode2OpenidResult(String openid) {
this.openid = openid;
}
public String getOpenid() {
return this.openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
}

View File

@ -281,6 +281,8 @@ public interface WxPayService {
/**
* <pre>
* 转换短链接
* 文档地址:
* https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_9&index=8
* 应用场景:
* 该接口主要用于扫码原生支付模式一中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量,提升扫描速度和精确度。
* 接口地址https://api.mch.weixin.qq.com/tools/shorturl
@ -293,13 +295,33 @@ public interface WxPayService {
/**
* <pre>
* 转换短链接
* 应用场景:
* 该接口主要用于扫码原生支付模式一中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量,提升扫描速度和精确度。
* 接口地址https://api.mch.weixin.qq.com/tools/shorturl
* 是否需要证书:否
* </pre>
* @see WxPayService#shorturl(WxPayShorturlRequest)
* @param longUrl 需要被压缩的网址
*/
String shorturl(String longUrl) throws WxErrorException;
/**
* <pre>
* 授权码查询OPENID接口
* 通过授权码查询公众号Openid调用查询后该授权码只能由此商户号发起扣款直至授权码更新。
* 文档地址:
* https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9
* 接口链接:
* https://api.mch.weixin.qq.com/tools/authcodetoopenid
* </pre>
* @param request 请求对象
* @return openid
*/
String authcode2Openid(WxPayAuthcode2OpenidRequest request) throws WxErrorException;
/**
* <pre>
* 授权码查询OPENID接口
* </pre>
* @see WxPayService#authcode2Openid(WxPayAuthcode2OpenidRequest)
* @param authCode 授权码
* @return openid
*/
String authcode2Openid(String authCode) throws WxErrorException;
}

View File

@ -344,6 +344,22 @@ public class WxPayServiceImpl implements WxPayService {
return this.shorturl(new WxPayShorturlRequest(longUrl));
}
@Override
public String authcode2Openid(WxPayAuthcode2OpenidRequest request) throws WxErrorException {
request.checkAndSign(this.getConfig());
String url = this.getPayBaseUrl() + "/tools/authcodetoopenid";
String responseContent = this.post(url, request.toXML());
WxPayAuthcode2OpenidResult result = WxPayBaseResult.fromXML(responseContent, WxPayAuthcode2OpenidResult.class);
result.checkResult(this);
return result.getOpenid();
}
@Override
public String authcode2Openid(String authCode) throws WxErrorException {
return this.authcode2Openid(new WxPayAuthcode2OpenidRequest(authCode));
}
private String post(String url, String xmlParam) {
String requestString = xmlParam;
try {