Skip to content

Commit 685e20e

Browse files
committed
added methods for split payment
2 parents 5af3340 + 22ee162 commit 685e20e

File tree

2 files changed

+120
-29
lines changed

2 files changed

+120
-29
lines changed

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,12 @@ Route::post('/pay', [
126126
]);
127127

128128
Route::get('/payment/callback', 'PaymentController@handleGatewayCallback');
129+
130+
OR
131+
132+
Route::get('payment/callback', [
133+
'uses' => 'PaymentController@handleGatewayCallback'
134+
]); //Laravel 5.0
129135
```
130136

131137
```php
@@ -208,6 +214,32 @@ Paystack::getAllTransactions();
208214
* @returns string
209215
*/
210216
Paystack::genTranxRef();
217+
218+
/**
219+
* This method creates a subaccount to be used for split payments
220+
* @return array
221+
*/
222+
Paystack::createSubAccount();
223+
224+
225+
/**
226+
* This method fetches the details of a subaccount
227+
* @return array
228+
*/
229+
Paystack::fetchSubAccount();
230+
231+
232+
/**
233+
* This method lists the subaccounts associated with your paystack account
234+
* @return array
235+
*/
236+
Paystack::listSubAccounts();
237+
238+
/**
239+
* This method Updates a subaccount to be used for split payments
240+
* @return array
241+
*/
242+
Paystack::updateSubAccount();
211243
```
212244

213245
A sample form will look like so:

src/Paystack.php

Lines changed: 88 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -100,38 +100,43 @@ private function setRequestOptions()
100100
);
101101
}
102102

103-
/**
104-
* Initiate a payment request to Paystack
103+
104+
/**
105+
* Included the option to pass the payload to this method for situations
106+
* when the payload is built on the fly (not passed to the controller from a view)
105107
* @return Paystack
106108
*/
107-
public function makePaymentRequest()
108-
{
109-
$data = [
110-
"amount" => intval(request()->amount),
111-
"reference" => request()->reference,
112-
"email" => request()->email,
113-
"plan" => request()->plan,
114-
"first_name" => request()->first_name,
115-
"last_name" => request()->last_name,
116-
"callback_url" => request()->callback_url,
117-
/*
118-
* to allow use of metadata on Paystack dashboard and a means to return additional data back to redirect url
119-
* form need an input field: <input type="hidden" name="metadata" value="{{ json_encode($array) }}" >
120-
*array must be set up as: $array = [ 'custom_fields' => [
121-
* ['display_name' => "Cart Id", "variable_name" => "cart_id", "value" => "2"],
122-
* ['display_name' => "Sex", "variable_name" => "sex", "value" => "female"],
123-
* .
124-
* .
125-
* .
126-
* ]
127-
*
128-
* ]
129-
*/
130-
'metadata' => request()->metadata
131-
];
132109

133-
// Remove the fields which were not sent (value would be null)
134-
array_filter($data);
110+
public function makePaymentRequest( $data = null)
111+
{
112+
if ( $data == null ) {
113+
$data = [
114+
"amount" => intval(request()->amount),
115+
"reference" => request()->reference,
116+
"email" => request()->email,
117+
"plan" => request()->plan,
118+
"first_name" => request()->first_name,
119+
"last_name" => request()->last_name,
120+
"callback_url" => request()->callback_url,
121+
/*
122+
* to allow use of metadata on Paystack dashboard and a means to return additional data back to redirect url
123+
* form need an input field: <input type="hidden" name="metadata" value="{{ json_encode($array) }}" >
124+
*array must be set up as: $array = [ 'custom_fields' => [
125+
* ['display_name' => "Cart Id", "variable_name" => "cart_id", "value" => "2"],
126+
* ['display_name' => "Sex", "variable_name" => "sex", "value" => "female"],
127+
* .
128+
* .
129+
* .
130+
* ]
131+
*
132+
* ]
133+
*/
134+
'metadata' => request()->metadata
135+
];
136+
137+
// Remove the fields which were not sent (value would be null)
138+
array_filter($data);
139+
}
135140

136141
$this->setHttpResponse('/transaction/initialize', 'POST', $data);
137142

@@ -172,6 +177,21 @@ public function getAuthorizationUrl()
172177

173178
return $this;
174179
}
180+
181+
/**
182+
* Get the authorization callback response
183+
* In situations where Laravel serves as an backend for a detached UI, the api cannot redirect
184+
* and might need to take different actions based on the success or not of the transaction
185+
* @return array
186+
*/
187+
public function getAuthorizationResponse($data)
188+
{
189+
$this->makePaymentRequest($data);
190+
191+
$this->url = $this->getResponse()['data']['authorization_url'];
192+
193+
return $this->getResponse();
194+
}
175195

176196
/**
177197
* Hit Paystack Gateway to Verify that the transaction is valid
@@ -370,6 +390,7 @@ public function createCustomer()
370390

371391
$this->setRequestOptions();
372392
$this->setHttpResponse('/customer', 'POST', $data);
393+
return $this->setHttpResponse('/customer', 'POST', $data)->getResponse();
373394
}
374395

375396
/**
@@ -434,6 +455,44 @@ public function createSubscription()
434455
$this->setHttpResponse('/subscription', 'POST', $data);
435456
}
436457

458+
/**
459+
* Get all the subscriptions made on Paystack.
460+
*
461+
* @return array
462+
*/
463+
public function getAllSubscriptions()
464+
{
465+
$this->setRequestOptions();
466+
467+
return $this->setHttpResponse("/subscription", 'GET', [])->getData();
468+
}
469+
470+
/**
471+
* Get customer subscriptions
472+
*
473+
* @param integer $customer_id
474+
* @return array
475+
*/
476+
public function getCustomerSubscriptions($customer_id)
477+
{
478+
$this->setRequestOptions();
479+
480+
return $this->setHttpResponse('/subscription?customer=' . $customer_id, 'GET', [])->getData();
481+
}
482+
483+
/**
484+
* Get plan subscriptions
485+
*
486+
* @param integer $plan_id
487+
* @return array
488+
*/
489+
public function getPlanSubscriptions($plan_id)
490+
{
491+
$this->setRequestOptions();
492+
493+
return $this->setHttpResponse('/subscription?plan=' . $plan_id, 'GET', [])->getData();
494+
}
495+
437496
/**
438497
* Enable a subscription using the subscription code and token
439498
* @return array

0 commit comments

Comments
 (0)