出售域名 11365.com.cn
有需要请联系 16826375@qq.com
在手机上浏览
在手机上浏览

阿里云市场自动生产接入指南

发布日期:2018-11-23

阿里云市场自动生产接入指南

腾讯云市场自动生产接入指南

华为云市场自动生产接入指南

 

一、获取阿里云市场Key

登录服务商管理后台(msp.aliyun.com)概览页面,获取“Key 值”;Key用在验证Token是否正确。

二、验证Token

阿里云的每一条数据请求都会带上token参数,用于验证数据的有效性!

/// <summary>
/// 验证Token
/// </summary>
/// <param name="url"></param>
/// <param name="reqToken"></param>
/// <returns></returns>
public static bool CheckToken(Uri url, string reqToken)
{
	/*
	* token 值
	1) 说明:token 值作为云市场与服务商之间进行安全校验必有参数,云市场每次调用服务
	商接口的参数中都会带有 token 值。服务商根据生成规则生成 token 值,并与接口中获
	取的 token 值进行比较。完全相同即为校验通过。
	2) 生成规则:取所有的 http get 请求参数(排除 token),对参数名进行字典排序,在字符串的
	最后加上你的 key,然后对整个字符串进行 md5 加密。
	3) 举例:
	服务商收到的调用请求数据示例:
	http://www.isvwebsite.com?p1=1&p2=2&p3=3&token=xxxx
	sort(P1,P2,P3); 不要加入 token
	token 生成:”p1=1&p2=2&p3=3&key=isvkey”.toMD5()
	*/

	string key = HostManager.Config.AliyunMarketKey;
	SortedDictionary<string, string> sortDict = GetUrlPara(url); //排序,按key的首字母从小到大排序 如 abcd...z
	Dictionary<string, string> dict = FilterPara(sortDict); //筛选,去掉不参加的key,如sign , sign_type , token
	string localToken = Sign(CreateLinkString(dict), "&key=" + key, "utf-8");

	return localToken == reqToken; //比较自己生成的token和参数中的token
}

生成签名

/// <summary>
/// 签名字符串
/// </summary>
/// <param name="prestr">需要签名的字符串</param>
/// <param name="key">密钥</param>
/// <param name="_input_charset">编码格式</param>
/// <returns>签名结果</returns>
public static string Sign(string prestr, string key, string _input_charset)
{
    StringBuilder sb = new StringBuilder(32);

    prestr = prestr + key;

    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(prestr));
    for (int i = 0; i < t.Length; i++)
    {
        sb.Append(t[i].ToString("x").PadLeft(2, '0'));
    }

    return sb.ToString();
}

只有请求的token和我们自己生成的token对应,才认为是完整可靠的数据!

 

三、参数

阿里云通过url传递参数。如

http://master.ue.net.cn/YunMarket/AliyunReq.aspx?token=a8a7a6e1b9615b85ddaa2297d45233b4&action=createInstance&skuId=yuncode1670300001&orderBizId=5814572&aliUid=1958990661482662&accountQuantity=1&trial=false&orderId=202104434880603&package_version=yuncode1670300001&expiredOn=2019-06-09+00:00:00

token用于验证签名。action表示要执行的操作。skuId是商品规格标识,与商品唯一对应。

orderId 订单ID,orderBizId 业务ID。一个订单有多个商品时,需要分批生成,那每个单次操作就用业务ID区分!

 

四、新购商品,创建实例

string startDate = System.DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"); //从明天开始算起
string endDate = WebUtils.GetQueryString("expiredOn"); //过期的时间

AliyunMarketInstanceResponse response = BLL.AliyunMarket.CreateSite(req, startDate, endDate); //用于返回信息给阿里云市场
req.Status = response.instanceId == "0" ? 0 : 1; //成功的
req.BackResult = JsonUtils.ObjectToJson<AliyunMarketInstanceResponse>(response);

 

需要返回给阿里云的数据结构

public class AliyunMarketInstanceResponse : YunMarketResponse
{
    /// <summary>
    /// 实例 ID,服务商提供的唯一标识
    /// </summary>
    public string instanceId { get; set; }
    /// <summary>
    /// 主机信息
    /// </summary>
    public HostInfo hostInfo { get; set; }
    /// <summary>
    /// 网站信息
    /// </summary>
    public AppInfo appInfo { get; set; }
    /// <summary>
    /// 自定义 Key-Value 数据
    /// </summary>
    public string info { get; set; }
}

 

如:

{
    "instanceId": "5814572",
    "hostInfo": {
        "name": "FTP登录信息",
        "ip": "39.108.247.1**",
        "innerIp": null,
        "username": null,
        "password": null,
        "cname": null,
        "tempDomain": null,
        "ftpUsername": "a32b29c6",
        "ftpPassword": "7e7ec1a501",
        "region": null,
        "beianInfo": null,
        "databaseInfo": null
    },
    "appInfo": {
        "frontEndUrl": "http://a32b29c6.master.ue.net.cn",
        "adminUrl": "http://a32b29c6.master.ue.net.cn/platform/login",
        "username": "admin",
        "password": "d22***",
        "authUrl": "http://master.ue.net.cn/user/login?906AF91E891321B6E13C56E7C16E3172E946BB6B4483E0204A0CC2E6AE9D****"
    },
    "info": ""
}

 

instanceId 实例唯一标识。

创建实例(网站)成功后,需要返回给阿里云,阿里云收到后认为实例创建成功。

其它操作,如续费,销毁等,阿里云会传递此Id给服务商。

用户查看订单可以查看详情

五、其它

用户下单后,阿里云会不断的发出请求,直到服务商返回成功的信息。

更多的请查看api文档

云市场商品接入API文档
https://help.aliyun.com/knowledge_detail/37986.html

 

阿里云市场自动生产接入指南

腾讯云市场自动生产接入指南