public function recurrentPayment(Payment_Invoice $invoice) { $recurrenceInfo = $invoice->getSubscription(); $amount = $invoice->getCurrency() . ' ' . $invoice->getTotalWithTax(); $description = $invoice->getTitle(); $promotionAmount = 0; $processImmediate = true; $immediateReturn = true; $referenceId = $invoice->getId(); $recurringStartDate = ""; $recurringFrequency = $this->_getRecurringFrequency($recurrenceInfo); // '1 month' $subscriptionPeriod = ""; //'12 months'; $formHiddenInputs['accessKey'] = $this->getParam('AWSAccessKeyId'); $formHiddenInputs['amount'] = $amount; $formHiddenInputs['description'] = $description; $formHiddenInputs['recurringFrequency'] = $recurringFrequency; $formHiddenInputs['subscriptionPeriod'] = $subscriptionPeriod; $formHiddenInputs['recurringStartDate'] = $recurringStartDate; $formHiddenInputs['promotionAmount'] = $promotionAmount; $formHiddenInputs['referenceId'] = $referenceId; $formHiddenInputs['immediateReturn'] = true; $formHiddenInputs['ipnUrl'] = $this->getParam('notify_url'); $formHiddenInputs['returnUrl'] = $this->getParam('return_url'); $formHiddenInputs['abandonUrl'] = $this->getParam('cancel_url'); $formHiddenInputs['processImmediate'] = $processImmediate; uksort($formHiddenInputs, "strnatcasecmp"); $stringToSign = ""; foreach ($formHiddenInputs as $formHiddenInputName => $formHiddenInputValue) { $stringToSign = $stringToSign . $formHiddenInputName . $formHiddenInputValue; } $formHiddenInputs['signature'] = $this->_getSignature($stringToSign); //throw new Exception(print_r($formHiddenInputs, 1)); return $formHiddenInputs; }
/** * Perform recurent payment * @param Payment_Invoice $invoice * @see http://www.2checkout.com/blog/knowledge-base/merchants/tech-support/3rd-party-carts/parameter-sets/pass-through-product-parameter-set/ */ public function recurrentPayment(Payment_Invoice $invoice) { $subs = $invoice->getSubscription(); $buyer = $invoice->getBuyer(); $data['sid'] = $this->getParam('vendor_nr'); $data['mode'] = '2CO'; foreach ($invoice->getItems() as $i => $item) { $data['li_' . $i . '_type'] = 'product'; $data['li_' . $i . '_name'] = $item->getTitle(); $data['li_' . $i . '_quantity'] = $item->getQuantity(); $data['li_' . $i . '_tangible'] = 'N'; $data['li_' . $i . '_description'] = $item->getDescription(); $data['li_' . $i . '_recurrence'] = $subs->getCycle() . ' ' . ucfirst($subs->getUnit()); $data['li_' . $i . '_price'] = $item->getTotalWithTax(); } $data['merchant_order_id'] = $invoice->getId(); $data['invoice_hash'] = $invoice->getId(); $data['invoice_id'] = $invoice->getId(); $data['fixed'] = 1; $data['lang'] = 'en'; $data['skip_landing'] = 0; $data['id_type'] = 1; $data['x_receipt_link_URL'] = $this->getParam('return_url'); $data['card_holder_name'] = $buyer->getFirstName() . ' ' . $buyer->getLastName(); $data['phone'] = $buyer->getPhone(); $data['phone_extension'] = ''; $data['email'] = $buyer->getEmail(); $data['street_address'] = $buyer->getAddress(); $data['city'] = $buyer->getCity(); $data['state'] = $buyer->getState(); $data['zip'] = $buyer->getZip(); $data['country'] = $buyer->getCountry(); $data['subscription'] = 1; if ($this->testMode) { $data['demo'] = 'Y'; } return $data; }