بنت گالين/omnipay-paysafecard

Paysafecard 支付处理库的驱动程序

v1.0.0 2024-03-28 20:02 UTC

This package is auto-updated.

Last update: 2024-09-28 21:16:13 UTC


README

Build Status Latest Stable Version Total Downloads License

Omnipay V3 支付库的 Paysafecard 库

安装

使用 composer 将库作为项目依赖项添加 composer require worldstream-labs/omnipay-paysafecard

开发

为开发设置
composer install

使用方法

设置

<?php

require 'vendor/autoload.php';

use Omnipay\Omnipay;

$gateway = Omnipay::create('Paysafecard');
$gateway->setApiKey('yourApiKey');

// When deploying to production, don't forget to set test mode to false
$gateway->setTestMode(false);

授权支付

<?php

require 'vendor/autoload.php';

use Omnipay\Omnipay;

$gateway = Omnipay::create('Paysafecard');
$gateway->setApiKey('yourApiKey');

$response = $gateway->authorize([
    'amount' => 10.00,
    'currency' => 'EUR',
    'success_url' => 'https://website/success/{payment_id}',
    'failure_url' => 'https://website/failure/{payment_id}',
    'notification_url' => 'https://website/notification/{payment_id}',
])->send();

if (!$response->isSuccessful()) {
    throw new \RuntimeException('Error with payment');
}

$paymentId = $response->getPaymentId(); // use this for the next call

redirect($response->getRedirectUrl());

此调用将返回 AuthorizeResponse 对象。如果调用成功,则可以将客户重定向到 redirectUrl。根据下一屏幕的结果,客户将被重定向到成功或失败 URL。

捕获

在您能够捕获支付之前,请确保使用 fetchTransaction 调用已成功授权支付。

<?php

$gateway = Omnipay::create('Paysafecard');
$gateway->setApiKey('yourApiKey');

$response = $gateway->fetchTransaction([
    'payment_id' = $paymentId
])->send();

if ($response->getStatus() === 'AUTHORIZED') {
    $captureResponse = $gateway->capture([
        'payment_id' = $paymentId
    ])->send();
}

退款

[可选] 您可以先调用 validateRefund。引用自 Paysafecard:"为了确保请求的退款可以继续,业务合作伙伴必须预先检查即将到来的退款成功的可能性,存在某些可能拒绝退款的条件"

<?php

$gateway = Omnipay::create('Paysafecard');
$gateway->setApiKey('yourApiKey');

$validationResponse = $gateway->validateRefund([
   'payment_id' => $paymentId,
   'amount' => 10.00,
   'currency' => 'EUR',
   'customer_email' => 'test@email.com',
   'customer_id' => 1001,
])->send();

if (!$validationResponse->getStatus() != 'VALIDATION_SUCCESSFUL') {
   throw new \RuntimeException('Error with refund validation');
}

$refundResponse = $gateway->refund([
 'payment_id' => $paymentId,
 'refund_id' => $validationResponse->getRefundId(),
])->send();

if ($refundResponse->isSuccessful()) {
   // refund was successful
}

或者直接退款

<?php

$gateway = Omnipay::create('Paysafecard');
$gateway->setApiKey('yourApiKey');

$refundResponse = $gateway->refund([
    'payment_id' => $paymentId,
    'amount' => 10.00,
    'currency' => 'EUR',
    'customer_email' => 'test@email.com',
    'customer_id' => 1001,
])->send();

if ($refundResponse->isSuccessful()) {
    // refund was successful
}

测试

使用 composer run test 运行单元测试

支持

如果您遇到 Omnipay 的一般问题,我们建议在 Stack Overflow 上发布。请确保添加 omnipay 标签,以便容易找到。

如果您认为您找到了一个错误,请使用 GitHub 问题跟踪器 报告它,或者更好的方法是分支库并提交拉取请求。

参考

Paysafecard REST API 文档 Omnipay Mollie v3(类似的 JSON API)(官方包,用作模板)Omnipay Paysafecard Rest(Omnipay v2)