Đây là cấu trúc code của t.
Đầu tiên t tạo một hàm để lấy ra link thanh toán PayUrl.
Hàm này trả về một link thanh toán dùng để thanh toán momo.
public String DisplayPaymentScreen(String order_id)
{
String payUrl = new String();
try {
Order order = orderService.findOneById(order_id).getData();
PartnerInfo devInfo = new PartnerInfo("", "", ""); // partnerCode: "", accessKey: "", secretKey: ""
String requestId = order.getId();
String orderId = order.getId();
long amount = 50000;
String orderInfo = "Pay With Momo";
String returnURL = "http://localhost:8803/order/payment/response/" + order.getId() + "/" + requestId;
String notifyURL = "https://c8e6dac89328.ngrok.io/order/response";
String extraData = "";
String bankCode = "SML";
Environment environment = new Environment("https://test-payment.momo.vn/gw_payment/transactionProcessor", devInfo, Environment);
CaptureMomoResponse captureMomoResponse = CaptureMomo.process(environment, orderId, requestId, Long.toString(amount), orderInfo, returnURL);
payUrl = captureMomoResponse.getPayUrl();
} catch (Exception e) {
e.printStackTrace();
}
return payUrl;
}
Sau đó khi thanh toán xong, momo sẽ trả về kết quả thanh toán qua IPN. T tạo một PostMapping để đón dữ liệu từ momo. Nhưng đến đây thì xảy ra lỗi 415.
@PostMapping(value = "/payment/response", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public void IPNPayment(@Request InpMomo response)
{
payment.IPNProcess(response);
}
T đã tạo một model để convert respone của momo theo định dạng dữ liệu trả về nhưng vẫn không được.
public class InpMomo {
private String partnerCode;
private String accessKey;
private String requestId;
private String orderId;
private long amount;
private String orderInfo;
private String orderType;
private String transId;
private int errorCode;
private String message;
private String localMessage;
private String payType;
private String responseTime;
private String extraData;
private String signature;
}