Skip to content

Instantly share code, notes, and snippets.

View NajeebArif's full-sized avatar
💭
I may be slow to respond.

Najeeb Arif NajeebArif

💭
I may be slow to respond.
View GitHub Profile
//...
@Override
@SneakyThrows
public void captureOrder(String orderId) {
final OrdersCaptureRequest ordersCaptureRequest = new OrdersCaptureRequest(orderId);
final HttpResponse<Order> httpResponse = payPalHttpClient.execute(ordersCaptureRequest);
log.info("Order Capture Status: {}",httpResponse.result().status());
}
//...
private String orderId = "";
@GetMapping
public String orderPage(Model model){
model.addAttribute("orderId",orderId);
return "order";
}
//...
@PostMapping
public String placeOrder(@RequestParam Double totalAmount, HttpServletRequest request){
final URI returnUrl = buildReturnUrl(request);
CreatedOrder createdOrder = paymentService.createOrder(totalAmount, returnUrl);
return "redirect:"+createdOrder.getApprovalLink();
}
//...
//...
@Override
@SneakyThrows
public CreatedOrder createOrder(Double totalAmount, URI returnUrl) {
final OrderRequest orderRequest = createOrderRequest(totalAmount, returnUrl);
final OrdersCreateRequest ordersCreateRequest = new OrdersCreateRequest().requestBody(orderRequest);
final HttpResponse<Order> orderHttpResponse = payPalHttpClient.execute(ordersCreateRequest);
final Order order = orderHttpResponse.result();
LinkDescription approveUri = extractApprovalLink(order);
@Service
public class PayPayPaymentService implements PaymentService{
private final PayPalHttpClient payPalHttpClient;
public PayPayPaymentService(@Value("${paypal.clientId}") String clientId,
@Value("${paypal.clientSecret}") String clientSecret) {
payPalHttpClient = new PayPalHttpClient(new PayPalEnvironment.Sandbox(clientId, clientSecret));
}
paypal:
clientId: ${paypal.clientId}
clientSecret: ${paypal.secret}
public interface PaymentService {
CreatedOrder createOrder(Double totalAmount, URI returnUrl);
}
@Data
public class CreatedOrder {
private final String orderId;
private final URI approvalLink;
}
//...
private final PaymentService paymentService;
public OrderController(PaymentService paymentService) {
this.paymentService = paymentService;
}
@PostMapping
public String placeOrder(@RequestParam Double totalAmount, HttpServletRequest request){
//...
@GetMapping("/capture")
public String captureOrder(){
return "";
}
@PostMapping
public String placeOrder(@RequestParam Double amountId, HttpServletRequest request){
final URI returnUrl = buildReturnUrl(request);