Elixir木螞蟻支付伺服器驗簽名方法

來源:互聯網
上載者:User

標籤:

官方範例為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木螞蟻支付伺服器驗簽名方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.