私はのようなUPIハイパーリンクを介して支払いをしようとしています
upi://pay?pa=abc@upi&pn=payeeName&tr=1234&tn=Pay%20to%20payeeName&am=1&mam=1&cu=INR&url=https://test.com/payment/orderId=123456
- SMS経由で上記のリンクを送信しています
- リンクをクリックすると、オプションとしてUPIアプリケーションリストが表示されます
- BHIMアプリを選択しました(他のアプリケーションも試しました)
- その後、支払いが完了しました。これまでは問題なく動作しました。
UPI支払いが行われた後、https://test.com/payment/orderId=12345への「コールバック」リクエストを処理するSpringコントローラーは呼び出されません。
では、JavaでUPIハイパーリンク支払いの応答を正しく取得するにはどうすればよいですか?
編集:
これはコントローラーメソッドです。の@GetMapping代わりにも試してみました@PostMapping。
@PostMapping("/payment")
public ModelAndView credPayment(HttpServletRequest request) {
String key = request.getParameter("orderId");
String txnId = request.getParameter("txnId");
String responseCode = request.getParameter("responseCode");
String approvalRefNo = request.getParameter("ApprovalRefNo");
String status = request.getParameter("Status");
String txnRef = request.getParameter("txnRef");
System.out.println("Parameter Names");
while (request.getParameterNames().hasMoreElements()) {
System.out.println(request.getParameterNames().nextElement());
}
System.out.println("Header Names");
while (request.getHeaderNames().hasMoreElements()) {
System.out.println(request.getHeaderNames().nextElement());
}
System.out.println("txnId : "+txnId);
System.out.println("responseCode : "+responseCode);
System.out.println("ApprovalRefNo : "+approvalRefNo);
System.out.println("Status : "+status);
System.out.println("txnRef : "+txnRef);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/");
return modelAndView;
}
それはあなたが期待しているGETまたはPOSTリクエストですか?リンク裏のコントローラーも作っていますか?「PaymentController.java」のControllerの背後にあるコードは何ですか?ルートはありますか?postmanを使用して、それを明示的に呼び出し、期待される変数を送信できますか?あなたがそれをあなた自身と呼ぶとき、あなたはどんな反応を見ますか?
—
Jasper Lankhorst
お支払いが完了しました。リダイレクトURL [ test.com/payment/orderId=123456]に対してGETとPOSTの両方を試しましたが、明示的に呼び出すこともできます。私は
—
Nilesh Patel
System.out.println("Hello");コントローラの内部で実行しています
コードスニペットを提供できますか?
—
マックスペン
@NileshPatel、
—
ペトルBodnarさん
/payment/orderId=123456例えばあなたが本当にブラウザから直接呼び出すことができることを確認できますか?あなたの例に基づいているので、それが可能であるべきではない- MyTwoCents'の答えを見...
@PetrBodnár、私は
—
Nilesh Patel
/payment/orderId=123456Webから呼び出すことができ、正常に機能しています