Skip to content

Commit b5a2de1

Browse files
committed
Add marketplace functionality
1 parent 3676420 commit b5a2de1

17 files changed

Lines changed: 570 additions & 111 deletions

examples/bootstrap.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
require_once __DIR__ . '/../vendor/autoload.php';
4+
5+
use Everypay\Everypay;
6+
7+
// Either your live secret API key or your sandbox secret API key.
8+
Everypay::setApiKey('your_secret_api_key');
9+
// set this to true to throw exception if API returns an error response
10+
Everypay::$throwExceptions = true;
11+
// whether to send the requests to sandbox or production environment
12+
Everypay::$isTest = true;
13+
14+
// seller creation params
15+
$sellerParams = array(
16+
"email" => "tig801972@example.com",
17+
"contact_phone" => "2204748801",
18+
"description" => "Seller #75407",
19+
"business_name" => "Βέργας Ε.Ε",
20+
"business_title" => "Βέργας Ε.Ε",
21+
"business_tax_number" => "900206996",
22+
"business_address" => "Όδος Χαραλαμπίδης, 86-53",
23+
"bank_account_iban" => "GR308814051PJUD945SDDR60FDV",
24+
"bank_account_beneficiary" => "κ. Μάρκος Αλεξόπουλος",
25+
"payout_interval" => "daily",
26+
"payout_threshold_amount" => "0"
27+
);
28+
29+
$paymentParams = array(
30+
'card_number' => '4111111111111111',
31+
'expiration_month' => '01',
32+
'expiration_year' => '2020',
33+
'cvv' => '123',
34+
'holder_name' => 'John Doe',
35+
'split' => '1',
36+
'amount' => 10000 # amount in cents for 10 EURO.
37+
);

examples/payouts.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
require_once 'bootstrap.php';
4+
5+
use Everypay\Seller;
6+
use Everypay\Payout;
7+
use Everypay\Exception\ApiErrorException;
8+
9+
try {
10+
// create a new seller
11+
$seller = Seller::create($sellerParams);
12+
$sellerToken = $seller->token;
13+
echo 'Seller with token ' . $sellerToken . ' created' . PHP_EOL;
14+
15+
$payouts = Payout::listAll(['seller' => $sellerToken]);
16+
echo 'Total count of payouts: ' . $payouts->total_count . PHP_EOL;
17+
18+
//$payout = Payout::retrieve('pay_J4cjJqNeUBje5c6dmlFmDwXA');
19+
} catch (ApiErrorException $e) {
20+
echo $e->getMessage() . PHP_EOL;
21+
}

examples/reversals.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
require_once 'bootstrap.php';
4+
5+
use Everypay\Seller;
6+
use Everypay\Payment;
7+
use Everypay\Transfer;
8+
use Everypay\Reversal;
9+
use Everypay\Exception\ApiErrorException;
10+
11+
try {
12+
// create a new seller
13+
$seller = Seller::create($sellerParams);
14+
$sellerToken = $seller->token;
15+
echo 'Seller with token ' . $sellerToken . ' created' . PHP_EOL;
16+
17+
// create a new payment with split=1 flag
18+
$payment = Payment::create($paymentParams);
19+
echo 'Payment successfully created' . PHP_EOL;
20+
21+
$params = array(
22+
'seller' => $sellerToken,
23+
'amount' => '10000',
24+
'commission_amount' => '400',
25+
'description' => 'Order 111',
26+
'on_hold' => '1'
27+
);
28+
29+
// transfer payment amount to seller
30+
$transfer = Transfer::payment($payment->token, $params);
31+
echo 'Successfully transferred ' . $transfer->amount . ' cents to seller' . PHP_EOL;
32+
33+
// retrieve seller's balance
34+
$balance = Seller::balance($sellerToken);
35+
echo 'Available seller balance: ' . $balance->available_amount . PHP_EOL;
36+
37+
$reversal = Reversal::create(array('transfer' => $transfer->token));
38+
echo 'Successfully created reversal for transfer ' . $transfer->token . PHP_EOL;
39+
40+
// retrieve seller's balance
41+
$balance = Seller::balance($sellerToken);
42+
echo 'Available seller balance: ' . $balance->available_amount . PHP_EOL;
43+
} catch (ApiErrorException $e) {
44+
echo $e->getMessage() . PHP_EOL;
45+
}

examples/sellers.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
require_once 'bootstrap.php';
4+
5+
use Everypay\Seller;
6+
use Everypay\Exception\ApiErrorException;
7+
8+
try {
9+
// create a new seller
10+
$seller = Seller::create($sellerParams);
11+
$sellerToken = $seller->token;
12+
echo 'Seller with token ' . $sellerToken . ' created' . PHP_EOL;
13+
14+
// retrieve seller's details
15+
$seller = Seller::retrieve($sellerToken);
16+
$sellerToken = $seller->token;
17+
18+
// update seller's email address
19+
$seller = Seller::update($sellerToken, ['email' => 'test@example.com']);
20+
echo 'Successfully updated seller' . PHP_EOL;
21+
22+
// list sellers and return last two
23+
$sellers = Seller::listAll();
24+
echo 'Total count of sellers: ' . $sellers->total_count . PHP_EOL;
25+
26+
// retrieve seller's balance
27+
$balance = Seller::balance($sellerToken);
28+
echo 'Available seller balance: ' . $balance->available_amount . PHP_EOL;
29+
} catch (ApiErrorException $e) {
30+
echo $e->getMessage() . PHP_EOL;
31+
}

