本例中有些引用的类与方法不做过多介绍,之后会提供完整源码下载,请自行查看。
本篇根据开发者文档-帐号管理编写。请对照查看,一些传入与返回参数就不过多介绍。地址为:https://mp.weixin.qq.com/wiki/18/8a8bbd4f0abfa3e58d7f68ce7252c0d6.html
public class AccountManagement { private int expire_seconds; //该二维码有效时间,以秒为单位。 最大不超过604800(即7天)。 private String action_name; //二维码类型,QR_SCENE为临时,QR_LIMIT_SCENE为永久,QR_LIMIT_STR_SCENE为永久的字符串参数值 private ActionInfo action_info; //二维码详细信息 private String action; //此处填long2short,代表长链接转短链接 private String long_url; //需要转换的长链接,支持http://、https://、weixin://wxpay 格式的url public int getExpire_seconds() { return expire_seconds; } public void setExpire_seconds(int expire_seconds) { this.expire_seconds = expire_seconds; } public String getAction_name() { return action_name; } public void setAction_name(String action_name) { this.action_name = action_name; } public ActionInfo getAction_info() { return action_info; } public void setAction_info(ActionInfo action_info) { this.action_info = action_info; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public String getLong_url() { return long_url; } public void setLong_url(String long_url) { this.long_url = long_url; } public class ActionInfo { private Scene scene; public Scene getScene() { return scene; } public void setScene(Scene scene) { this.scene = scene; } public class Scene { private int scene_id; //场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1--100000) private String scene_str; //场景值ID(字符串形式的ID),字符串类型,长度限制为1到64,仅永久二维码支持此字段 public int getScene_id() { return scene_id; } public void setScene_id(int scene_id) { this.scene_id = scene_id; } public String getScene_str() { return scene_str; } public void setScene_str(String scene_str) { this.scene_str = scene_str; } } } }
public interface AccountManagementService { //创建临时二维码 public String createTempQRCode(AccountManagement accountManagement); //创建永久二维码 public String createQRCode(AccountManagement accountManagement); //通过ticket换取二维码 public String getQRCodeByTicket(String ticket); //长链接转短链接接口 public String getShortUrl(AccountManagement accountManagement); }
@Service("accountManagementService") public class AccountManagementServiceImpl implements AccountManagementService { private static final Logger logger = Logger.getLogger(AccountManagementServiceImpl.class); @Override public String createTempQRCode(AccountManagement accountManagement) { logger.info("==========createTempQRCode==========="); String url = WeChatInterface.CREATE_TEMP_QRCODE.replace("ACCESS_TOKEN", WeChatCertificate.WECHAT_ACCESSTOKEN); return JsonUtil.getResp(url, "POST", new Gson().toJson(accountManagement)); } @Override public String createQRCode(AccountManagement accountManagement) { logger.info("==========createQRCode==========="); String url = WeChatInterface.CREATE_QRCODE.replace("ACCESS_TOKEN", WeChatCertificate.WECHAT_ACCESSTOKEN); return JsonUtil.getResp(url, "POST", new Gson().toJson(accountManagement)); } @Override public String getQRCodeByTicket(String ticket) { logger.info("==========getQRCodeByTicket==========="); String url = WeChatInterface.GET_QRCODE_BY_TICKET.replace("TICKET", ticket); return HttpUtil.getStringByGet(url); } @Override public String getShortUrl(AccountManagement accountManagement) { logger.info("==========getShortUrl==========="); String url = WeChatInterface.GET_SHORTURL.replace("ACCESS_TOKEN", WeChatCertificate.WECHAT_ACCESSTOKEN); String cmd ="curl -d \""+ new Gson().toJson(accountManagement) +" \" \""+url+"\""; return cmd; // return HttpUtil.getStringByCurl(cmd); } }
@RunWith(SpringJUnit4ClassRunner.class) // 表示继承了 SpringJUnit4ClassRunner 类 @ContextConfiguration("classpath:spring-mybatis.xml") public class TestWXAccountManagement { @Resource private AccountManagementService accountManagementService; // @Test public void createTempQRCode() { AccountManagement accountManagement = new AccountManagement(); accountManagement.setExpire_seconds(604800); accountManagement.setAction_name("QR_SCENE"); AccountManagement.ActionInfo actionInfo = accountManagement.new ActionInfo(); AccountManagement.ActionInfo.Scene scene = actionInfo.new Scene(); scene.setScene_id(123); actionInfo.setScene(scene); accountManagement.setAction_info(actionInfo); System.out.println(">>>"+accountManagementService.createTempQRCode(accountManagement)); } // @Test public void createQRCode() { AccountManagement accountManagement = new AccountManagement(); accountManagement.setExpire_seconds(604800); accountManagement.setAction_name("QR_SCENE"); AccountManagement.ActionInfo actionInfo = accountManagement.new ActionInfo(); AccountManagement.ActionInfo.Scene scene = actionInfo.new Scene(); scene.setScene_id(123); actionInfo.setScene(scene); accountManagement.setAction_info(actionInfo); System.out.println(">>>"+accountManagementService.createQRCode(accountManagement)); } // @Test public void getQRCodeByTicket() { System.out.println(">>>"+accountManagementService.getQRCodeByTicket("gQFz8ToAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL1pFeTUxRUhsdy1hNlh2UHloMklYAAIEzMzkVwMEgDoJAA==")); } // @Test public void getShortUrl() { AccountManagement accountManagement = new AccountManagement(); accountManagement.setAction("long2short"); accountManagement.setLong_url("http://www.boholo.com/web/case_detail.html?caseID=shanghai%20tongji%20hospital;950275;50000"); System.out.println(">>>"+accountManagementService.getShortUrl(accountManagement)); } }