package ru.yandex.money.android; import android.os.Bundle; import android.support.annotation.NonNull; import com.yandex.money.api.methods.payment.params.PaymentParams; import com.yandex.money.api.methods.payment.params.ShopParams; import java.util.Map; import ru.yandex.money.android.utils.Bundles; /** * Convenience class to help working with payment parameters. */ final class PaymentExtras { private static final String EXTRA_PATTERN_ID = "ru.yandex.money.android.extra.PATTERN_ID"; private static final String EXTRA_PARAMS = "ru.yandex.money.android.extra.PARAMS"; private PaymentExtras() { } /** * Create bundle from payment parameters. * * @param params instance of {@link PaymentParams} * @return instance of {@link Bundle} */ @NonNull static Bundle toBundle(@NonNull PaymentParams params) { Bundle bundle = new Bundle(); bundle.putString(EXTRA_PATTERN_ID, params.patternId); bundle.putBundle(EXTRA_PARAMS, Bundles.writeStringMapToBundle(params.paymentParams)); return bundle; } /** * Creates payment parameters from bundle. * * @param bundle instance of {@link Bundle} * @return instance of {@link PaymentParams} */ @NonNull static PaymentParams fromBundle(@NonNull Bundle bundle) { String patternId = bundle.getString(EXTRA_PATTERN_ID); if (patternId == null) throw new NullPointerException(EXTRA_PATTERN_ID); Bundle params = bundle.getBundle(EXTRA_PARAMS); if (params == null) throw new NullPointerException(EXTRA_PARAMS); Map<String, String> paymentParams = Bundles.readStringMapFromBundle(params); return new ShopParams(patternId, paymentParams); } }