|
|
@@ -12,13 +12,20 @@ import com.fdkankan.pay.service.IPaypalConfigService;
|
|
|
import com.fdkankan.pay.util.paypal.restApi.vo.Product;
|
|
|
import com.fdkankan.pay.util.paypal.restApi.vo.plan.*;
|
|
|
import com.fdkankan.pay.util.paypal.restApi.vo.subscription.*;
|
|
|
+import com.paypal.api.payments.EventType;
|
|
|
import com.paypal.api.payments.Links;
|
|
|
+import com.paypal.api.payments.Webhook;
|
|
|
+import com.paypal.api.payments.WebhookList;
|
|
|
import com.paypal.base.rest.APIContext;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.io.OutputStreamWriter;
|
|
|
+import java.net.HttpURLConnection;
|
|
|
+import java.net.URL;
|
|
|
import java.time.*;
|
|
|
import java.util.*;
|
|
|
|
|
|
@@ -223,4 +230,61 @@ public class RestApiPaypalService {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+ //https://testeur.4dkankan.com/service/pay/paypal/webhook
|
|
|
+ public String createWebhooks(PaypalConfig paypalConfig) {
|
|
|
+ try {
|
|
|
+ Map<String,String> map = new HashMap<>(4);
|
|
|
+ map.put("Content-Type","application/json");
|
|
|
+ String string = "{ \"url\": \"https://testeur.4dkankan.com/service/pay/paypal/webhook\", " +
|
|
|
+ "\"event_types\": " +
|
|
|
+ "[ { \"name\": \"CATALOG.PRODUCT.CREATED\" }," +
|
|
|
+ " { \"name\": \"BILLING.PLAN.CREATED\" } ," +
|
|
|
+ " { \"name\": \"BILLING.PLAN.ACTIVATED\" }, " +
|
|
|
+ " { \"name\": \"BILLING.SUBSCRIPTION.CREATED\" } ," +
|
|
|
+ " { \"name\": \"BILLING.SUBSCRIPTION.CANCELLED\" } ," +
|
|
|
+ " { \"name\": \"BILLING.SUBSCRIPTION.EXPIRED\" }, " +
|
|
|
+ " { \"name\": \"BILLING.SUBSCRIPTION.SUSPENDED\" } ," +
|
|
|
+ " { \"name\": \"PAYMENT.SALE.COMPLETED\" } " +
|
|
|
+ "] }";
|
|
|
+ String body = HttpRequest.post(paypalConfig.getBaseUrl() + "/v1/notifications/webhooks")
|
|
|
+ .addHeaders(map)
|
|
|
+ .basicAuth(paypalConfig.getClientId(), paypalConfig.getSecret())
|
|
|
+ .body(string)
|
|
|
+ .execute().body();
|
|
|
+ log.info("paypal-createWebhooks:{}",body);
|
|
|
+ JSONObject resp = JSONObject.parseObject(body);
|
|
|
+ return resp.getString("id");
|
|
|
+ }catch (Exception e){
|
|
|
+ log.info("paypal-createWebhooks:error:",e);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) throws IOException {
|
|
|
+ try {
|
|
|
+ Map<String,String> map = new HashMap<>(4);
|
|
|
+ map.put("Content-Type","application/json");
|
|
|
+ String string = "{ \"url\": \"https://testeur.4dkankan.com/service/pay/paypal/webhook\", " +
|
|
|
+ "\"event_types\": " +
|
|
|
+ "[ { \"name\": \"CATALOG.PRODUCT.CREATED\" }," +
|
|
|
+ " { \"name\": \"BILLING.PLAN.CREATED\" } ," +
|
|
|
+ " { \"name\": \"BILLING.PLAN.ACTIVATED\" }, " +
|
|
|
+ " { \"name\": \"BILLING.SUBSCRIPTION.CREATED\" } ," +
|
|
|
+ " { \"name\": \"BILLING.SUBSCRIPTION.CANCELLED\" } ," +
|
|
|
+ " { \"name\": \"BILLING.SUBSCRIPTION.EXPIRED\" }, " +
|
|
|
+ " { \"name\": \"BILLING.SUBSCRIPTION.SUSPENDED\" } ," +
|
|
|
+ " { \"name\": \"PAYMENT.SALE.COMPLETED\" } " +
|
|
|
+ "] }";
|
|
|
+ String body = HttpRequest.post("https://api.paypal.com" + "/v1/notifications/webhooks")
|
|
|
+ .addHeaders(map)
|
|
|
+ .basicAuth("AZJEGWlvvI2q52bR4k_mC1ftW8tEnlaJj30huGQTBsdAjwmKlMDiEiMixVKbfrdw6fB55NSj_BAE8FPP",
|
|
|
+ "EL-RGNmsbFpcKT7QuIlxMxX7MQplp8rCyaGDZ5KOCMQ9BkOhY5OYZyVInAeHT8_4tXoPth8tOEZY_3s_")
|
|
|
+ .body(string)
|
|
|
+ .execute().body();
|
|
|
+ log.info("paypal-createProduct:{}",body);
|
|
|
+ //3DV94823N4765920R
|
|
|
+ }catch (Exception e){
|
|
|
+ log.info("paypal-createProduct:error:",e);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|