阿里巴巴全球速卖通(AliExpress)参数签名算法

签名规则如图所示:

规则参考链接:http://gw.api.alibaba.com/dev/doc/intl/sys_signature.htm?ns=aliexpress.open

下面是自己代码的实现、以及测试:

 

package com.aliexpress.until;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import org.apache.http.message.BasicNameValuePair;

public class GrantTool {

    private static final String APP_KEY = "10000";
    private static final String APP_SECRET = "abcd";
    private static final String HMAC_SHA1 = "HmacSHA1";
    private static final String UTF8 = "UTF-8";

    public static void main(String[] args) throws Exception {
        List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
        params.add(new BasicNameValuePair("client_id", APP_KEY));
        params.add(new BasicNameValuePair("site", "aliexpress"));
        params.add(new BasicNameValuePair("redirect_uri", "http://localhost:8888"));
        params.add(new BasicNameValuePair("state", "test"));
        String signature = new GrantTool().getSignature(params);
        System.out.println(signature);
    }
    
    /**
     * 获取参数签名
     * @param pairs 参数键值对
     * @return 参数签名的值
     * @throws Exception 
     */
    public String getSignature(List<BasicNameValuePair> params) throws Exception{
        if (params == null || params.isEmpty()) {
            return null;
        }
        // 1. 拼接参数key、value
        List<String> paramList = new ArrayList<String>();
        for (BasicNameValuePair each : params) {
            if (each.getValue() != null) {
                paramList.add(each.getName()+each.getValue());
            }else {
                paramList.add(each.getName());
            }
        }
        // 2. 对参数按首字顺序排序
        Collections.sort(paramList);
        // 3. 拼接,获取最终签名因子
        StringBuffer sb = new StringBuffer();
        for (String each : paramList) {
            sb.append(each);
        }
        // 4. hmac_sha1签名算法
        byte [] bytes = hamc_sha1(sb.toString(), APP_SECRET);
        // 5. 将签名转为16进制字符串
        String str = hex(bytes);
        // 6. 将16进制签名转为大写字符
        String signature = str.toUpperCase();
        // 返回最终签名数据
        return signature;
    }

    /**
     *  hmac_sha1签名算法
     * @param data 需签名的字符串
     * @param encrypKey 签名密钥
     * @return 生成的签名
     * @throws Exception
     */
    private static byte[] hamc_sha1(String data,String encrypKey) throws Exception{
        byte [] keyBytes = encrypKey.getBytes(UTF8);
        SecretKey secretKey = new SecretKeySpec(keyBytes, HMAC_SHA1);
        Mac mac = Mac.getInstance(HMAC_SHA1);
        mac.init(secretKey);
        byte [] dataBytes = data.getBytes(UTF8);
        return mac.doFinal(dataBytes);
    }

    /**
     * byte数组转16进制
     * @param bytes 需转换的数组
     * @return 16进制数
     */
    public static String hex( byte[] bytes) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < bytes.length; i++) { 
            String hex = Integer.toHexString(bytes[i] & 0xFF); 
            if (hex.length() == 1) { 
                hex = '0' + hex; 
            } 
            sb.append(hex);
        }
        return sb.toString(); 
    }
}


测试结果与规则上的预期结果完全一致

 

 

玩转(zhuàn sù)之 -海外开业培训资料 第一页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第1页。 课程(kèchéng)大纲 一、基础篇-平台认知及进展介绍 基本功能介绍 产品核心功能(gōngnéng)进展 重要市场规则调整 二、提升篇-如何做好生意 选品 物流 排序 额外的推广资源 第二页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第2页。 基础(jīchǔ)篇 平台认知及进展介绍 第三页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第3页。 基本功能介绍(jièshào) 第四页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第4页。 基本功能介绍(jièshào) 设置收款账户 发布产品 询盘系统 订单(dìnɡ dān)管理 商铺管理 第五页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第5页。 支付宝账户(zhànɡ hù)、个人账户(zhànɡ hù)、公司账户(zhànɡ hù) 第六页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第6页。 第七页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第7页。 第八页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第8页。 发布(fābù)产品 第九页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第9页。 第十页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第10页。 第十一页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第11页。 第十二页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第12页。 第十三页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第13页。 第十四页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第14页。 询盘 请注意您的 联系(liánxì)邮箱,所 有Aliexpress 的询盘都会发 送到这里 第十五页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第15页。 第十六页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第16页。 订单(dìnɡ dān)管理 第十七页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第17页。 在订单详情页可以看见 订单状态 订单金额(jīn é) 买家信息 资金信息 发货及物流信息 还可以进行站内留言 第十八页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第18页。 商铺(shānɡ pù)管理 第十九页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第19页。 发布(fābù)满10条在线批发产品才能开商铺。 第二十页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第20页。 产品(chǎnpǐn)核心功能进展 第二十一页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第21页。 产品(chǎnpǐn)核心功能进展 1、批量交易信息(xìnxī)修改工具 2、批量运费修改工具 3、高级编辑器 4、免运费转换工具 5、物流服务平台 6、银行汇款(Bank Transfer)开 7、家自主问答平台-打听 第二十二页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第22页。 批量交易(jiāoyì)信息修改工具 管理在线批发产品 选择正在销售 选择需要批量(pī liànɡ)修改 交易信息的产品 批量进行修改 第二十三页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第23页。 批量(pī liànɡ)运费修改工具 管理在线批发产品 选择正在(zhèngzài)销售 选择需要批量修 改运费的产品 选择对应的物流 运费模板批量修改 第二十四页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第24页。 高级(gāojí)编辑器 上传图片时一次性选择多图 插入表格(biǎogé) 修改文字大小、颜色、字体 第二十五页,共44页。 阿里巴巴球速-销售培训资料文共44页,当前为第25页。 免运费转换(zhuǎnhuàn)工具 标准运费转免运费条件:1.该产品选择的运费类型部是标准运费(为了保证转换后的产品具有竞争力,减免率必须大于等于50%,且包含(bāohán)EMS,转换后并不会使您受任何的亏损) 2.该产品的类目为:手机、新娘礼服、手袋、腕表、运动鞋、手机包、牛仔裤、书籍、笔记本电脑、T恤、其它运动服、书法绘画、监控摄像机、笔记
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值