Avata 帮助文档-测试
  1. 接入说明
Avata 帮助文档-测试
  • Avata 平台文档
    • 平台介绍
      • 平台简介
      • 核心功能
      • 基础术语
      • 平台服务
        • 文昌链极速网
        • 文昌链存证服务
        • 文昌链域名服务
        • 第三方支付服务
    • 用户指南
      • 接入流程
      • AVATA API 接入说明
      • AVATA API 最佳实践
      • 费用说明
    • 常见问题
      • AVATA 平台 NFT 元数据规范
      • Avata 测试项目如何充值能量值
      • Avata 技术社区使用指南
      • 原生 NFT 和原生 MT 区别
      • operation_id 的作用
      • AVATA API & 底层链 SDK 如何选择
      • 如何开具发票
      • 申请平台合作协议
      • 网信办备案填报指南
      • 变更认证主体流程说明
      • 更多问题 >>
  • AVATA API 文档
    • AVATA API 文档
      • 接入说明
        • 网关鉴权签名示例
        • 交易结果异步回调通知
      • AVATA v3 API 文档
        • API 版本简介
        • 链账户接口
          • 创建链账户
          • 批量创建链账户
          • 查询链账户
        • 原生模块
          • 关于原生模块
          • NFT 接口
            • 创建 NFT 类别
            • 转让 NFT 类别
            • 查询 NFT 类别
            • 查询 NFT 类别详情
            • 发行 NFT
            • 转让 NFT
            • 编辑 NFT
            • 销毁 NFT
            • 查询 NFT
            • 查询 NFT 详情
            • 查询 NFT 操作记录
          • MT 接口
            • 创建 MT 类别
            • 查询 MT 类别
            • 查询 MT 类别详情
            • 转让 MT 类别
            • 发行 MT
            • 增发 MT
            • 转让 MT
            • 编辑 MT
            • 销毁 MT
            • 查询 MT
            • 查询 MT 详情
            • 查询 MT 操作记录
            • 查询 MT 余额
          • 区块链存证接口
            • 数字作品存证接口
          • 查询链账户操作记录
          • 查询上链交易结果
          • 查询枚举值列表
        • 智能合约模块
          • 关于智能合约模块
          • NFT 接口
            • 创建 NFT 类别
            • 转让 NFT 类别
            • 查询 NFT 类别
            • 查询 NFT 类别详情
            • 发行 NFT
            • 转让 NFT
            • 编辑 NFT
            • 销毁 NFT
            • 查询 NFT
            • 查询 NFT 详情
            • 查询 NFT 操作记录
          • 合约服务接口
            • Avata API 合约服务使用说明
            • 调用合约
            • 查询合约
          • Web3 域名服务接口
            • 注册域名
            • 转让域名
            • 查询域名
            • 查询用户域名
            • 设置域名解析
            • 查询域名解析
            • 设置域名反向解析
            • 查询域名反向解析
            • 续购域名
          • 查询链账户操作记录
          • 查询上链交易结果
          • 查询枚举值列表
        • 购买能量值接口
          • 购买能量值
          • 批量购买能量值
          • 查询能量值购买结果
          • 查询能量值购买结果列表
        • 钱包服务接口
          • 创建钱包用户
          • 更新钱包用户
          • 查询钱包用户信息
          • 认证钱包用户
      • AVATA v2 API 文档
        • API 版本简介
        • 链账户接口
          • 创建链账户
          • 批量创建链账户
          • 查询链账户
          • 查询链账户操作记录
        • NFT 接口
          • NFT/MT 元数据规范
          • 创建NFT类别
          • 查询NFT类别
          • 查询NFT类别详情
          • 转让NFT类别
          • 发行 NFT
          • 转让 NFT
          • 编辑 NFT
          • 销毁 NFT
          • 查询 NFT
          • 查询 NFT 详情
          • 查询 NFT 操作记录
        • web3域名服务接口
          • 注册域名
          • 转让域名
          • 查询域名
          • 查询用户域名
        • 合约服务接口
          • Avata API 合约服务使用说明
          • 调用合约
          • 查询合约
        • 购买能量值接口
          • 购买能量值
          • 批量购买能量值
          • 查询能量值购买结果
          • 查询能量值购买结果列表
        • 区块链存证接口
          • 数字作品存证接口
        • 钱包服务接口
          • 创建钱包用户
          • 更新钱包用户
          • 查询钱包用户信息
          • 认证钱包用户
        • 查询交易结果接口
          • 查询上链交易结果
      • AVATA v1 API 文档
        • API 版本简介
        • 链账户接口
          • 创建链账户
          • 批量创建链账户
          • 查询链账户
          • 查询链账户操作记录
        • NFT 接口
          • 创建 NFT 类别
          • 查询 NFT 类别
          • 查询 NFT 类别详情
          • 转让 NFT 类别
          • 发行 NFT
          • 转让 NFT
          • 编辑 NFT
          • 销毁 NFT
          • 批量发行 NFT
          • 批量转让 NFT
          • 批量编辑 NFT
          • 批量销毁 NFT
          • 查询 NFT
          • 查询 NFT 详情
          • 查询 NFT 操作记录
        • MT 接口
          • 创建 MT 类别
          • 查询 MT 类别
          • 查询 MT 类别详情
          • 转让 MT 类别
          • 增发 MT
          • 发行 MT
          • 转让 MT
          • 编辑 MT
          • 销毁 MT
          • 查询 MT
          • 查询 MT 操作记录
          • 查询 MT 余额
          • 查询 MT 详情
        • 区块链存证接口
          • 数字作品存证接口
        • 购买能量值接口
          • 购买能量值
          • 批量购买能量值
          • 查询能量值购买结果
          • 查询能量值购买结果列表
        • 查询交易结果接口
          • 查询上链交易结果
          • 查询上链交易排队状态
  • AVATA SDK 文档
    • AVATA SDK 文档
      • AVATA v3 SDK 文档
        • Go 语言
        • JAVA 语言
      • AVATA v1 SDK 文档
        • Go 语言
        • JAVA 语言
        • PHP 语言
  • 底层链 SDK 文档
    • 底层链 SDK 文档
      • 底层链介绍
      • 底层链 API 接入说明
      • Go 语言接入教程
      • JAVA 语言接入教程
      • 文昌链最佳实践建议
  1. 接入说明

