netborg / laravel-przelewy24
Przelewy24 支付库用于Laravel。
Requires
- php: ^7.1.3
- ext-json: *
- ext-soap: *
- guzzlehttp/guzzle: ^6.3
- illuminate/database: ^5.6
- illuminate/http: ^5.6
- illuminate/support: ^5.6
- ramsey/uuid: ^3.8
Requires (Dev)
- fzaninotto/faker: ^1.8
- phpunit/phpunit: ^8.1
This package is auto-updated.
Last update: 2024-08-30 01:12:17 UTC
README
该库通过API (API v3.2) 和WebServices (Web Services v2.5.0) 提供与 Przelewy24 支付提供商的集成。
请注意:此库仍处于开发早期阶段。某些功能可能无法正确工作或根本无法工作。自行承担风险。
要求
- PHP ^7.1.3
- Laravel ^5.6
- PHP模块: php-soap, php-json
- 需要HTTPS
安装
composer require netborg/laravel-przelewy24 "~3.0"
composer update
发布P24配置文件
php artisan vendor:publish --tag="p24-config"
库提供了核心数据库结构来处理支付请求。您可以选择将迁移类复制到您的 database/migrations
文件夹中,以进一步定制数据库模式。执行数据库迁移
php artisan vendor:publish --tag="p24-migrations" // (optional) - if you want to publish and customize database schema before `php artisan migrate` command execution.
php artisan migrate // always execute this command (even if you have not required optional migration publishing above)
配置
在您的 .env
配置文件中提供您的商户详细信息
P24_MERCHANT_ID= // your MerchantId received from Przelewy24 ie. `123456`
P24_POS_ID= // your PosId received from Przelewy24 (or copy your MerchantId from above)
P24_CRC= // your CRC available in your panel on Przelewy24.
P24_API_KEY= // your API KEY available in panel on Przelewy24.
P24_MODE=sandbox // switch between test and production modes: `live` or `sandbox`
您可能想在 config/p24.php
文件中设置一个自定义路由,您的客户在交易取消事件发生时将被重定向到该路由
return [
'merchant_id' => env('P24_MERCHANT_ID', 0),
'pos_id' => env('P24_POS_ID', 0),
'crc' => env('P24_CRC', null),
'api_key' => env('P24_API_KEY', null),
'mode' => env('P24_MODE', 'sandbox'),
/*
provide route name (or URL starting with `http://` or `https://`) where Client shoud be redirected
on transaction cancellation or after payment completion (you can override it on transaction registration)
*/
'route_return' => null,
];
就这些了。您可以从Przelewy24开始管理支付。
事件
尽管所有主要交易事件都得到支持并默认维护,但您可能想订阅各种事件并执行一些自定义操作。为此,请创建并注册您的自定义事件监听器。
\NetborgTeam\P24\Events\P24TransactionUserReturnedEvent::class
\NetborgTeam\P24\Events\P24TransactionConfirmationConnectionErrorEvent::class
\NetborgTeam\P24\Events\P24TransactionConfirmationInvalidParameterEvent::class
\NetborgTeam\P24\Events\P24TransactionConfirmationInvalidSenderEvent::class
\NetborgTeam\P24\Events\P24TransactionConfirmationInvalidSignatureEvent::class
\NetborgTeam\P24\Events\P24TransactionConfirmationSuccessEvent::class
\NetborgTeam\P24\Events\P24TransactionUserReturnedEvent::class
:当用户取消或完成支付过程并被重定向回应用程序时,将触发此事件。如果交易注册时您已用自定义URL覆盖了p24_url_return
参数,则此事件 不会触发。\NetborgTeam\P24\Events\P24TransactionConfirmationConnectionErrorEvent::class
:如果应用程序在尝试发送交易确认以供验证时与 Przelewy24 服务器连接出现问题,则将触发此事件。\NetborgTeam\P24\Events\P24TransactionConfirmationInvalidParameterEvent::class
:如果任何核心交易参数值与从Przelewy24
服务器收到的交易确认值不匹配,则可能偶尔触发此事件。可能是欺诈尝试的信号。\NetborgTeam\P24\Events\P24TransactionConfirmationInvalidSenderEvent::class
:如果交易确认是从未在此处列出的IP地址发送的,则可能偶尔触发此事件。\NetborgTeam\P24\Events\P24TransactionConfirmationInvalidSignatureEvent::class
:如果交易确认的签名无效,则将触发此事件。可能是欺诈尝试的信号。\NetborgTeam\P24\Events\P24TransactionConfirmationSuccessEvent::class
:当交易成功通过Przelewy24
服务器验证和确认时,将触发此事件。建议订阅此事件以进行自定义处理的已确认交易。
使用示例
API调用
交易注册和客户支付启动
public function registerTransaction(
\Illuminate\Http\Request $request,
\NetborgTeam\P24\Services\P24Manager $manager
) {
// create new Transaction (for attribute reference please see P24 API docs)
$transaction = new \NetborgTeam\P24\P24Transaction([
// recommended way to provide session ID via supporting method
'p24_session_id' => \NetborgTeam\P24\P24Transaction::makeUniqueId($request->session()->getId()),
'p24_amount' => 19900,
'p24_currency' => 'PLN',
'p24_description' => 'Transaction description',
'p24_email' => 'client@netborg-software.com',
'p24_country' => 'PL',
]);
try {
$token = $manager->register($transaction);
if (is_string($token)) {
/*
if transaction has been successfully registered
unique token will be returned - save it
with transaction details
*/
$transaction->token($token);
// then redirect customer to Przelewy24 to make payment
return $transaction->redirectForPayment();
} elseif (is_array($token)) {
// some transaction attributes are incorrect - perform some action
} else {
// error
}
} catch (\NetborgTeam\P24\Exceptions\InvalidTransactionException $e) {
// handle invalid transaction exception
} catch (\NetborgTeam\P24\Exceptions\P24ConnectionException $e) {
// handle connection to P24 server exception
}
}
支付成功后,Przelewy24 将向您的监听器发送通知。不用担心!除非您已用自定义URL覆盖了 p24_url_status
,否则您的应用程序将为您处理所有必要的检查。默认情况下,您将在 https://[YOUR_DOMAIN]/p24/status
URL上接收交易状态通知。
Przelewy24 网络服务调用
在您的应用程序中调用 Przelewy24 的任何网络服务方法,请使用 P24WebServicesManager
服务。您可以简单地通过直接从容器中调用它或通过使用 P24Manager
来间接调用它来获取此服务的实例。
// direct call
$wsManager = app()->make(\NetborgTeam\P24\Services\P24WebServicesManager::class);
// get service instance via $manager
$manager = app()->make(\NetborgTeam\P24\Services\P24Manager::class);
$wsManager = $manager->webServices();
测试对网络服务的访问
$result = $wsManager->testAccess(); // returns bool `true` if accessed successfully, `false` otherwise
获取可用支付方式列表
$list = $wsManager->getPaymentMethods()->result(); // returns an array of `PaymentMethod` instances.
通过 p24_session_id
获取交易详情
$transaction = $wsManager->getTransactionBySessionId('SESSION_ID')->result(); // where `SESSION_ID` is a `p24_session_id` parameter provided while transaction registration.
进行交易退款
// build an `ArrayOfRefunds`
$refunds = (new \NetborgTeam\P24\ArrayOfRefund())
// add transaction refund details
// either by providing direct key values
->addByKeys('SESSION_ID', ORDER_ID, AMOUNT)
// or by passing `SingleRefund` objects
->add(new \NetborgTeam\P24\SingleRefund([
'sessionId' => 'SESSION_ID',
'orderId' => (int) ORDER_ID,
'amount' => (int) AMOUNT,
]));
$results = $wsManager->refund(BATCH_ID, $refunds)->result(); // returns a list of refund results (see P24 Web Services docs)
... 更多即将推出