diff --git a/src/main/java/com/impactupgrade/nucleus/client/PaypalClient.java b/src/main/java/com/impactupgrade/nucleus/client/PaypalClient.java index 77f541373..92f1432f2 100644 --- a/src/main/java/com/impactupgrade/nucleus/client/PaypalClient.java +++ b/src/main/java/com/impactupgrade/nucleus/client/PaypalClient.java @@ -36,16 +36,19 @@ public PaypalClient(Environment env) { } public boolean isValidWebhookData(String transmissionId, String transmissionTime, String certUrl, String authAlgo, String transmissionSig, String webhookId, String webhookEvent) throws Exception { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("transmission_id", transmissionId); - jsonObject.put("transmission_time", transmissionTime); - jsonObject.put("cert_url", certUrl); - jsonObject.put("auth_algo", authAlgo); - jsonObject.put("transmission_sig", transmissionSig); - jsonObject.put("webhook_id", webhookId); - jsonObject.put("webhook_event", new JSONObject(webhookEvent)); - - WebhookValidationResponse webhookValidationResponse = HttpClient.post(apiUrl + "/v1/notifications/verify-webhook-signature", jsonObject.toString(), MediaType.APPLICATION_JSON, HttpClient.HeaderBuilder.builder().header("Authorization", apiContext.fetchAccessToken()), WebhookValidationResponse.class); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder + .append("{") + .append("\"transmission_id\":\"").append(transmissionId).append("\",") + .append("\"transmission_time\":\"").append(transmissionTime).append("\",") + .append("\"cert_url\":\"").append(certUrl).append("\",") + .append("\"auth_algo\":\"").append(authAlgo).append("\",") + .append("\"transmission_sig\":\"").append(transmissionSig).append("\",") + .append("\"webhook_id\":\"").append(webhookId).append("\",") + .append("\"webhook_event\":").append(webhookEvent) + .append("}"); + + WebhookValidationResponse webhookValidationResponse = HttpClient.post(apiUrl + "/v1/notifications/verify-webhook-signature", stringBuilder.toString(), MediaType.APPLICATION_JSON, HttpClient.HeaderBuilder.builder().header("Authorization", apiContext.fetchAccessToken()), WebhookValidationResponse.class); return webhookValidationResponse != null && !"FAILURE".equalsIgnoreCase(webhookValidationResponse.verificationStatus); } diff --git a/src/main/java/com/impactupgrade/nucleus/controller/PaypalController.java b/src/main/java/com/impactupgrade/nucleus/controller/PaypalController.java index cd32f97a4..bb5ea323b 100644 --- a/src/main/java/com/impactupgrade/nucleus/controller/PaypalController.java +++ b/src/main/java/com/impactupgrade/nucleus/controller/PaypalController.java @@ -16,8 +16,6 @@ import com.impactupgrade.nucleus.service.segment.EnrichmentService; import com.impactupgrade.nucleus.util.TestUtil; import com.paypal.api.payments.Event; -import com.paypal.base.Constants; -import com.paypal.base.rest.APIContext; import org.json.JSONObject; import javax.servlet.http.HttpServletRequest; @@ -51,20 +49,13 @@ public Response webhook(String json, @Context HttpServletRequest request) throws String jobName = "Paypal Event"; env.startJobLog(JobType.EVENT, "webhook", jobName, "Paypal"); - env.logJobInfo("received event from Paypal", json); + env.logJobInfo("received event from Paypal"); env.logJobInfo("json: {}", json); - StringBuilder headers = new StringBuilder(); - Enumeration headerNames = request.getHeaderNames(); - while (headerNames.hasMoreElements()) { - String headerName = headerNames.nextElement(); - String headerValue = request.getHeader(headerName); - headers.append(headerName).append(": ").append(headerValue).append(", "); - } - env.logJobInfo("headers: {}", headers.toString()); + env.logJobInfo("headers: {}", getHeadersInfo(request)); boolean isValid = isValidWebhookRequest(request, json, env); if (!isValid) { - env.logJobError("Paypal data was invalid"); + env.logJobError("Paypal data was invalid!"); env.endJobLog(JobStatus.FAILED); return Response.status(400).build(); } @@ -94,13 +85,6 @@ public Response webhook(String json, @Context HttpServletRequest request) throws } private boolean isValidWebhookRequest(HttpServletRequest request, String requestBody, Environment env) throws Exception { - APIContext apiContext = new APIContext( - env.getConfig().paypal.clientId, - env.getConfig().paypal.clientSecret, - env.getConfig().paypal.mode - ); - apiContext.addConfiguration(Constants.PAYPAL_WEBHOOK_ID, env.getConfig().paypal.webhookId); - return env.paypalClient().isValidWebhookData( request.getHeader("Paypal-Transmission-Id"), request.getHeader("Paypal-Transmission-Time"), request.getHeader("Paypal-Cert-Url"), request.getHeader("Paypal-Auth-Algo"), request.getHeader("Paypal-Transmission-Sig"),