summaryrefslogtreecommitdiff
path: root/payments/index.php
blob: 9a7d03772fbebd79bebf147c3e3d5396b7a23ae0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php
$title = "Payments";
include('./includes/head.php');
?>

<!--PAYPAL-->
<div id="smart-button-container" class="form">
	<p id="invoiceidError" class="description">Please enter an Invoice ID</p>
	<p id="descriptionError" class="description">Please enter a description</p>
	<p id="priceLabelError" class="description">Please enter a price</p>

	<div id="invoiceidDiv"><label for="invoiceid">Invoice ID</label>
		<input name="invoiceid" maxlength="127" type="text" id="invoiceid" value="<?php echo $_GET['invoice'] ?? ''; ?> ">
	</div>

	<div><label for="description">Description of services </label>
		<input type="text" name="descriptionInput" id="description" maxlength="127" value="<?php echo $_GET['desc'] ?? ''; ?> ">
	</div>
	<div><label for="amount">Amount (USD)</label>
		<input name="amountInput" type="number" id="amount" value="<?php echo $_GET['amount'] ?? ''; ?>">
	</div>
	<div style="text-align: center; margin-top: 0.625rem;" id="paypal-button-container"></div>
</div>

<script src="https://www.paypal.com/sdk/js?client-id=sb&enable-funding=venmo&currency=USD" data-sdk-integration-source="button-factory"></script>

<script>
	function initPayPalButton() {
		var description = document.querySelector('#smart-button-container #description');
		var amount = document.querySelector('#smart-button-container #amount');
		var descriptionError = document.querySelector('#smart-button-container #descriptionError');
		var priceError = document.querySelector('#smart-button-container #priceLabelError');
		var invoiceid = document.querySelector('#smart-button-container #invoiceid');
		var invoiceidError = document.querySelector('#smart-button-container #invoiceidError');
		var invoiceidDiv = document.querySelector('#smart-button-container #invoiceidDiv');

		var elArr = [description, amount];

		if (invoiceidDiv.firstChild.innerHTML.length > 1) {
			invoiceidDiv.style.display = "block";
		}

		var purchase_units = [];
		purchase_units[0] = {};
		purchase_units[0].amount = {};

		function validate(event) {
			return event.value.length > 0;
		}

		//		var result = elArr.every(validate);
		//		if (result) {
		//			actions.enable();
		//		}

		paypal.Buttons({
			style: {
				color: 'white',
				shape: 'pill',
				label: 'pay',
				layout: 'horizontal',

			},

			onInit: function(data, actions) {
				actions.disable();

				if (invoiceidDiv.style.display === "block") {
					elArr.push(invoiceid);
				}

				elArr.forEach(function(item) {
					item.addEventListener('keyup', function(event) {
						var result = elArr.every(validate);
						if (result) {
							actions.enable();
						} else {
							actions.disable();
						}
					});
				});
			},

			onClick: function() {
				if (description.value.length < 1) {
					descriptionError.style.display = "block";
				} else {
					descriptionError.style.display = "none";
				}

				if (amount.value.length < 1) {
					priceError.style.display = "block";
				} else {
					priceError.style.display = "none";
				}

				if (invoiceid.value.length < 1 && invoiceidDiv.style.display === "block") {
					invoiceidError.style.display = "block";
				} else {
					invoiceidError.style.display = "none";
				}

				purchase_units[0].description = description.value;
				purchase_units[0].amount.value = amount.value;

				if (invoiceid.value !== '') {
					purchase_units[0].invoice_id = invoiceid.value;
				}
			},

			createOrder: function(data, actions) {
				return actions.order.create({
					purchase_units: purchase_units,
				});
			},

			onApprove: function(data, actions) {
				return actions.order.capture().then(function(orderData) {

					// Full available details
					console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));

					// Show a success message within this page, e.g.
					const element = document.getElementById('paypal-button-container');
					element.innerHTML = '';
					element.innerHTML = '<h3>Thank you for your payment!</h3>';

					// Or go to another URL:  actions.redirect('thank_you.html');

				});
			},

			onError: function(err) {
				console.log(err);
			}
		}).render('#paypal-button-container');
	}
	initPayPalButton();
</script>