官方范例为java

public boolean verify(String sign , String appKey , String orderId) throws UnsupportedEncodingException{
if(sign.length()<14){
return false;
}
String verityStr = sign.substring(0,8);
sign = sign.substring(8);
String temp = MD5Util.toMD5(sign);
if(!verityStr.equals(temp.substring(0,8))){
return false;
}
String keyB = sign.substring(0,6); String randKey = keyB+appKey; randKey = MD5Util.toMD5(randKey); byte[] signB = Base64.decodeFast(sign.substring(6));
int signLength = signB.length;
String verfic="";
for(int i =0 ; i< signLength ; i++){
char b = (char)(signB[i]^randKey.getBytes()[i%32]);
verfic +=String.valueOf(b);
}
return verfic.equals(orderId);
}

Elixir

def verifyPayment(appkey, %{"tradeSign" => tradeSign} = params) do
sign_length = String.length(tradeSign)
if sign_length < 14 do
false
else
verityStr = String.slice(tradeSign, 0, 8)
sign = String.slice(tradeSign, 8, sign_length + 1)
temp = Utils.md5_sign(sign)
temp = String.slice(temp, 0, 8)
if verityStr == temp do
keyB = String.slice(sign, 0, 6)
randKey = keyB <> appkey
randKey = Utils.md5_sign(randKey)
signB = String.slice(sign, 6, sign_length + 1) |> Base.decode64! |> String.to_char_list
randKey = randKey |> String.to_char_list
signedOrderId = signB |> Enum.with_index |> Enum.map fn({c, i}) -> Bitwise.bxor c, Enum.at(randKey, rem(i, 32)) end
params["orderID"] == signedOrderId
else
false
end
end
end

Elixir木蚂蚁支付服务器验签名方法的更多相关文章

  1. 支付宝app支付服务器签名代码(C#)

    1,引入支付宝的sdk(AopSdk) 支付宝接口文档网站可下载,注意下载C#版本: 2,代码写的比较简单 public static string RSASign(string OrderNo,de ...

  2. 微信支付服务器CA证书更换服务器安装der证书的方法 DigiCert的根证书

    [重要]微信支付服务器证书更换通知,请开发人员验证以免影响交易 尊敬的微信支付商户&服务商: 因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于2018 ...

  3. Openfire更新服务器名称的方法

    转自:http://blog.csdn.net/vikione/article/details/5996932 Openfire更新服务器名称的方法: 1.登陆openfire管理页面,在主页面下方选 ...

  4. 微信APP支付V3版本签名 && APP下单/订单查询接口Python版实现

    问题背景 最近接入微信支付,微信官方并没有提供Python版的服务端SDK,因而只能根据文档手动实现一版,这里记录一下微信支付的整体流程.踩坑过程与最终具体实现. 微信支付APP下单流程 根据微信官方 ...

  5. phpmyadmin #2003 无法登录 MySQL服务器的解决方法

    本文章向大家介绍phpmyadmin #2003 无法登录 MySQL服务器的解决方法,需要的码农可以参考一下. 通过phpmyadmin连接mysql数据库时提示:"2003 无法登录 M ...

  6. 保护DNS服务器3大方法

    保护DNS服务器3大方法       DNS全称DomainNameSystem域名解析系统,通俗地说,DNS就是帮助用户在Internet上寻找名称与IP对应的解析服务.为了更方便使用网络资源,DN ...

  7. 【转载】Windows Server 2012服务器删除IIS方法

    在Windows Server2012版本的服务器系统中,我们可以通过服务器管理器中的"添加角色和功能"来添加IIS的Web服务器,当我们不再使用IIS功能时候,我们也可以通过删除 ...

  8. HMAC-SHA256 签名方法各个语音的实现方式之前端JavaScriptes6

    sha256和16进制输出,网上很多种后端的验证方法,几乎没有前端的,所以自己写了个,希望给类似需求的人一个帮助,适用场景 腾讯云接口鉴权 v3签名 npm install sha256npm ins ...

  9. 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法

    下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片   将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...

随机推荐

  1. CSS初窥

  2. 【10】JMicro微服务-API网关

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到9小节 1. Api网关基本特性: Api网关作为对外网提供服务的基本入口,地位类似于NGINX, ...

  3. POJ 2390

    import java.util.*; public class Main { public static void main(String args[]){ double interest; Sca ...

  4. 用Lingo求解线性规划问题

    第一步:输入目标条件和约束条件.每行以分号隔开.然后点击工具栏上的Solve按钮,或Lingo菜单下的Solve子菜单. 第二步:检查report中的结果. 默认情况下,Lingo不进行灵敏度分析. ...

  5. MySQl中的\g和\G

    1. \g 在MySQL的sql语句后加上\g,效果等同于加上定界符,一般默认的定界符是分号; 2. \G 在MySQL的sql语句后加上\G,表示将查询结果进行按列打印,可以使每个字段打印到单独的行 ...

  6. Android 开发服务类 04_ServletForPOSTMethod

    ServletForPOSTMethod 业务类 package com.wangjialin.internet.servlet; import java.io.IOException; import ...

  7. hbase copyTable

    参考:https://yq.aliyun.com/articles/176546 执行:hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new. ...

  8. CFLAGS CPPFLAGS CPPFLAGS 区别

    CPPFLAGSC预处理器参数.( C 和 Fortran 编译器也会用到). CXXFLAGSC++语言编译器参数. CFLAGSC语言编译器参数.

  9. springcloud-07-eureka HA的高可用配置

    单机版的eureka, 运行时间稍长, 就会在管理界面出现红色的警告, 为了消除这个警告, 可以使用eureka的高可用配置: 只需要写一个工程配置不同的配置文件, 然后启动多实例即可: 请参照单机版 ...

  10. mysql数据库数据监测

    #!/bin/bash MYSQL="mysql -h10.10.10.10 -P8036 -uusername -ppassword --default-character-set=utf ...