use of org.signal.zkgroup.receipts.ReceiptCredentialResponse in project Signal-Android by WhisperSystems.
the class SubscriptionReceiptRequestResponseJob method doRun.
private void doRun() throws Exception {
ActiveSubscription.Subscription subscription = getLatestSubscriptionInformation();
if (subscription == null) {
Log.w(TAG, "Subscription is null.", true);
throw new RetryableException();
} else if (subscription.isFailedPayment()) {
Log.w(TAG, "Subscription payment failure in active subscription response (status = " + subscription.getStatus() + ").", true);
onPaymentFailure(subscription.getStatus());
throw new Exception("Subscription has a payment failure: " + subscription.getStatus());
} else if (!subscription.isActive()) {
Log.w(TAG, "Subscription is not yet active. Status: " + subscription.getStatus(), true);
throw new RetryableException();
} else {
Log.i(TAG, "Recording end of period from active subscription.", true);
SignalStore.donationsValues().setLastEndOfPeriod(subscription.getEndOfCurrentPeriod());
MultiDeviceSubscriptionSyncRequestJob.enqueue();
}
Log.d(TAG, "Submitting receipt credential request.");
ServiceResponse<ReceiptCredentialResponse> response = ApplicationDependencies.getDonationsService().submitReceiptCredentialRequest(subscriberId, requestContext.getRequest()).blockingGet();
if (response.getApplicationError().isPresent()) {
handleApplicationError(response);
} else if (response.getResult().isPresent()) {
ReceiptCredential receiptCredential = getReceiptCredential(response.getResult().get());
if (!isCredentialValid(subscription, receiptCredential)) {
DonationError.routeDonationError(context, DonationError.genericBadgeRedemptionFailure(getErrorSource()));
throw new IOException("Could not validate receipt credential");
}
Log.d(TAG, "Validated credential. Handing off to redemption job.", true);
ReceiptCredentialPresentation receiptCredentialPresentation = getReceiptCredentialPresentation(receiptCredential);
setOutputData(new Data.Builder().putBlobAsString(DonationReceiptRedemptionJob.INPUT_RECEIPT_CREDENTIAL_PRESENTATION, receiptCredentialPresentation.serialize()).build());
} else {
Log.w(TAG, "Encountered a retryable exception: " + response.getStatus(), response.getExecutionError().orNull(), true);
throw new RetryableException();
}
}
use of org.signal.zkgroup.receipts.ReceiptCredentialResponse in project Signal-Android by signalapp.
the class SubscriptionReceiptRequestResponseJob method doRun.
private void doRun() throws Exception {
ActiveSubscription.Subscription subscription = getLatestSubscriptionInformation();
if (subscription == null) {
Log.w(TAG, "Subscription is null.", true);
throw new RetryableException();
} else if (subscription.isFailedPayment()) {
Log.w(TAG, "Subscription payment failure in active subscription response (status = " + subscription.getStatus() + ").", true);
onPaymentFailure(subscription.getStatus());
throw new Exception("Subscription has a payment failure: " + subscription.getStatus());
} else if (!subscription.isActive()) {
Log.w(TAG, "Subscription is not yet active. Status: " + subscription.getStatus(), true);
throw new RetryableException();
} else {
Log.i(TAG, "Recording end of period from active subscription.", true);
SignalStore.donationsValues().setLastEndOfPeriod(subscription.getEndOfCurrentPeriod());
MultiDeviceSubscriptionSyncRequestJob.enqueue();
}
Log.d(TAG, "Submitting receipt credential request.");
ServiceResponse<ReceiptCredentialResponse> response = ApplicationDependencies.getDonationsService().submitReceiptCredentialRequest(subscriberId, requestContext.getRequest()).blockingGet();
if (response.getApplicationError().isPresent()) {
handleApplicationError(response);
} else if (response.getResult().isPresent()) {
ReceiptCredential receiptCredential = getReceiptCredential(response.getResult().get());
if (!isCredentialValid(subscription, receiptCredential)) {
DonationError.routeDonationError(context, DonationError.genericBadgeRedemptionFailure(getErrorSource()));
throw new IOException("Could not validate receipt credential");
}
Log.d(TAG, "Validated credential. Handing off to redemption job.", true);
ReceiptCredentialPresentation receiptCredentialPresentation = getReceiptCredentialPresentation(receiptCredential);
setOutputData(new Data.Builder().putBlobAsString(DonationReceiptRedemptionJob.INPUT_RECEIPT_CREDENTIAL_PRESENTATION, receiptCredentialPresentation.serialize()).build());
} else {
Log.w(TAG, "Encountered a retryable exception: " + response.getStatus(), response.getExecutionError().orNull(), true);
throw new RetryableException();
}
}
use of org.signal.zkgroup.receipts.ReceiptCredentialResponse in project Signal-Android by WhisperSystems.
the class BoostReceiptRequestResponseJob method onRun.
@Override
protected void onRun() throws Exception {
if (requestContext == null) {
Log.d(TAG, "Creating request context..");
SecureRandom secureRandom = new SecureRandom();
byte[] randomBytes = new byte[ReceiptSerial.SIZE];
secureRandom.nextBytes(randomBytes);
ReceiptSerial receiptSerial = new ReceiptSerial(randomBytes);
ClientZkReceiptOperations operations = ApplicationDependencies.getClientZkReceiptOperations();
requestContext = operations.createReceiptCredentialRequestContext(secureRandom, receiptSerial);
} else {
Log.d(TAG, "Reusing request context from previous run", true);
}
Log.d(TAG, "Submitting credential to server", true);
ServiceResponse<ReceiptCredentialResponse> response = ApplicationDependencies.getDonationsService().submitBoostReceiptCredentialRequest(paymentIntentId, requestContext.getRequest()).blockingGet();
if (response.getApplicationError().isPresent()) {
handleApplicationError(context, response);
} else if (response.getResult().isPresent()) {
ReceiptCredential receiptCredential = getReceiptCredential(response.getResult().get());
if (!isCredentialValid(receiptCredential)) {
DonationError.routeDonationError(context, DonationError.genericBadgeRedemptionFailure(DonationErrorSource.BOOST));
throw new IOException("Could not validate receipt credential");
}
Log.d(TAG, "Validated credential. Handing off to redemption job.", true);
ReceiptCredentialPresentation receiptCredentialPresentation = getReceiptCredentialPresentation(receiptCredential);
setOutputData(new Data.Builder().putBlobAsString(DonationReceiptRedemptionJob.INPUT_RECEIPT_CREDENTIAL_PRESENTATION, receiptCredentialPresentation.serialize()).build());
} else {
Log.w(TAG, "Encountered a retryable exception: " + response.getStatus(), response.getExecutionError().orNull(), true);
throw new RetryableException();
}
}
use of org.signal.zkgroup.receipts.ReceiptCredentialResponse in project Signal-Android by signalapp.
the class BoostReceiptRequestResponseJob method onRun.
@Override
protected void onRun() throws Exception {
if (requestContext == null) {
Log.d(TAG, "Creating request context..");
SecureRandom secureRandom = new SecureRandom();
byte[] randomBytes = new byte[ReceiptSerial.SIZE];
secureRandom.nextBytes(randomBytes);
ReceiptSerial receiptSerial = new ReceiptSerial(randomBytes);
ClientZkReceiptOperations operations = ApplicationDependencies.getClientZkReceiptOperations();
requestContext = operations.createReceiptCredentialRequestContext(secureRandom, receiptSerial);
} else {
Log.d(TAG, "Reusing request context from previous run", true);
}
Log.d(TAG, "Submitting credential to server", true);
ServiceResponse<ReceiptCredentialResponse> response = ApplicationDependencies.getDonationsService().submitBoostReceiptCredentialRequest(paymentIntentId, requestContext.getRequest()).blockingGet();
if (response.getApplicationError().isPresent()) {
handleApplicationError(context, response);
} else if (response.getResult().isPresent()) {
ReceiptCredential receiptCredential = getReceiptCredential(response.getResult().get());
if (!isCredentialValid(receiptCredential)) {
DonationError.routeDonationError(context, DonationError.genericBadgeRedemptionFailure(DonationErrorSource.BOOST));
throw new IOException("Could not validate receipt credential");
}
Log.d(TAG, "Validated credential. Handing off to redemption job.", true);
ReceiptCredentialPresentation receiptCredentialPresentation = getReceiptCredentialPresentation(receiptCredential);
setOutputData(new Data.Builder().putBlobAsString(DonationReceiptRedemptionJob.INPUT_RECEIPT_CREDENTIAL_PRESENTATION, receiptCredentialPresentation.serialize()).build());
} else {
Log.w(TAG, "Encountered a retryable exception: " + response.getStatus(), response.getExecutionError().orNull(), true);
throw new RetryableException();
}
}
Aggregations