Comunidade
Ao criar um pedido é acrescentado o parâmetro "/pay" automaticamente?
Estou consumindo a api usando a lib Feign e Java + spring e me deparo com o seguinte erro.
"message": "[403 Forbidden] during [POST] to [https://sandbox.api.pagseguro.com/create-order/pay]
[PagBankClient#pagarPedido(String,Charges)]: [{\"message\":\"Forbidden\"}\n]",
"path": "/create-order"
Observe que a minha entrada pra criar um pedido é /create-order. Mas automaticamente ele tá criando e pagando o pedido usando o link [https://sandbox.api.pagseguro.com/orders/create-order/pay].
Isso é algo comum? Pois não estou assimilando o processo.
Veja como está o meu código:
`@FeignClient(name = "pagseguro-api", url = "https://sandbox.api.pagseguro.com", configuration = FeignConfig.class)
public interface PagBankClient {
@PostMapping("/orders")
OrderResponse createOrder(@RequestBody OrderRequest dto);
@PostMapping("/{order_id}/pay")
PaymentResponse pagarPedido(@PathVariable("order_id") String orderId, @RequestBody Charges charges);
}
@RestController
@RequestMapping(name = "/create-order")
public class OrderController {
@Autowired
private OrderService service;
@PostMapping
public ResponseEntity<OrderResponse> createOrder(@RequestBody OrderRequest dto) {
OrderResponse response = service.createOrder(dto);
return ResponseEntity.status(HttpStatus.CREATED).body(response);
}
}
@RestController
@RequestMapping(name = "/create-pay")
public class PaymentController {
@Autowired
private PaymentService service;
@PostMapping("/{order_id}")
public ResponseEntity<Charges> pagarPedido(@PathVariable("order_id") String orderId,
@RequestBody Charges dto) {
PaymentResponse responseDto = service.pay(orderId, dto);
return ResponseEntity.status(HttpStatus.CREATED).body(dto);
}
}
@Transactional
public OrderResponse createOrder(OrderRequest dto) {
OrderResponse orderResponse = client.createOrder(dto);
return orderResponse;
}
@Transactional
public PaymentResponse pay(String orderId, Charges dto) {
PaymentResponse paymentResponse = client.pagarPedido(orderId, dto);
return paymentResponse;
}
Olá Jean,
O endpoint correto para criação de um pedido através da API Order, em sandbox, é "https://sandbox.api.pagseguro.com/orders", ou caso queira realizar o pagamento de um pedido já criado, será utilizado o endpoint "https://sandbox.api.pagseguro.com/orders/{Orde_ID}/pay".
A seguir deixo o link da documentação para que possa verificar os exemplos disponibilizados
- Criar pedido: https://dev.pagbank.uol.com.br/reference/criar-pedido
- Pagar pedido: https://dev.pagbank.uol.com.br/reference/pagar-pedido
OBS: Nos headers da criação do pedido, é necessário que envie o 'Authorization: Bearer ' com o token correspondente ao ambiente que está sendo indicado na URL, além do 'Content-type: application/json'.
Caso ainda possuam dúvidas, você pode abrir um card em nosso canal dedicado ao atendimento de dúvidas e/ou problemas relacionados a integração de nossas APIs, segue link: https://app.pipefy.com/public/form/sBlh9Nq6