Ошибка несоответствия подписи при генерации payfort sdk_token - PullRequest
0 голосов
/ 26 декабря 2018
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». Я получил свою подпись как «9c804f2c08e36749c75389afc12c50e68307c31052e6434c072cd5b36cc8c607», а когда попытался с «* 1004».* "Я получил" 4568f58e22f46b75fb6157cbc131ab194e1f9a066bdc501171a018d2c1d22e14 "в качестве моей подписи.

Как только я попытался сгенерировать sdk_token, используя обе подписи, я получил «{"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"}». Вот мой код для генерации подписи. Пожалуйста, проверьте и дайте мне знать, правильная или нет,

@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(); 
    } 

1 Ответ

0 голосов
/ 27 декабря 2018

Это решило мою проблему,

Я изменил свою строку, чтобы сгенерировать подпись, на

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Учетная запись.и код генерации подписи остается прежним.

...