spring - 无法从 Restcontroller 返回页面
问题描述
我使用条纹作为支付网关。我只需要从作为休息控制器的 Webhook 控制器返回一个页面。我知道 Restcontroller 不应该返回视图,但除此之外看不到任何其他选项。现在我正在使用 ModelandView 接口返回一个视图,但无法做到这一点。所以请告诉我如何从restcontroller返回一个视图以及这段代码有什么问题。
@RestController
public class StripeWebhookController {
@Autowired
private FoodhubServiceImpl service;
@Autowired
private Payment payment;
private String endpointSecret="some endpointSecret";
@PostMapping("/foodhub/endpoint")
public ModelAndView handleStripeEvents(@RequestBody String payload, @RequestHeader("Stripe-Signature") String sigHeader, HttpServletRequest request) {
if(sigHeader == null) {
System.out.println("sigheader is null");
return null;
}
Event event;
// Only verify the event if you have an endpoint secret defined.
// Otherwise use the basic event deserialized with GSON.
try {
event = Webhook.constructEvent(
payload, sigHeader, endpointSecret
);
} catch (SignatureVerificationException e) {
// Invalid signature
System.out.println("Webhook error while validating signature.");
System.out.println(e);
return null;
}
// Deserialize the nested object inside the event
EventDataObjectDeserializer dataObjectDeserializer = event.getDataObjectDeserializer();
StripeObject stripeObject = null;
if (dataObjectDeserializer.getObject().isPresent()) {
stripeObject = dataObjectDeserializer.getObject().get();
} else {
// Deserialization failed, probably due to an API version mismatch.
// Refer to the Javadoc documentation on `EventDataObjectDeserializer` for
// instructions on how to handle this case, or return an error here.
}
// Handle the event
switch (event.getType()) {
case "payment_intent.succeeded":
PaymentIntent paymentIntent = (PaymentIntent) stripeObject;
System.out.println("Payment succeeded for "+paymentIntent.getAmount());
handlePaymentIntentSucceeded(paymentIntent);
// Then define and call a method to handle the successful payment intent.
break;
default:
System.out.println("Unhandled event type: " + event.getType());
break;
}
ModelAndView mv = new ModelAndView();
mv.setViewName("payment-success.jsp");
return mv;
}
解决方案
推荐阅读
- python - 使用 Django 3.2.6 覆盖模板
- graph - ytics中的Gnuplot多个值
- c++ - gtkmm : 用 cairo 绘制文本
- java - 在 Pivotal Cloud Foundary 中访问外部 api 时出现套接字连接异常
- html - 文本装饰:下划线具有未记录的线宽属性
- nginx - 如何在自定义端口上使用 Nginx 在 EC2 实例(linux)上设置 Jenkins?
- css - 为什么 after 伪元素创建自己的无法删除的边框?
- flutter - 颤振功能发现不显示覆盖
- python - 从笛卡尔坐标绘制 3D 表面(matplotlib 或 pyplot)
- python - 如何在(Flask-)SQLAlchemy 中使用 timedelta?