生活服务——订单回传接入

来自Flyme开放平台
跳转至: 导航搜索


接入准备工作

订单回调需要向魅族申请cp业务名订单信息加密串(key)

订单回传接口地址

1.测试环境

//联调的时候先沟通

http://live.callback.meizu.com:8089/notify/v2/替换为申请的cp业务名/callback.do

2.正式环境

//上线前需要申请正式KEY

http://life-ns.meizu.com/notify/v2/替换为申请的cp业务名/callback.do

接口参数说明

请求方式 POST

参数说明:

sign:为安全性考虑双方的一种互相验证(参考请求加密)
parameter: 回调参数封装,为JSON格式
请求参数示例: 假定cp业务名是 abc

<pre>
http://live.callback.meizu.com:8089/notify/v2/abc/callback.do?sing=76141a6c873d76ffa5ff10bd8e70388a&parameter={"openid":"abcd",oderid=2232,订单返回的一些数据...}


回调返回

参数说明:

{
    "code": 200,        //成功CODE 200,失败非200
    "message": "",      // 错误失败消息
    "redirect": "",     //重定向 ,没有特殊要求不用管
    "value":true|false  //成功返回 true  ,失败  返回 false     
}

成功结果:

示例:

{"code": 200,"message": "","redirect": "","value":true }

失败结果:

示例:

{"code": 10000,"message": "未知异常","redirect": "","value":false }

建议通过code判断回调是否成功


请求加密

sign 的值是通过 parameter里面json用UTF-8编码再加上key的值进行MD5加密得出

假定parameter 数据为 {"a":"123","b":"aabb","c":123},

假定key 的值为 123456

那通过算法得出sign的值为fc13aa6b6ae345d9c4c5ce88246871ac


parameter参数中需要增加:

参数名称
类型
说明
biz
String(50)
用于魅族内部渠道区分

渠道参数名称:biz     如果没有特殊要求可以按照魅族约定的参数名称回传。

魅族在处理订单的时候需要透传一些值到订单中,方便业务处理。CP在封装订单返回的时候需要带上魅族透传的值放到订单中。

例如cp提供了  http://test.meizu.com H5访问入口 ,魅族需要添加渠道信息会 在URL中添加渠道信息

http://test.meizu.com?biz=test&nbsp; 。

当用户在http://test.meizu.com?biz=test url中产生订单后,订单回传的数据中就应该包含 biz=test的数据。

JAVA 加密实现

代码文件

package com.meizu.life.utils.order;

import java.io.UnsupportedEncodingException;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;

/**
 * 
 * @version 2.0
 * @see 加签工具类
 * 
 */
public class Sign {

	/**
	 * 魅族提供的key
	 */
	private static final String KEY = "123456";

	public static void main(String[] args) {
		String test = "{\"c\":123,\"a\":\"123\",\"b\":\"aabb\"}";
		System.out.println(Sign.getSign(test));

	}

	public static String getSign(String parameter) {
		return sign(parameter, KEY);
	}

	/**
	 * md5签名
	 * 
	 * @param content
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String sign(String content, String key) {
		String toSign = StringUtils.defaultIfEmpty(content, "") + key;
		try {
			return DigestUtils.md5Hex(getContentBytes(toSign, "utf-8"));
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException(" MD5 Exception [content = " + content + "; charset = utf-8" + "]Exception!", e);
		}
	}

	/**
	 * 编码处理
	 * 
	 * @param content
	 * @param charset
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	private static byte[] getContentBytes(String content, String charset) throws UnsupportedEncodingException {
		if (StringUtils.isEmpty(charset)) {
			return content.getBytes();
		}
		return content.getBytes(charset);
	}
}

导航菜单