2017-04-06 27 views
5

के माध्यम से आवर्ती भुगतान मेरा लक्ष्य हमारे सास के लिए भुगतान विधि के रूप में "पेपैल" का उपयोग करके आवर्ती 6 और 12 महीने की सदस्यता स्थापित करना है। मैं बाकी एपीआई का उपयोग कर रहा हूं, और एक चीज जो मैं नहीं पा रहा हूं वह एक बार बिक्री के लिए एक कार्यान्वयन कार्यान्वयन है और पेपैल के बाकी एपीआई (जो मैंने पढ़ा है) का उपयोग करके आवर्ती भुगतान में अपना कोड दोबारा काम कर रहा है। अब संभव है)। यहां हम कहां हैं:पेपैल के एक्सप्रेस चेकआउट आरईएसटी एपीआई

मेरे पास पेपैल एक्सप्रेस एक्सप्रेस आरईएसटी एपीआई के साथ भुगतान करने के लिए advanced server integration काम कर रहा है।

मैंने उपरोक्त लिंक के साथ-साथ पेपैल से this example में दिखाए गए कोड उदाहरणों का पालन करके एक बार बिक्री की है। मैंने बिलिंग प्रक्रिया समझौते और निष्पादन कॉल को शामिल करने के लिए दो चरण प्रक्रिया को बदलने की कोशिश की है, लेकिन उपयोगकर्ताओं को पेपैल में साइन इन करने के लिए खुलने वाली हल्की खिड़की त्रुटि संदेश से कम हो रही है "चीजें दिखाई नहीं दे रही हैं इस समय काम कर रहे हैं। कृपया बाद में पुनः प्रयास करें "। यहां मेरा जावास्क्रिप्ट कोड है, जो लगभग काम करने वाले उदाहरण के समान ही है, लेकिन विभिन्न मार्गों के साथ।

paypal.Button.render({ 

    // Set your environment 

    env: 'sandbox', // sandbox | production 

    // Wait for the PayPal button to be clicked 
    payment: function(resolve, reject) { 

    // Make a call to the merchant server to set up the payment 
     console.log("button clicked") 
     return paypal.request.post('/payment/paypal/subscription', {amount: '0.02'}) 
      .then(function(res) { 
       resolve(res.payToken); #--WHERE I'M GOING WRONG 
      }) 
      .catch(function(err) { reject(err); }); 
    }, 

    // Wait for the payment to be authorized by the customer 
    onAuthorize: function(data) { 

     // Make a call to the merchant server to execute the payment 
     return paypal.request.post('/payment/paypal/execute', { 
      data: data, 
      paymentID: data.paymentID, 
      payerID: data.payerID 
     }).then(function (res) { 
      if (res.state == "active") { 
       document.querySelector('#paypal-button-container-server').innerText = 'Payment Complete!'; 
      } else { 
       console.log(res); 
       alert("Payment could not be approved, please try again.") 
      } 
     }); 
    } 

}, '#paypal-button-container-server'); 

मैं बता सकता है कि मैं भुगतान समारोह में गलत जा रहा हूँ, अर्थात् resolve(res.payToken) साथ लाइन पर। मुझे नहीं पता कि v1/भुगतान/बिलिंग-समझौते प्रतिक्रिया से डेटा का कौन सा टुकड़ा मुझे इस समारोह में गुज़रना चाहिए, लेकिन profile_id और approval_url (वास्तविक href - "href": "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXXXXXXXX") दोनों की कोशिश की है।

मैं गलत कहां जा रहा हूं? यदि यह संभव है, तो मुझे लगता है कि मैं इस काम को करने से दूर एक उदाहरण का उदाहरण हूं, लेकिन मैं जानना चाहता हूं कि यह किस तरह से सक्षम है या नहीं (जिस स्थिति में इसे पेफ्लो के माध्यम से किया जाना चाहिए ?)।

