增加微信支付 授权码查询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 {

View File

@ -28,7 +28,6 @@ import static org.testng.Assert.*;
@Test
@Guice(modules = ApiTestModule.class)
public class WxPayServiceImplTest {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Inject
@ -245,10 +244,24 @@ public class WxPayServiceImplTest {
String result = this.payService.shorturl(new WxPayShorturlRequest(longUrl));
assertNotNull(result);
this.logger.info(result.toString());
this.logger.info(result);
result = this.payService.shorturl(longUrl);
assertNotNull(result);
this.logger.info(result.toString());
this.logger.info(result);
}
@Test
public void testAuthcode2Openid() throws Exception {
String authCode = "11111";
String result = this.payService.authcode2Openid(new WxPayAuthcode2OpenidRequest(authCode));
assertNotNull(result);
this.logger.info(result);
result = this.payService.authcode2Openid(authCode);
assertNotNull(result);
this.logger.info(result);
}
}