cancel
Showing results for 
Search instead for 
Did you mean: 

Return URL not set in payment success

Contributor

Return URL not set in payment success

hello,

i am not able to open after susses payment to new URL. actually i am passing return URL as Executed payment. and i am  set the return url at the time of execution of the payment. to opening new page on same page but it will not set and open it . please help

 

 

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.paypal.api.payments.Links;
import com.paypal.api.payments.Payment;
import com.paypal.api.payments.RelatedResources;
import com.paypal.api.payments.Sale;
import com.paypal.api.payments.Transaction;
import com.paypal.base.rest.PayPalRESTException;
import com.paypal.orders.OrdersGetRequest;
import com.virgo.supportadmin.config.PaypalIntentMethod;
import com.virgo.supportadmin.config.PaypalPaymentIntent;
import com.virgo.supportadmin.service.PaypalServiceIF;
import com.virogo.supportadmin.util.URLUtils;

@CrossOrigin(origins = "*")
@RestController
public class PaypalController {

@Autowired
PaypalServiceIF paymentServiceIF;

private final Logger log = LoggerFactory.getLogger(this.getClass().getSimpleName());
public static final String PAYPAL_SUCCESS_URL = "pay/success";
public static final String PAYPAL_CANCEL_URL = "pay/cancel";

@RequestMapping(method = RequestMethod.POST, value = "pay")
public Map<String, Object> pay(@RequestBody Map<String,Object> paymentOrderFrom,HttpServletRequest request) {
log.info("Pay Create Approval Link");
String cancelUrl = URLUtils.getBaseURl(request) + "/" + PAYPAL_CANCEL_URL;
String successUrl = URLUtils.getBaseURl(request) + "/" + PAYPAL_SUCCESS_URL;


String value=paymentOrderFrom.get("value").toString();
String currency_code=paymentOrderFrom.get("currency_code").toString();
String description=paymentOrderFrom.get("description").toString();


Map<String, Object> linkMap= new HashMap<>();
try {
Payment payment = paymentServiceIF.createPayment(
value,
currency_code,
PaypalIntentMethod.paypal,
PaypalPaymentIntent.sale,
description,
cancelUrl,
successUrl);
//System.out.println(payment);
for(Links links : payment.getLinks()){
if(links.getRel().equals("approval_url")){
//return "redirect:" + links.getHref();
linkMap.put("Link", links.getHref());
}
}
} catch (PayPalRESTException e) {
log.error(e.getMessage());
}
return linkMap;

}

@RequestMapping(method = RequestMethod.GET, value = PAYPAL_CANCEL_URL)
public String cancelPay(){
String html="

Payment Cancel

";
return html;
}

 

@RequestMapping(method = RequestMethod.GET, value = PAYPAL_SUCCESS_URL)
public String successPay(@RequestParam("paymentId") String paymentId, @RequestParam("PayerID") String payerId) throws PayPalRESTException{
log.info("Payment Execute and get responce");
Map<String, Object> excutePayment= new HashMap<>();
String returnUrl="wwww.google.com";


Payment payment = paymentServiceIF.executePayment(paymentId, payerId,returnUrl);
//System.out.println(payment);
if(payment.getState().equals("approved")){
//return "success";
String transationId = null;
String amount=null;
for(Transaction transaction : payment.getTransactions()){
List<RelatedResources> transactionrelatedResource = transaction.getRelatedResources();
for (RelatedResources relatedResources : transactionrelatedResource) {
Sale transationsaleid=relatedResources.getSale();
transationId=transationsaleid.getId();
amount=transationsaleid.getAmount().toString();
System.out.println(transationId);
}

}


String excetuePayment=payment.toString();
excutePayment=getJsonStringToMap(excetuePayment);
List transactionList= new ArrayList<>();
transactionList.add(payment.getTransactions());

//System.out.println(payment.getTransactions());


String html="

Your payment has been successfully completedTransaction Id "+transationId+"

";
return html;
}
return "redirect :";
//return excutePayment;
}

//Convert to String to Map
public static Map<String, Object> getJsonStringToMap(String stringJson) {
Map<String, Object> map = new HashMap<String, Object>();
try {
ObjectMapper mapper = new ObjectMapper();
map = mapper.readValue(stringJson, new TypeReference<Map<String, Object>>() {
});
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
}