2016-12-14 9 views
5

पेपैल का नया चेकआउट मुझे असुरक्षित महसूस करता है, क्या उपयोगकर्ता उपयोगकर्ता को नकली भुगतान पर ट्रिगर नहीं कर सकता है?सेलेंट AJAX कॉल के साथ पेपैल एक्सप्रेस चेकआउट सुरक्षा

कोड प्रदान की इस

paypal.Button.render({ 
    env: 'sandbox', 
    client: { 
     sandbox: 'AapGZeCaaDK_q_KPeG19DHnD_kd18vr6BxNe4P6uuhfTKPjIedtNEI9plyDgmzfyI-xGhbxjpv0k-Ha9', 
     production: 'xxxxxxxxx' // u expose the key to client side? is this ok? 
    }, 
    payment: function() { 
     var env = this.props.env; 
     var client = this.props.client; 

     return paypal.rest.payment.create(env, client, { 
      transactions: [{ 
       amount: { total: ($scope.number_of_uses * 9) + '.00' , currency: 'USD' }, 
       item_list: { 
        items: [{ 
         "name": "example", 
         "quantity": $scope.number_of_uses, 
         "price": "9.00", 
         "currency": "USD" 
        }] 
       } 
      }], 
      redirect_urls: { 
       "return_url": $location.absUrl(), 
       "cancel_url": $location.absUrl() 
      } 
     }); 
    }, 

    onAuthorize: function(data, actions) { 
     return actions.payment.execute().then(function() { 
      actions.payment.get().then(function(data){ 
       // here I will save data detail to db to record sales 
       // $http something something 
      }); 
     }); 
    } 

}, '#paypal-button'); 

पट्टी में की तरह लग रहे है, मैं एक टोकन यदि सब कुछ ठीक बिक्री रिकॉर्ड करने के लिए आगे बढ़ना, वापस करने के लिए पारित करने के लिए तो मेरे सर्वर साइड में है कि टोकन को सत्यापित किया है। लेकिन पेपैल में ऐसा लगता है कि यह एकमात्र चीज है जिसे मुझे एक्सप्रेस चेकआउट करने के लिए लागू करने की आवश्यकता है। क्या यह भी सुरक्षित है?

+0

उपयोगकर्ता ने बटन दबाए जाने के बाद उन्हें पेपैल पर रीडायरेक्ट कर दिया जाएगा और क्रेडिट कार्ड के विवरण प्रदान करने या अपने पेपैल खाते में लॉगिन करने की आवश्यकता होगी। * कुंजी * केवल पेपैल को बता रहा है जिस पर ग्राहक भुगतान कर रहा है और item_list पेपैल को बताता है कि वे किसके लिए भुगतान कर रहे हैं। मुझे यहां कोई असुरक्षा नहीं दिख रही है। पेपैल पक्ष पर सभी सुरक्षित सामान हो रहा है। – Molda

+0

@ मोल्डा का अर्थ है कि उपयोगकर्ता मेरे डीबी पर पोस्ट अनुरोध ट्रिगर नहीं कर सकता है? क्या आपने टिप्पणी देखी है जहां मेरी चिंता है? –

+3

क्षमा करें क्षमा करें। यह मूल एकीकरण विधि है और यह आपको ऐसा करने की उम्मीद नहीं करता है। यह मानता है कि आप अलग-अलग चैनल (केवल अपने खाते में लॉगिन करके) के माध्यम से लेनदेन डेटा प्राप्त करते हैं। आप अपने सर्वर पर लेनदेन आईडी भेजने और बाकी एपीआई के माध्यम से डेटा को पेपैल से खींच सकते हैं। आप उन्नत एकीकरण का भी उपयोग कर सकते हैं जो आपके सर्वर के माध्यम से भुगतान करता है और भुगतान की पुष्टि करने के लिए उपयोगकर्ता को पेपैल पर रीडायरेक्ट करने से रोकता है। यह सुनिश्चित करता है कि पेपैल पर भुगतान करने से पहले ऑर्डर डेटा आपके सर्वर पर है। – Molda

उत्तर

2

आप सही हैं कि यह आपके डेटाबेस को अपडेट करने के लिए सुरक्षित नहीं है। यह भुगतान का एक सुरक्षित तरीका है, हालांकि, आप क्लाइंट के साथ सत्यापित नहीं कर सकते कि भुगतान सफल हुआ था और फिर अपने डेटाबेस को प्राधिकृत विधि के साथ अपडेट करें।

यह सत्यापित करने के लिए कि आपके डेटाबेस के लिए भुगतान सफल था, आपको Server Side REST API का उपयोग करना होगा। अफसोस की बात है कि इसके लिए पेपैल दस्तावेज़ बहुत कम हैं, हालांकि SDKs हैं जो अधिक दस्तावेज और कार्यान्वित करने में आसान हैं। (Shortcut to Node SDK)।

मैं अनुशंसा करता हूं कि आप इन्हें अपने डेटाबेस में अपडेट लागू करने के लिए उपयोग करें। पेपैल एक पैरामीटर देता है जो आपको बताता है कि भुगतान सफल था।

0

मुझे समस्या का सामना करना पड़ रहा है। मेरा मानना ​​है कि यह सुरक्षित नहीं है, क्योंकि प्राधिकरण() विधि में आपके कोड सार्वजनिक रूप से सामने आए हैं। कोई भी भुगतान किए बिना निश्चित रूप से उस कोड को ट्रिगर कर सकता है।

पेपैल पर एक बुरा आर्किटेक्चर। निराश!

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