create_recurring_payments_profile()   A
last analyzed

Complexity

Conditions 3
Paths 1

Size

Total Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
dl 0
loc 16
ccs 0
cts 16
cp 0
rs 9.7333
c 0
b 0
f 0
cc 3
nc 1
nop 1
crap 12
1
<?php
2
3
namespace OpenBuildings\PayPal;
4
5
/**
6
 * @author Haralan Dobrev <[email protected]>
7
 * @copyright 2013 OpenBuildings, Inc.
8
 * @license http://spdx.org/licenses/BSD-3-Clause
9
 */
10
class Payment_Recurring extends Payment_ExpressCheckout {
11
12
	protected function _set_params()
13
	{
14
		return array_replace(parent::_set_params(), array(
15
			'PAYMENTREQUEST_0_AMT'             => 0,
16
			'PAYMENTREQUEST_0_ITEMAMT'         => 0,
17
			'PAYMENTREQUEST_0_SHIPPINGAMT'     => 0,
18
			'L_BILLINGTYPE0'                   => 'RecurringPayments',
19
			'L_BILLINGAGREEMENTDESCRIPTION0'   => $this->config('description'),
20
			'L_PAYMENTREQUEST_0_ITEMCATEGORY0' => 'Digital',
21
			'MAXAMT'                           => $this->transaction_amount(),
22
		));
23
	}
24
25
	public function transaction_amount()
26
	{
27
		$amount = $this->config('amount_per_month');
28
29
		if ($this->config('charged_yearly'))
30
		{
31
			$amount *= 12;
32
		}
33
34
		return $amount;
35
	}
36
37
	public function create_recurring_payments_profile(array $params)
38
	{
39
		return $this->_request('CreateRecurringPaymentsProfile', array(
40
			'TOKEN'             => $params['token'],
41
			'SUBSCRIBERNAME'    => isset($params['subscriber_name']) ? $params['subscriber_name'] : NULL,
42
			'PROFILESTARTDATE'  => gmdate('Y-m-d\TH:i:s.00\Z', strtotime('+1 hour')),
43
			'PROFILEREFERENCE'  => isset($params['application_id']) ? $params['application_id'] : NULL,
44
			'DESC'              => $this->config('description'),
45
			'MAXFAILEDATTEMPTS' => $this->config('max_failed_attempts'),
46
			'AUTOBILLOUTAMT'    => 'AddToNextBilling',
47
			'BILLINGPERIOD'     => $this->config('billing_period'),
48
			'BILLINGFREQUENCY'     => $this->config('billing_frequency'),
49
			'AMT'               => $this->config('amount'),
50
			'CURRENCYCODE'      => $this->config('paypal.currency'),
51
		));
52
	}
53
54
	public function manage_recurring_payments_profile_status(array $params)
55
	{
56
		return $this->_request('ManageRecurringPaymentsProfileStatus', $params);
57
	}
58
59
	public function get_recurring_payments_profile_details($profile_id)
60
	{
61
		return $this->_request('GetRecurringPaymentsProfileDetails', array(
62
			'PROFILEID' => $profile_id
63
		));
64
	}
65
66
	public function bill_outstanding_amount(array $params)
67
	{
68
		return $this->_request('BillOutstandingAmount', $params);
69
	}
70
}