注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > YunOS开放平台

卡包数据接入方式

更新时间:2015/10/11 访问次数:36661

一,概要说明:

ISV开发者配置好卡片模板后,要给真正的用户发送卡片数据,需要做以下几件事情:

1,需要通过OAuth2协议,得到用户的授权。详细见下面文档,2种方式只需要选择1种即可:

 服务端web应用打通用户免登授权:

//open.yunos.com/doc/detail?spm=a2c01.7698725.0002.23.oabPmZ&documentId=102635

客户端native应用打通用户免登授权:

//open.yunos.com/doc/detail?spm=a2c01.7698725.0002.21.9mVk4j&documentId=103430

2,拿到用户授权的access_token后,调用开放平台入口网关API,发送卡片数据。

 

二,数据接入步骤范例说明

 说明:以下用java代码作为范例说明。

注:下面文档中演示的代码,只是示例代码,各种异常情况的处理,请开发者自己完善。

步骤一,从开放平台下载SDK

1,检查是否有API接口权限

如下图所示:

一般开发者入驻后,此处默认已获得。如果未获得,则点击申请开通:

 

2,下载SDK:

在开放门户中,点SDK下载菜单,出现下面的页面:

注意:下载SDK之前,必须申请好API的权限,否则下载的SDK包中将没有对应的API类。

 

步骤二,开发者服务端编写代码:

1,判断用户是否登陆开发者的网站。如果没有登陆,则拼接授权,重定向到淘宝开放平台登陆授权页。

记得填写好回调地址,这个回调地址和ISV入驻时填写的域名要保持一致。

//open.yunos.com/isv/info?spm=a2c01.7698725.0001.3.2oHQ0V

回调地址即上面页面中的域名字段。

如下代码所示:

Cookie cookie = CookieUtil.getCookieByName(httpServletRequest, "username");

                   if (cookie == null) {

                            String redirectUrl = "https://oauth.taobao.com/authorize?response_type=code&client_id=23172651&redirect_uri=http://yunos100.wx.jaeapp.com/doLogin.do&state=1001&view=web";

                            resp.sendRedirect(redirectUrl);

                            return;

                   }else{

                            chain.doFilter(request, response);

                   }

2,开发者在回调地址的实现类中,获取临时code,然后用这个调用开放平台接口换取access_token。

这里用到开放平台提供的SDK

String code = req.getParameter("code");

       String error = req.getParameter("error");

                   if (code == null) {
                            String errorDesc = req.getParameter("error_description");
                            PrintWriter out = resp.getWriter();
                            out.print(error+"="+errorDesc);
                            out.close();
                            return;
                   } 

        String url = "https://oauth.taobao.com/token";

        String appkey = "23172651";//替换为开发者自己的appkey

        String secret = "************";//替换为开发者自己的secret

        String redirect = "http://yunos100.wx.jaeapp.com/index.jsp";

        Map<String,String> props = new HashMap<String,String>();

        props.put("grant_type", "authorization_code");

        props.put("code", code);

        props.put("client_id", appkey);

        props.put("client_secret",secret);

        props.put("redirect_uri", redirect);

        try {

           String json = WebUtils.doPost(url, props, 3000, 3000);

           Map result = JacksonUtil.fromJsonStringToMap(json);

           String access_token = (String) result.get("access_token");

           String taobao_user_nick = (String) result.get("taobao_user_nick");

           CookieUtil.addCookie(resp, "username", taobao_user_nick, -1);//设置cookie

           CacheService cacheService = CacheServiceFactory.getCacheService("baozi100");

           cacheService.put(taobao_user_nick, access_token);//缓存access_token

           resp.sendRedirect(redirect);

        } catch (IOException e) {

                 logger.error(e.getMessage(),e);

        }

 

3,用缓存的access_token调用开放平台提供的接口。

详细见下面API文档地址

//open.taobao.com/apidoc/api.htm?spm=a219a.7386789.1998342952.1.HPz25u&path=cid:20518-apiId:24457

JAVA API调用范例:

String appkey = "23172651";//替换为开发者自己的appKey
String secret = "****************";//替换为开发者自己的appSecret
String url="http://gw.api.taobao.com/router/rest";
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
YunosCloudcardUsercardAddRequest yunosCloudcardUsercardAddRequest= new YunosCloudcardUsercardAddRequest();
HashMap<String,String>map = new HashMap<String,String>();
map.put("logoText", "C23 草莓/巧克力圣代");
map.put("secondLogoText", "C23 草莓/巧克力圣代");
map.put("startDate",DateUtil.getCurrentTimeString());
map.put("endDate", "2016-07-06 20:57:46");
map.put("limit", "仅限店内使用");
map.put("expirationDate", "2016-07-06 20:57:46");
map.put("status","有效");
map.put("yh_url",  "http://yunos100.wx.jaeapp.com/kfc/20150427155642_6504.jpg"); 
map.put("exchangeCode", "C23");
String json = JacksonUtil.toJson(map);
CardModel cardModel = new CardModel();
cardModel.setContent(json);
cardModel.setTplId("1500000000012");
yunosCloudcardUsercardAddRequest.setCardModel(cardModel);
try {
YunosCloudcardUsercardAddResponse response = client.execute(yunosCloudcardUsercardAddRequest,access_token);
data = response.getData();
message=response.getErrorCode();
success=true;
} catch (ApiException e) {
logger.error(e.getMessage(),e);
success=false;
message="调用API新增卡片出错";
}

FAQ

关于此文档暂时还没有FAQ
返回
顶部