examples/transfers.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
require_once 'bootstrap.php';
4+
5+
use Everypay\Seller;
6+
use Everypay\Payment;
7+
use Everypay\Transfer;
8+
use Everypay\Balance;
9+
use Everypay\Exception\ApiErrorException;
10+
11+
try {
12+
// create a new seller
13+
$seller = Seller::create($sellerParams);
14+
$sellerToken = $seller->token;
15+
echo 'Seller with token ' . $sellerToken . ' created' . PHP_EOL;
16+
17+
// create a new payment with split=1 flag
18+
$payment = Payment::create($paymentParams);
19+
echo 'Payment successfully created' . PHP_EOL;
20+
21+
$params = array(
22+
'seller' => $sellerToken,
23+
'amount' => '10000',
24+
'commission_amount' => '400',
25+
'description' => 'Order 111',
26+
'on_hold' => '1'
27+
);
28+
29+
// transfer payment amount to seller
30+
$transfer = Transfer::payment($payment->token, $params);
31+
echo 'Successfully transferred ' . $transfer->amount . ' cents to seller' . PHP_EOL;
32+
33+
$transfer = Transfer::retrieve($transfer->token);
34+
35+
// update transfer
36+
$transfer = Transfer::update($transfer->token, array('on_hold' => '0'));
37+
echo 'Successfully updated on_hold property' . PHP_EOL;
38+
39+
$params = [
40+
'type' => 'debit',
41+
'amount' => '1000',
42+
'description' => 'Fee for subscription'
43+
];
44+
45+
$direct = Transfer::direct($sellerToken, $params);
46+
echo 'Successfully debited seller account with ' . $direct->amount . ' cents' . PHP_EOL;
47+
48+
// list all transfers
49+
$transfers = Transfer::listAll();
50+
echo 'Total count of transfers: ' . $transfers->total_count . PHP_EOL;
51+
52+
// retrieve seller's balance
53+
$balance = Seller::balance($sellerToken);
54+
echo 'Available seller balance: ' . $balance->available_amount . PHP_EOL;
55+
56+
$marketplaceBalance = Balance::balance();
57+
echo 'Marketplace available balance: ' . $marketplaceBalance->marketplace->available_amount . PHP_EOL;
58+
echo 'Marketplace current balance: ' . $marketplaceBalance->marketplace->current_amount . PHP_EOL;
59+
60+
} catch (ApiErrorException $e) {
61+
echo $e->getMessage() . PHP_EOL;
62+
}

src/AbstractResource.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,22 @@ abstract class AbstractResource
2323
'listAll',
2424
'refund',
2525
'update',
26-
'delete'
26+
'delete',
27+
'balance',
28+
'payment',
29+
'direct'
2730
);
2831

2932
private static $resources = array(
3033
'tokens',
3134
'payments',
3235
'customers',
3336
'notifications',
34-
'schedules',
37+
'sellers',
38+
'transfers',
39+
'reversals',
40+
'payouts',
41+
'balance'
3542
);
3643

3744
private static $clientOptions = array();

src/Action/AbstractAction.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ protected function getResourceUri()
3838
return $this->apiUri
3939
. '/'
4040
. $this->resource
41-
. ($this->tokenId ? '/'.$this->tokenId : null);
41+
. ($this->tokenId ? '/' . $this->tokenId : null);
4242
}
4343

4444
/**

src/Action/Balance.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4+
5+
namespace Everypay\Action;
6+
7+
use Everypay\Http\Client\ClientInterface;
8+
9+
class Balance extends AbstractAction
10+
{
11+
protected $method = ClientInterface::METHOD_GET;
12+
13+
/**
14+
* {@inheritdoc}
15+
*/
16+
public function __invoke()
17+
{
18+
return $this->createRequest($this->method);
19+
}
20+
21+
protected function getResourceUri()
22+
{
23+
$uri = parent::getResourceUri();
24+
25+
if ($this->resource === 'balance') {
26+
return $uri;
27+
}
28+
29+
return $uri . '/balance/';
30+
}
31+
}

src/Action/Direct.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4+
5+
namespace Everypay\Action;
6+
7+
use Everypay\Http\Client\ClientInterface;
8+
9+
class Direct extends AbstractAction
10+
{
11+
protected $method = ClientInterface::METHOD_POST;
12+
13+
/**
14+
* {@inheritdoc}
15+
*/
16+
public function __invoke()
17+
{
18+
return $this->createRequest($this->method);
19+
}
20+
21+
protected function getResourceUri()
22+
{
23+
return $this->apiUri . '/sellers'
24+
. ($this->tokenId ? '/' . $this->tokenId : null)
25+
. '/transfers';
26+
}
27+
}

src/Action/Payment.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4+
5+
namespace Everypay\Action;
6+
7+
use Everypay\Http\Client\ClientInterface;
8+
9+
class Payment extends AbstractAction
10+
{
11+
protected $method = ClientInterface::METHOD_POST;
12+
13+
/**
14+
* {@inheritdoc}
15+
*/
16+
public function __invoke()
17+
{
18+
return $this->createRequest($this->method);
19+
}
20+
21+
protected function getResourceUri()
22+
{
23+
return $this->apiUri . '/payments'
24+
. ($this->tokenId ? '/' . $this->tokenId : null)
25+
. '/transfers';
26+
}
27+
}

0 commit comments

Comments
 (0)