网关鉴权签名示例

Go 语言版本#

Java 语言版本#

提示
Java签名所需依赖(建议选择1.2.79版本)
     <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>fastjson</artifactId>
         <version>1.2.79</version>
     </dependency>

PHP 语言版本#

Python 语言版本#

C# 语言版本#

 using System;
    using System.Collections.Generic;
    using System.Security.Cryptography;
    using System.Text;
    using Newtonsoft.Json;
    
    namespace Flow.Avata
    {
        public class AvataUitl
        {
            public static string apiSecret = "apiKey";
            public static string apiKey = "apiSecret";
            public static string domain = "https://apis.avata.bianjie.ai/v2";
    
            /**
              * 对请求参数进行签名处理
              *
              * @param path      请求路径,仅截取域名后及 Query 参数前部分,例:"/v2/accounts";
              * @param query     Query 参数,例:"key1=value1&key2=value2",需转为 Map 格式
              * @param body      Body 参数,例:"{\"count\": 1, \"operation_id\": \"random_string\"}",需转为 Map 格式
              * @param timestamp 当前时间戳(毫秒),例:1647751123703
              * @param apiSecret 应用方的 API Secret,例:"AKIDz8krbsJ5yKBZQpn74WFkmLPc5ab"
              * @return 返回签名结果
              */
            public static String signRequest(String path, Dictionary<String, Object> query, Dictionary<String, Object> body, long timestamp, String apiSecret)
            {
                SortedDictionary<String, Object> paramsMap = new SortedDictionary<String, Object>();
    
                paramsMap.Add("path_url", path);
    
                if (query != null)
                {
                    foreach (var key in query)
                    {
                        paramsMap.Add("query_" + key.Key, key.Value);
                    }
    
                }
    
                if (body != null)
                {
                    foreach (var key in body)
                    {
                        paramsMap.Add("body_" + key.Key, key.Value);
                    }
                }
    
                // 将请求参数序列化为排序后的 JSON 字符串
                String jsonStr = JsonConvert.SerializeObject(paramsMap);
    
                // 执行签名
                String signature = sha256Sum(jsonStr + timestamp.ToString() + apiSecret);
    
                return signature;
            }
    
            /**
            * SHA256 摘要
            *
            * @param str
            * @return
            */
            private static String sha256Sum(String str)
            {
                SHA256 sha256Generator = SHA256.Create();
                byte[] sha256HashBytes = sha256Generator.ComputeHash(Encoding.UTF8.GetBytes(str));
    
                StringBuilder sha256StrBuilder = new StringBuilder();
                foreach (byte @byte in sha256HashBytes)
                {
                    sha256StrBuilder.Append(@byte.ToString("x2"));
                }
                return sha256StrBuilder.ToString();
            }
    
            /// <summary>From:www.uzhanbao.com
            /// DateTime转换为13位时间戳(单位:毫秒)
            /// </summary>
            /// <param name="dateTime"> DateTime</param>
            /// <returns>13位时间戳(单位:毫秒)</returns>
            public static long DateTimeToLongTimeStamp(DateTime dateTime)
            {
                DateTime timeStampStartTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    
                return (long)(dateTime.ToUniversalTime() - timeStampStartTime).TotalMilliseconds;
                //return 1657338317368;
            }
    
            /// <summary>
            /// POST 请求示例
            /// 创建链账户
            /// </summary>
            /// <returns></returns>
            public static account Account(string name, string operation_id)
            {
                try
                {
                    string path = "/v2/account";
                    string url = domain + path;
    
                    Dictionary<string, object> body = new Dictionary<string, object>();
                    body.Add("name", name);
                    body.Add("operation_id", operation_id);
    
    
                    long Timestamp = DateTimeToLongTimeStamp(DateTime.Now);
                    string Signature = signRequest(path, null, body, Timestamp, apiSecret);
    
                    Dictionary<string, string> header = new Dictionary<string, string>();
                    header.Add("X-Api-Key", apiKey);
                    header.Add("X-Timestamp", Timestamp.ToString());
                    header.Add("X-Signature", Signature);
    
                    string bodyJson = JsonConvert.SerializeObject(body);
                    string ret = HttpHelper.PostData(url, bodyJson, "application/json", header, null);
                    return JsonConvert.DeserializeObject<account>(ret);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    return null;
                }
            }
    
        /// <summary>
        /// 创建账号
        /// </summary>
        public class account
        {
            public accountData data { get; set; }
        }
    
        public class accountData
        {
            public string account { get; set; }
            public string name { get; set; }
            public string operation_id { get; set; }
        }
    }

Node.js 语言版本#

https://gist.github.com/chengpeiquan/982fc73eda02178e1a1b1eedcfad9450
以上示例来自文昌链技术交流群「广州反转月球文化有限公司」熊猫当,感谢@熊猫当的技术贡献
上一页
更多问题 >>
下一页
交易结果异步回调通知
Built with