/
PayPal.php
100 lines (86 loc) · 2.08 KB
/
PayPal.php
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
<?php
/**
* Created by PhpStorm.
* User: yixin
* Date: 2018/5/9
* Time: 16:49
*/
namespace Modules\Sale;
use Omnipay\Omnipay;
class PayPal
{
/*
* @return mixed
*/
public function gateway()
{
$gateway = Omnipay::create('PayPal_Express');
$gateway->setUsername(config('paypal.credentials.username'));
$gateway->setPassword(config('paypal.credentials.password'));
$gateway->setSignature(config('paypal.credentials.signature'));
$gateway->setTestMode(config('paypal.credentials.sandbox'));
return $gateway;
}
/**
* @param array $parameters
* @return mixed
*/
public function purchase(array $parameters)
{
$response = $this->gateway()
->purchase($parameters)
->send();
return $response;
}
/**
* @param array $parameters
*/
public function complete(array $parameters)
{
$response = $this->gateway()
->completePurchase($parameters)
->send();
return $response;
}
public function search($parameters)
{
$response = $this->gateway()
->void();
return $response;
}
public function refund($parameters)
{
return $this->gateway()
->refund($parameters)
;
}
/**
* @param $amount
*/
public function formatAmount($amount)
{
return number_format($amount, 2, '.', '');
}
/**
* @param $order
*/
public function getCancelUrl($order)
{
return route('paypal.checkout.cancelled', $order->order_id);
}
/**
* @param $order
*/
public function getReturnUrl($order)
{
return route('paypal.checkout.completed', $order->order_id);
}
/**
* @param $order
*/
public function getNotifyUrl($order)
{
$env = config('paypal.credentials.sandbox') ? "sandbox" : "live";
return route('webhook.paypal.ipn', [$order->id, $env]);
}
}