Payfort sdk_token生成上的签名不匹配错误 [英] Signature mismatch error on payfort sdk_token generation

查看:203
本文介绍了Payfort sdk_token生成上的签名不匹配错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

String ACCESS_CODE = "My_PAYFORTAcces_Code"
String MERCHANT_ID = "My_Payfory_Merchet_ID"

我发现了问题,我认为问题与签名生成有关,
我尝试使用字符串
TESTSHAINaccess_code = ACCESS_CODEdevice_id = ffffffff-d6ab生成签名-d802-b274-478d7792a1b7language = enmerchant_identifier = MERCHANT_IDservice_command = SDK_TOKENTESTSHAIN 我得到的签名为 9c804f2c08e36749c75389afc12c50ecc307c31052e6434c072cdb607和 $ C> PASSaccess_code = ACCESS_CODElanguage = enmerchant_identifier = MERCHANT_IDmerchant_reference = 53469903,EAAC-459c-91b9-78cb026b0712service_command = TOKENIZATIONPASS 我得到了‘ 4568f58e22f46b75fb6157cbc131ab194e1f9a066bdc501171a018d2c1d22e14 ’我的签名。

I found the issue I think the issue is with Signature generation, I tried signature generation using with the string "TESTSHAINaccess_code=ACCESS_CODEdevice_id=ffffffff-d6ab-d802-b274-478d7792a1b7language=enmerchant_identifier=MERCHANT_IDservice_command=SDK_TOKENTESTSHAIN" I got my signature as "9c804f2c08e36749c75389afc12c50e68307c31052e6434c072cd5b36cc8c607" and when I tried with "PASSaccess_code=ACCESS_CODElanguage=enmerchant_identifier=MERCHANT_IDmerchant_reference=53469903-eaac-459c-91b9-78cb026b0712service_command=TOKENIZATIONPASS" I got "4568f58e22f46b75fb6157cbc131ab194e1f9a066bdc501171a018d2c1d22e14" as my signature.

一旦尝试使用两个签名生成 sdk_token ,我就得到了 { response_code: 00008, response_message:签名不匹配, service_command: SDK_TOKEN, device_id: ffffffff-d6ab-d802-b274-478d7792a1b7, signature: 30eb8f03adc12dd714aac832cfadcdant3d6c3dant6d3d3d3d : My_Payfory_Merchet_ID, access_code: My_PAYFORTAcces_Code, language: en, status: 00}
这是我的代码,用于生成签名,请检查并让我知道其正确与否。

Once I tried to generate the sdk_token using the both signature I got "{"response_code":"00008","response_message":"Signature mismatch","service_command":"SDK_TOKEN","device_id":"ffffffff-d6ab-d802-b274-478d7792a1b7","signature":"30eb8f03adc12dd714aac83249ad0b3e763cfadcd6c996bdf49d86125c23335","merchant_identifier":"My_Payfory_Merchet_ID","access_code":"My_PAYFORTAcces_Code","language":"en","status":"00"}" Here is my code to generate signature, Please check and let me know its correct or not,

@TargetApi(Build.VERSION_CODES.KITKAT) 
    public static String generateSHA256(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException { 
        MessageDigest md = MessageDigest.getInstance("SHA-256"); 
        byte[] textBytes = text.getBytes(StandardCharsets.UTF_8); 
        md.update(textBytes, 0, textBytes.length); 
        byte[] sha1hash = md.digest(); 
        return convertToHex(sha1hash); 
    } 

    private static String convertToHex(byte[] data) { 
        StringBuilder buf = new StringBuilder(); 
        for (byte b : data) { 
            int halfbyte = (b >>> 4) & 0x0F; 
            int two_halfs = 0; 
            do { 
                buf.append((0 <= halfbyte) && (halfbyte <= 9) ? (char) ('0' + halfbyte) : (char) ('a' + (halfbyte - 10))); 
                halfbyte = b & 0x0F; 
            } while (two_halfs++ < 1); 
        } 
        return buf.toString(); 
    } 


推荐答案

这解决了我的问题,

我更改了字符串以生成签名,

I changes my string to generate the signature to,

Constants.PayfortRequestPhrase + "access_code=" + Constants.PayfortAccessCode 
+ "device_id=" + deviceId + "language=enmerchant_identifier=" +
Constants.PayfortMerchantIdentifier + "service_command=SDK_TOKEN" + Constants.PayfortRequestPhrase 

RequestPhrase AccessCode MerchantIdentifier 我是从pay-fort帐户获得的。并且签名生成代码保持不变。

RequestPhrase , AccessCode and MerchantIdentifier I got from pay-fort Account. and the signature generation code remains the same.

这篇关于Payfort sdk_token生成上的签名不匹配错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