Elixir木蚂蚁支付服务器验签名方法
官方范例为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木蚂蚁支付服务器验签名方法的更多相关文章
- 支付宝app支付服务器签名代码(C#)
1,引入支付宝的sdk(AopSdk) 支付宝接口文档网站可下载,注意下载C#版本: 2,代码写的比较简单 public static string RSASign(string OrderNo,de ...
- 微信支付服务器CA证书更换服务器安装der证书的方法 DigiCert的根证书
[重要]微信支付服务器证书更换通知,请开发人员验证以免影响交易 尊敬的微信支付商户&服务商: 因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于2018 ...
- Openfire更新服务器名称的方法
转自:http://blog.csdn.net/vikione/article/details/5996932 Openfire更新服务器名称的方法: 1.登陆openfire管理页面,在主页面下方选 ...
- 微信APP支付V3版本签名 && APP下单/订单查询接口Python版实现
问题背景 最近接入微信支付,微信官方并没有提供Python版的服务端SDK,因而只能根据文档手动实现一版,这里记录一下微信支付的整体流程.踩坑过程与最终具体实现. 微信支付APP下单流程 根据微信官方 ...
- phpmyadmin #2003 无法登录 MySQL服务器的解决方法
本文章向大家介绍phpmyadmin #2003 无法登录 MySQL服务器的解决方法,需要的码农可以参考一下. 通过phpmyadmin连接mysql数据库时提示:"2003 无法登录 M ...
- 保护DNS服务器3大方法
保护DNS服务器3大方法 DNS全称DomainNameSystem域名解析系统,通俗地说,DNS就是帮助用户在Internet上寻找名称与IP对应的解析服务.为了更方便使用网络资源,DN ...
- 【转载】Windows Server 2012服务器删除IIS方法
在Windows Server2012版本的服务器系统中,我们可以通过服务器管理器中的"添加角色和功能"来添加IIS的Web服务器,当我们不再使用IIS功能时候,我们也可以通过删除 ...
- HMAC-SHA256 签名方法各个语音的实现方式之前端JavaScriptes6
sha256和16进制输出,网上很多种后端的验证方法,几乎没有前端的,所以自己写了个,希望给类似需求的人一个帮助,适用场景 腾讯云接口鉴权 v3签名 npm install sha256npm ins ...
- 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法
下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片 将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...
随机推荐
- java API连接虚拟机上的hbase
今天用本地的eclipse连接虚拟机上的hbase数据库,代码如下: public static void main(String[] args) throws Exception{ Configur ...
- C#:注册机的实现
先看界面 软件的实现: SoftReg类: using System; using System.Collections.Generic; using System.Linq; using Syste ...
- vue-Treeselect 使用备注
<head> <!-- include Vue 2.x --> <script src="https://cdn.jsdelivr.net/npm/vue@@^ ...
- 剑指offer四十九之把字符串转换成整数
一.题目 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 二.思路 详见代码. 三.代码 public class Solution { ...
- 【DB2】How to resolve SQL20249N the statement was not processed with error
相关链接 https://vinaysdb2blog.blogspot.com/2017/11/how-to-resolve-sql20249n-statement-was-not-processed ...
- thymeleaf的常见问题汇总
thymeleaf的常见问题汇总 1.thymeleaf th:href 多个参数传递格式 th:href="@{/Controller/update(param1=1,param2=${p ...
- python 把一文件包含中文的字符写到另外文件乱码 UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position
报错的代码是: file2 = open('target.txt','w')for line in open('test.txt'): file2.write(line)原因:文件编码不一致导致解决方 ...
- 关于 PHP 开放 enable_dl 函数利用 图片Disable_functions
三篇引文地址: 利用PHP扩展模块突破Disable_functions执行命令 如何编写PHP扩展 php dl函数(详细解释)
- 江苏公务员职位表导入MySQL
USE `database`; /*Table structure for table `post` */ DROP TABLE IF EXISTS `post`; CREATE TABLE `pos ...
- asp.net页面传值方法汇总
1. Get(即使用QueryString显式传递) 方式:在url后面跟参数. 特点:简单.方便. 缺点:字符串长度最长为255个字符:数据泄漏在url中. 适用数据 ...