नोट: मैं बिलिंग समझौतों और बिलिंग प्रोफाइल को पूरी तरह से समझता हूं, और मेरी समस्याएं आरईएसटी एपीआई के साथ नहीं हैं। कामकाजी एक बार बिक्री कार्यान्वयन के अतिरिक्त, मैं सभी आवश्यक बिलिंग प्रोफ़ाइल/समझौते (पोस्टमैन के माध्यम से सत्यापित) कर सकता हूं।

किसी भी स्थिति में v1/payments/billing-agreements सैंडबॉक्स कॉल से प्रतिक्रिया है, जिसमें कोई भी इसके अंदर डेटा के सही हिस्से को इंगित कर सकता है।

{ 
    "name": "Magazine Subscription", 
    "description": "Monthly subscription with a regular monthly payment definition and two-month trial payment definition.", 
    "plan": { 
    "id": "P-XXXXXXXXXXXXXXXXXXX", 
    "state": "ACTIVE", 
    "name": "1 Month Recurring", 
    "description": "A recurring payment plan for customers who sign a 1-month contract", 
"type": "FIXED", 
"payment_definitions": [ 
    { 
    "id": "PD-924GIUJ3MWQ32E22348G0018", 
    "name": "Regular Payment Definition", 
    "type": "REGULAR", 
    "frequency": "Month", 
    "amount": { 
     "currency": "USD", 
     "value": "150" 
    }, 
    "cycles": "1", 
    "charge_models": [ 
     { 
     "id": "CHM-940183BIUJ3MWQ5VK14226VH", 
     "type": "TAX", 
     "amount": { 
      "currency": "USD", 
      "value": "10" 
     } 
     } 
    ], 
    "frequency_interval": "1" 
    }, 
    { 
    "id": "PD-5604RIUJ3MWQ4Y4221782C61", 
    "name": "Trial Payment Definition", 
    "type": "TRIAL", 
    "frequency": "Month", 
    "amount": { 
     "currency": "USD", 
     "value": "120" 
    }, 
    "cycles": "1", 
    "charge_models": [ 
     { 
     "id": "CHM-640401IUJ3MWQ64W07759LB2", 
     "type": "TAX", 
     "amount": { 
      "currency": "USD", 
      "value": "10" 
     } 
     } 
    ], 
    "frequency_interval": "1" 
    } 
], 
"merchant_preferences": { 
    "setup_fee": { 
    "currency": "USD", 
    "value": "0" 
    }, 
    "max_fail_attempts": "3", 
    "return_url": "http://localhost:8000/payment/success", 
    "cancel_url": "http://localhost:8000/payment/new", 
    "auto_bill_amount": "NO", 
    "initial_fail_amount_action": "CONTINUE" 
} 
    }, 
    "links": [ 
{ 
    "href": "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXXXXXXXXX", 
    "rel": "approval_url", 
    "method": "REDIRECT" 
}, 
{ 
    "href": "https://api.sandbox.paypal.com/v1/payments/billing-agreements/EC-XXXXXXXXXXXXX/agreement-execute", 
    "rel": "execute", 
    "method": "POST" 
} 
    ], 
    "start_date": "2017-12-22T09:13:49Z" 
} 
+0

हाय @DNestoff, मैं एक ही मुद्दा है, आप कैसे मैं भी यह करने के लिए कोशिश कर रहा हूँ यह –

+0

@KoredeLawrenceOluwafemi को हल करने में सक्षम थे। कोई भी इसे समझता है? – kspearrin

उत्तर

0

बाकी एपीआई अभी भी वापस पारित एक्सप्रेस चेकआउट यूआरएल लेकिन आदेश checkout.js सामने अंत एकीकरण आप टोकन मान्यता यूआरएल के भीतर पाया वापस उत्तीर्ण करने की आवश्यकता के साथ इसका इस्तेमाल करने में। आप या तो इस यूआरएल को पार्स कर सकते हैं और सर्वर पर टोकन सेक्शन प्राप्त कर सकते हैं और इसे हल कर सकते हैं या संकल्प विधि को कॉल करने से पहले इसे पास कर सकते हैं।

अर्थात

approval_url = { 
    "href": "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXXXXXXXX" 
} 

var token = "EC-XXXXXXXXXXXXX"; 
resolve(token); 
संबंधित मुद्दे