lunarphp/opayo

Lunar 的 Opayo 支付驱动程序。

维护者

详细信息

github.com/lunarphp/opayo

源代码

问题

安装次数: 1,432

依赖关系: 0

建议者: 0

安全: 0

星星: 1

关注者: 3

分支: 1

开放问题: 0

类型:项目


README

此插件使您可以在 Lunar 店面上启用 Opayo 支付。

Alpha 版本

此插件目前处于 Alpha 版,尽管我们已经尽一切努力确保其按预期工作,但只有在添加更多测试并证明无误后,它才会被考虑退出 Alpha 版。

最低要求

安装

需要 composer 包

composer require lunarphp/opayo

配置服务

将 opayo 配置添加到 config/services.php 文件。

// ...
'opayo' => [
    'vendor' => env('OPAYO_VENDOR'),
    'env' => env('OPAYO_ENV', 'test'),
    'key' => env('OPAYO_KEY'),
    'password' => env('OPAYO_PASSWORD'),
    'host' => env('OPAYO_HOST'),
],

启用驱动程序

config/lunar/payments.php 中设置驱动程序

<?php

return [
    // ...
    'types' => [
        'card' => [
            // ...
            'driver' => 'opayo',
        ],
    ],
];

配置

以下是此包在 config/lunar/opayo.php 中使用的可用配置选项列表

后端使用

获取商家密钥

Lunar\Opayo\Facades\Opayo::getMerchantKey();

授权费用

$response = \Lunar\Facades\Payments::driver('opayo')->cart(
    $cart = CartSession::current()->calculate()
)->withData([
    'merchant_key' => $request->get('merchantSessionKey'),
    'card_identifier' => $request->get('cardToken'),
    'browserLanguage' => $request->get('browserLanguage'),
    'challengeWindowSize' => $request->get('challengeWindowSize'),
    'browserIP' => $request->ip(),
    'browserAcceptHeader' => $request->header('accept'),
    'browserUserAgent' => $request->get('browserUserAgent'),
    'browserJavaEnabled' => $request->get('browserJavaEnabled', false),
    'browserColorDepth' => $request->get('browserColorDepth'),
    'browserScreenHeight' => $request->get('browserScreenHeight'),
    'browserScreenWidth' => $request->get('browserScreenWidth'),
    'browserTZ' => $request->get('browserTZ'),
    'status' => 'payment-received',
])->authorize();

在授权费用时,您可能需要提交额外的身份验证,例如 3DSV2,您可以在支付端点中处理此操作。

if (is_a($response, \Lunar\Opayo\Responses\ThreeDSecureResponse::class)) {
  return response()->json([
      'requires_auth' => true,
      'data' => $response,
  ]);
}

$response 将包含 Opayo 的所有 3DSV2 信息。

您可以使用以下链接获取更多关于此信息

一旦您在您的店面处理了 3DSV2 响应,然后您可以再次进行授权。

$response = Payments::driver('opayo')->cart(
    $cart = CartSession::current()->calculate()
)->withData([
    'cres' => $request->get('cres'),
    'pares' => $request->get('pares'),
    'transaction_id' => $request->get('transaction_id'),
])->threedsecure();

if (! $response->success) {
    abort(401);
}

Opayo 卡令牌

当认证用户在您的商店下订单时,提供保存他们卡信息以便将来使用的能力可能是个好主意。虽然我们不存储实际的卡详细信息,但我们可以使用代表用户以前使用的卡的卡令牌。

您必须在 Opayo 账户上启用保存支付,因为您可以使用这些。

要保存卡,请在授权支付时传递 saveCard 数据键。

$response = \Lunar\Facades\Payments::driver('opayo')->cart(
    $cart = CartSession::current()->calculate()
)->withData([
    // ...
    'saveCard' => true
])->authorize();

假设一切顺利,将在 opayo_tokens 表中添加一个新的条目,与认证用户相关联。然后您可以在结账时显示这些卡片表示供用户选择。 token 是替换 card_identifier 数据键的内容。

$response = \Lunar\Facades\Payments::driver('opayo')->cart(
    $cart = CartSession::current()->calculate()
)->withData([
    // ...
    'card_identifier' => $request->get('cardToken'),
    'reusable' => true
])->authorize();

然后像处理任何其他交易一样处理响应。

贡献

欢迎贡献,如果您正在考虑添加功能,请首先提交一个问题,以便我们可以确定它是否应该被包含。