mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-11-04 06:07:59 +08:00 
			
		
		
		
	增加微信支付 授权码查询OPENID接口API #101
This commit is contained in:
		@ -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
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -281,6 +281,8 @@ public interface WxPayService {
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * <pre>
 | 
					   * <pre>
 | 
				
			||||||
   *  转换短链接
 | 
					   *  转换短链接
 | 
				
			||||||
 | 
					   *  文档地址:
 | 
				
			||||||
 | 
					   *     https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_9&index=8
 | 
				
			||||||
   *  应用场景:
 | 
					   *  应用场景:
 | 
				
			||||||
   *     该接口主要用于扫码原生支付模式一中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量,提升扫描速度和精确度。
 | 
					   *     该接口主要用于扫码原生支付模式一中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量,提升扫描速度和精确度。
 | 
				
			||||||
   *  接口地址:https://api.mch.weixin.qq.com/tools/shorturl
 | 
					   *  接口地址:https://api.mch.weixin.qq.com/tools/shorturl
 | 
				
			||||||
@ -293,13 +295,33 @@ public interface WxPayService {
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * <pre>
 | 
					   * <pre>
 | 
				
			||||||
   *  转换短链接
 | 
					   *  转换短链接
 | 
				
			||||||
   *  应用场景:
 | 
					 | 
				
			||||||
   *     该接口主要用于扫码原生支付模式一中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量,提升扫描速度和精确度。
 | 
					 | 
				
			||||||
   *  接口地址:https://api.mch.weixin.qq.com/tools/shorturl
 | 
					 | 
				
			||||||
   *  是否需要证书:否
 | 
					 | 
				
			||||||
   * </pre>
 | 
					   * </pre>
 | 
				
			||||||
 | 
					   * @see WxPayService#shorturl(WxPayShorturlRequest)
 | 
				
			||||||
   * @param longUrl 需要被压缩的网址
 | 
					   * @param longUrl 需要被压缩的网址
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  String shorturl(String longUrl) throws WxErrorException;
 | 
					  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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -344,6 +344,22 @@ public class WxPayServiceImpl implements WxPayService {
 | 
				
			|||||||
    return this.shorturl(new WxPayShorturlRequest(longUrl));
 | 
					    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) {
 | 
					  private String post(String url, String xmlParam) {
 | 
				
			||||||
    String requestString = xmlParam;
 | 
					    String requestString = xmlParam;
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
 | 
				
			|||||||
@ -28,7 +28,6 @@ import static org.testng.Assert.*;
 | 
				
			|||||||
@Test
 | 
					@Test
 | 
				
			||||||
@Guice(modules = ApiTestModule.class)
 | 
					@Guice(modules = ApiTestModule.class)
 | 
				
			||||||
public class WxPayServiceImplTest {
 | 
					public class WxPayServiceImplTest {
 | 
				
			||||||
 | 
					 | 
				
			||||||
  private final Logger logger = LoggerFactory.getLogger(this.getClass());
 | 
					  private final Logger logger = LoggerFactory.getLogger(this.getClass());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Inject
 | 
					  @Inject
 | 
				
			||||||
@ -245,10 +244,24 @@ public class WxPayServiceImplTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    String result = this.payService.shorturl(new WxPayShorturlRequest(longUrl));
 | 
					    String result = this.payService.shorturl(new WxPayShorturlRequest(longUrl));
 | 
				
			||||||
    assertNotNull(result);
 | 
					    assertNotNull(result);
 | 
				
			||||||
    this.logger.info(result.toString());
 | 
					    this.logger.info(result);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    result = this.payService.shorturl(longUrl);
 | 
					    result = this.payService.shorturl(longUrl);
 | 
				
			||||||
    assertNotNull(result);
 | 
					    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);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user