Android Open Source - Java-Yandex.Money-API-SDK Notification Utils From Project Back to project page Java-Yandex.Money-API-SDK .
License The source code is released under:
MIT License
If you think the Android project Java-Yandex.Money-API-SDK listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package ru.yandex.money.api.notifications;
/ / f r o m w w w . j a v a 2 s . c o m
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class NotificationUtils implements Serializable {
private static final Log LOG = LogFactory.getLog(NotificationUtils.class);
public static final String[] EXPECTED_PARAMS_ARRAY = new String[]{
"notification_type" ,
"operation_id" ,
"amount" ,
"currency" ,
"datetime" ,
"sender" ,
"codepro" ,
"notification_secret" ,
"label" };
private static final String DELIMITER = "&" ;
public boolean isHashValid(Map<String, String> parameterMap, String secret) {
Map<String, String> map = new HashMap<String, String>(parameterMap);
map.put("notification_secret" , secret);
checkAllParametersNotNull(map);
String realHash = calculateHash(map);
String sha1HashParam = map.get("sha1_hash" );
boolean equals = realHash.equalsIgnoreCase(sha1HashParam);
if (!equals) {
LOG.debug("the hashes are not equals. expected: " + realHash + ", but received: " + sha1HashParam);
}
return equals;
}
private void checkAllParametersNotNull(Map<String, String> map) {
for (String s : EXPECTED_PARAMS_ARRAY) {
if (!map.containsKey(s)) {
throw new IllegalArgumentException("param " + s + " is absent" );
}
}
}
public String calculateHash(Map<String, String> parameterMap, String secret) {
Map<String, String> map = new HashMap<String, String>(parameterMap);
map.put("notification_secret" , secret);
checkAllParametersNotNull(map);
return calculateHash(map);
}
private String calculateHash(Map<String, String> parameterMap) {
String stringForHash = createStringForHash(parameterMap);
return Hex.encodeHexString(DigestUtils.sha1(stringForHash));
}
String createStringForHash(Map<String, String> parameterMap) {
List<String> strings = new ArrayList<String>();
for (String paramName : EXPECTED_PARAMS_ARRAY) {
strings.add(parameterMap.get(paramName));
}
StringBuilder stringForHash = new StringBuilder(strings.get(0));
for (String param : strings.subList(1, strings.size())) {
stringForHash.append(DELIMITER).append(param);
}
return stringForHash.toString();
}
}
Java Source Code List com.samples.client.Settings.java com.samples.server.SampleIncomingTransferListener.java com.samples.server.ServletListener.java com.samples.yamodroid.Consts.java com.samples.yamodroid.GreatAppActivity.java ru.yandex.money.api.ApiCommandsFacadeImpl.java ru.yandex.money.api.ApiCommandsFacade.java ru.yandex.money.api.CommandUrlHolder.java ru.yandex.money.api.InsufficientScopeException.java ru.yandex.money.api.InternalServerErrorException.java ru.yandex.money.api.InvalidTokenException.java ru.yandex.money.api.ProtocolRequestException.java ru.yandex.money.api.TestUrlHolder.java ru.yandex.money.api.TokenRequesterImpl.java ru.yandex.money.api.TokenRequester.java ru.yandex.money.api.YamoneyAccount.java ru.yandex.money.api.YamoneyApiClient.java ru.yandex.money.api.YandexMoneyImpl.java ru.yandex.money.api.YandexMoney.java ru.yandex.money.api.enums.Destination.java ru.yandex.money.api.enums.MoneyDirection.java ru.yandex.money.api.enums.MoneySource.java ru.yandex.money.api.enums.OperationHistoryType.java ru.yandex.money.api.enums.Status.java ru.yandex.money.api.notifications.IncomingTransferListener.java ru.yandex.money.api.notifications.IncomingTransfer.java ru.yandex.money.api.notifications.NotificationUtils.java ru.yandex.money.api.notifications.NotificationsServlet.java ru.yandex.money.api.response.AccountInfoResponse.java ru.yandex.money.api.response.FundraisingStatsResponse.java ru.yandex.money.api.response.OperationDetailResponse.java ru.yandex.money.api.response.OperationHistoryResponse.java ru.yandex.money.api.response.ProcessPaymentResponse.java ru.yandex.money.api.response.ReceiveOAuthTokenResponse.java ru.yandex.money.api.response.RequestPaymentResponse.java ru.yandex.money.api.response.util.OperationHistoryError.java ru.yandex.money.api.response.util.Operation.java ru.yandex.money.api.response.util.PaymentErrorCode.java ru.yandex.money.api.response.util.ProcessPaymentError.java ru.yandex.money.api.response.util.RequestPaymentError.java ru.yandex.money.api.response.util.money.PaymentMethods.java ru.yandex.money.api.rights.AbstractLimitedPermission.java ru.yandex.money.api.rights.AbstractPermission.java ru.yandex.money.api.rights.AccountInfo.java ru.yandex.money.api.rights.IdentifierType.java ru.yandex.money.api.rights.MoneySource.java ru.yandex.money.api.rights.OperationDetails.java ru.yandex.money.api.rights.OperationHistory.java ru.yandex.money.api.rights.PaymentP2P.java ru.yandex.money.api.rights.PaymentShop.java ru.yandex.money.api.rights.Payment.java ru.yandex.money.api.rights.Permission.java ru.yandex.money.droid.ActivityParams.java ru.yandex.money.droid.AuthActivity.java ru.yandex.money.droid.Consts.java ru.yandex.money.droid.DetailHistoryActivity.java ru.yandex.money.droid.HistoryActivity.java ru.yandex.money.droid.HistoryAdapter.java ru.yandex.money.droid.IntentCreator.java ru.yandex.money.droid.LoadHistoryTask.java ru.yandex.money.droid.PaymentActivity.java ru.yandex.money.droid.PaymentConfirmActivity.java ru.yandex.money.droid.PaymentShopParcelable.java ru.yandex.money.droid.ProcessPaymentTask.java ru.yandex.money.droid.Utils.java ru.yandex.money.droid.YandexMoneyDroid.java