2017-05-26 18 views
6

मेरे वर्तमान जावा/स्प्रिंग प्रोजेक्ट में, मैं पेपैल के साथ एकीकरण के चरण में हूं। भुगतान प्रक्रिया को संभालने के लिए जावा क्लास को कॉन्फ़िगर करने के बाद, here के निर्देशों का पालन करके, मैं अपना आवेदन चलाता हूं और पेपैल के साथ ऑर्डर चेकआउट करने का प्रयास करता हूं।पेपैल एसडीके भुगतान समीक्षा पृष्ठ से प्रोफाइल पेज

मैं सही ढंग से पेपैल प्रवेश पृष्ठ पर पुनः निर्देशित कर रहा हूँ, और प्रवेश के बाद, इस भुगतान समीक्षा पृष्ठ पर:

enter image description here

लेकिन तब के बाद मैं पर "जारी रखें", बजाय भुगतान को अंतिम रूप देने के लिए क्लिक करें, मुझे अपने प्रोफाइल पेज पर रीडायरेक्ट किया गया है।

enter image description here

यहाँ मेरी कोड है:

Paypal prop = this.paypalDao.get(); 
String clientId = prop.getClientID(); 
String clientSecret = prop.getClientSecret(); 
APIContext apiContext = new APIContext(clientId, clientSecret, "sandbox"); 

if(payerId != null) { 
    if(guid != null) { 
    Payment payment = new Payment(); 
    payment.setId(map.get(guid)); 

    PaymentExecution paymentExecution = new PaymentExecution(); 
    paymentExecution.setPayerId(payerId); 
    payment.execute(apiContext, paymentExecution); 

    String url = request.getContextPath(); 
    return url+"/orders"; 
    } 
} else { 
    List<Produto> lista_de_produtos = this.getListaDeProdutos(clienteId); 

    Double total = 0.0; 
    for(Produto produto : lista_de_produtos) 
    total = total + produto.getPreco(); 
    DecimalFormat df = new DecimalFormat("0.00"); 
    String svalue = df.format(total).replace(',', '.'); 

    Details details = new Details(); 
    details.setSubtotal(svalue); 

    Amount amount = new Amount(); 
    amount.setCurrency("BRL"); 
    amount.setTotal(svalue); 
    amount.setDetails(details); 

    Transaction transaction = new Transaction(); 
    transaction.setAmount(amount); 
    transaction.setDescription(lista_de_produtos.toString()); 

    List<Transaction> transactions = new ArrayList<Transaction>(); 
    transactions.add(transaction); 

    Payer payer = new Payer(); 
    payer.setPaymentMethod("paypal"); 

    Payment payment = new Payment(); 
    payment.setIntent("sale"); 
    payment.setPayer(payer); 
    payment.setTransactions(transactions); 

    RedirectUrls redirectUrls = new RedirectUrls(); 
    guid = UUID.randomUUID().toString(); 
    String url = request.getContextPath(); 
    redirectUrls.setCancelUrl(url+"/cart"); 
    redirectUrls.setReturnUrl(url+"/paypal/checkout/"+clientId+"/?guid=" + guid); 
    payment.setRedirectUrls(redirectUrls); 

    Payment createdPayment = payment.create(apiContext); 
    Iterator<Links> links = createdPayment.getLinks().iterator(); 
    while (links.hasNext()) { 
    Links link = links.next(); 
    if (link.getRel().equalsIgnoreCase("approval_url")) { 
     map.put("redirectURL", link.getHref()); 
     redirectURL = link.getHref(); 
    } 
    } 
    map.put(guid, createdPayment.getId()); 
    payment.setId(map.get(guid)); 
} 

return redirectURL; 

कोई मुझे बता सकते हैं, मैं यहाँ क्या याद आ रही है?

+1

कम से कम उन व्यक्तिगत विवरणों को छिपाएं जैसे टेलीफोन, ईमेल आईडी आदि ... –

+0

अनुरोध क्या है .getContextPath() लौट रहा है? यदि यह एक सापेक्ष यूआरएल है (डोमेन नाम के बिना), तो पेपैल नहीं जानता कि ग्राहक को कहां भेजना है। –

उत्तर

2

यह मान मुद्रण का प्रयास करें:

System.out.println(url+"/paypal/checkout/"+clientId+"/?guid=" + guid); 

परिणाम https://www.yoursite.com/paypal/checkout/<number>/?guid=<number> होना चाहिए, या किसी ऐसे पृष्ठ को सीधे वहां निर्देशित होगा (https:// बाहर छोड़ने बाइट्स पर बचाने के लिए अपने सर्वर कॉन्फ़िगरेशन के आधार ठीक हो सकता है)।

अतिरिक्त परीक्षण आप की कोशिश करनी चाहिए:

  1. कोशिश अपनी साइट पर रद्द।
  2. पेपैल की साइट पर भुगतान रद्द करने का प्रयास करें।

आईएफ एक काम करता है लेकिन दूसरा नहीं करता है, तो पेपैल ठीक से रीडायरेक्ट नहीं कर रहा है, जिसका शायद मतलब है कि आप इसे सही स्ट्रिंग नहीं दे रहे हैं। @Emile द्वारा टिप्पणी भी देखें।

+0

'छोड़कर बाहर "https: //" बाइट्स पर सहेजने के लिए ...... ...... [गलत साइट?] (Https://codegolf.stackexchange.com/) एलओएल: पी – HyperNeutrino

+0

@ हाइपर न्यूट्रीनो कुछ भुगतान प्रसंस्करण सिस्टम कम स्वीकार करते हैं आधिकारिक मानक द्वारा यूआरएल की लंबाई की अनुमति है। जैसे इसके बजाय 255 वर्ण, क्योंकि बैंक अपने विरासत बैकएंड पर निश्चित तारों का उपयोग करता है। सहेजे गए 8 बाइट कभी-कभी सहायक हो सकते हैं। हालांकि मैंने पेपैल के लिए इसे नहीं देखा, इसलिए यह अनावश्यक हो सकता है। – aphid

संबंधित मुद्दे