2
2
3
3
namespace Adrianbarbos \Mobilpay ;
4
4
5
- trait DataTrait {
6
- protected function initData () {
5
+ use Omnipay \MobilPay \Api \Address ;
6
+
7
+ trait DataTrait
8
+ {
9
+ protected function initData ()
10
+ {
7
11
$ this ->data = [
8
12
'orderId ' => '' ,
9
13
'amount ' => '' ,
@@ -13,15 +17,33 @@ protected function initData() {
13
17
'returnUrl ' => config ('mobilpay.return_url ' ),
14
18
'cancelUrl ' => config ('mobilpay.cancel_url ' ),
15
19
'testMode ' => config ('mobilpay.testMode ' ),
16
- 'params ' => []
20
+ 'params ' => []
17
21
];
22
+
23
+ //ensure absolute urls
24
+ foreach (['confirmUrl ' , 'returnUrl ' , 'cancelUrl ' ] as $ var ) {
25
+ if ($ this ->isRelativeUrl ($ this ->data [$ var ])) {
26
+ $ this ->data [$ var ] = url ($ this ->data [$ var ]);
27
+ }
28
+ }
29
+ }
30
+
31
+ /**
32
+ * @param string $url
33
+ * @return bool
34
+ */
35
+ protected function isRelativeUrl ($ url )
36
+ {
37
+ $ url = parse_url ($ url );
38
+ return empty ($ url ['host ' ]);
18
39
}
19
40
20
41
/**
21
42
* @param $value string
22
43
* @return $this
23
44
*/
24
- public function setOrderId ($ value ) {
45
+ public function setOrderId ($ value )
46
+ {
25
47
$ this ->data ['orderId ' ] = $ value ;
26
48
27
49
return $ this ;
@@ -31,7 +53,8 @@ public function setOrderId($value) {
31
53
* @param $value string
32
54
* @return $this
33
55
*/
34
- public function setAmount ($ value ) {
56
+ public function setAmount ($ value )
57
+ {
35
58
$ this ->data ['amount ' ] = $ value ;
36
59
37
60
return $ this ;
@@ -41,7 +64,8 @@ public function setAmount($value) {
41
64
* @param $value string
42
65
* @return $this
43
66
*/
44
- public function setCurrency ($ value ) {
67
+ public function setCurrency ($ value )
68
+ {
45
69
$ this ->data ['currency ' ] = $ value ;
46
70
47
71
return $ this ;
@@ -51,7 +75,8 @@ public function setCurrency($value) {
51
75
* @param $value string
52
76
* @return $this
53
77
*/
54
- public function setDetails ($ value ) {
78
+ public function setDetails ($ value )
79
+ {
55
80
$ this ->data ['details ' ] = $ value ;
56
81
57
82
return $ this ;
@@ -61,7 +86,8 @@ public function setDetails($value) {
61
86
* @param $value string
62
87
* @return $this
63
88
*/
64
- public function setConfirmUrl ($ value ) {
89
+ public function setConfirmUrl ($ value )
90
+ {
65
91
$ this ->data ['confirmUrl ' ] = $ value ;
66
92
67
93
return $ this ;
@@ -71,7 +97,8 @@ public function setConfirmUrl($value) {
71
97
* @param $value string
72
98
* @return $this
73
99
*/
74
- public function setReturnUrl ($ value ) {
100
+ public function setReturnUrl ($ value )
101
+ {
75
102
$ this ->data ['returnUrl ' ] = $ value ;
76
103
77
104
return $ this ;
@@ -81,7 +108,8 @@ public function setReturnUrl($value) {
81
108
* @param $value string
82
109
* @return $this
83
110
*/
84
- public function setCancelUrl ($ value ) {
111
+ public function setCancelUrl ($ value )
112
+ {
85
113
$ this ->data ['cancelUrl ' ] = $ value ;
86
114
87
115
return $ this ;
@@ -91,7 +119,8 @@ public function setCancelUrl($value) {
91
119
* @param $value boolean
92
120
* @return $this
93
121
*/
94
- public function setTestMode ($ value ) {
122
+ public function setTestMode ($ value )
123
+ {
95
124
$ this ->data ['testMode ' ] = $ value ;
96
125
97
126
return $ this ;
@@ -101,9 +130,56 @@ public function setTestMode($value) {
101
130
* @param array $value
102
131
* @return $this
103
132
*/
104
- public function setAdditionalParams (array $ value ) {
133
+ public function setAdditionalParams (array $ value )
134
+ {
105
135
$ this ->data ['params ' ] = $ value ;
106
136
107
137
return $ this ;
108
138
}
139
+
140
+ /**
141
+ * @param array $value
142
+ * @return $this
143
+ */
144
+ public function setBillingAddress (array $ value )
145
+ {
146
+ $ this ->data ['billingAddress ' ] = $ this ->ensureAddressDefaults ($ value );
147
+
148
+ return $ this ;
149
+ }
150
+
151
+ /**
152
+ * @param array $value
153
+ * @return $this
154
+ */
155
+ public function setShippingAddress (array $ value )
156
+ {
157
+ $ this ->data ['shippingAddress ' ] = $ this ->ensureAddressDefaults ($ value );
158
+
159
+ return $ this ;
160
+ }
161
+
162
+ /**
163
+ * @param array $address
164
+ * @return array
165
+ */
166
+ protected function ensureAddressDefaults (array $ address )
167
+ {
168
+ $ fields = [
169
+ 'type ' , 'firstName ' , 'lastName ' , 'fiscalNumber ' , 'identityNumber ' , 'country ' , 'county ' ,
170
+ 'city ' , 'zipCode ' , 'address ' , 'email ' , 'mobilePhone ' , 'bank ' , 'iban '
171
+ ];
172
+
173
+ foreach ($ fields as $ field ) {
174
+ if (!array_key_exists ($ field , $ address )) {
175
+ $ address [$ field ] = '' ;
176
+ }
177
+ }
178
+
179
+ if (!in_array ($ address ['type ' ], [Address::TYPE_COMPANY , Address::TYPE_PERSON ])) {
180
+ $ address ['type ' ] = Address::TYPE_PERSON ;
181
+ }
182
+
183
+ return $ address ;
184
+ }
109
185
}
0 commit comments