tepuilabs/payment-processors

支付处理器

v4.0.0 2022-03-31 01:26 UTC

This package is auto-updated.

Last update: 2024-09-08 06:16:05 UTC


README

支付处理器

Latest Version on Packagist GitHub Tests Action Status Total Downloads

laravel 的支付网关管理包

  • Merchadopago de Mercadolibre
  • PayPal

这是由 @JuanDMeGon 的原始想法,来源于其在Udemy的《使用 Laravel 和 PayPal/Stripe 处理在线支付》课程的改编。

非常感谢 Juan 的辛勤工作和贡献!!

安装

使用 composer

composer require tepuilabs/payment-processors

可选:发布配置文件

php artisan vendor:publish --tag="payment-processors-config"

配置文件的内容如下

<?php

return [

    'mercadopago' => [
        'class' => \Tepuilabs\PaymentProcessors\Services\MercadoPagoService::class,
    ],

    'paypal' => [
        'class' => \Tepuilabs\PaymentProcessors\Services\PayPalService::class,
    ],

    'stripe' => [
        'class' => \Tepuilabs\PaymentProcessors\Services\StripeService::class,
    ],

];

使用方法

市场支付

首先,您需要遵循 Mercadolibre 的指示进行客户端集成,之后按照以下步骤操作

// usa el facade
use Tepuilabs\PaymentProcessors\Facades\PaymentProcessors;

// luego crea la instancia de la clase a usar
$params = [
    'base_uri' => 'https://api.mercadopago.com',
    'key' => '',
    'secret' => '',
    'base_currency' => '',
    'integrator_id' => '', // optional
];

$mercadopago = PaymentProcessors::resolveService('mercadopago', $params);

// necesitamos:
// $cardNetwork: visa / mastercard
// $cardToken: token de la tarjeta
// $amount: monto a cobrar
// $userEmail: correo del usuario
// $installments: default 1

$mercadopago->handlePayment('visa', 'ff8080814c11e237014c1ff593b57b4d', 177, 'test@test.com');

响应

{
    "status": "approved",
    "status_detail": "accredited",
    "id": 3055677,
    "date_approved": "2019-02-23T00:01:10.000-04:00",
    "payer": {
        ...
    },
    "payment_method_id": "visa",
    "payment_type_id": "credit_card",
    "refunds": [],
    ...
}

为 Checkout Pro 创建支付偏好

<?php

$preference = [
    'items' => [
        [
            "title" => "Dummy Title",
            "description" => "Dummy description",
            "picture_url" => "http://project.dev/product-image.jpg",
            "category_id" => "cat123",
            "quantity" => 1,
            "currency_id" => "UYU",
            "unit_price" => 10
        ]
    ],
    'payer' => [
        'name' => 'John',
        'surname' => 'Doe',
        'email' => 'john.doe@domain.tld',
        'identification' => [
            'type' => '',
            'number' => ''
        ],
        'date_created' => ''
    ],
    'payment_methods' => [
        'excluded_payment_methods' => [
            [
                'id' => 'amex'
            ]
        ],
        'excluded_payment_types' => [
            [
                'id' => 'atm'
            ]
        ],
        'installments' => 6,
    ],
    'statement_descriptor' => 'MERCADOPAGO',
    'auto_return' => 'approved',
    'back_urls' => [
        'success' => 'http://project.dev/success_route',
        'failure' => 'http://project.dev/error_route',
        'pending' => 'http://project.dev/waiting_route'
    ]
];

$preference = $mercadopago->createPreference($preference);

// luego se puede usar `sandbox_init_point` para crear el enlace para que el cliente se dirija a Mercadopago a pagar

$preference->sandbox_init_point;
PayPal仅使用两个方法即可使用 PayPal
// usa el facade
use Tepuilabs\PaymentProcessors\Facades\PaymentProcessors;

// luego crea la instancia de la clase a usar

$params = [
    'base_uri' => 'https://api.sandbox.paypal.com',
    'client_id' => '',
    'client_secret' => '',
    'return_url' => '',
    'cancel_url' => ''
];

$paypal = PaymentProcessors::resolveService('paypal', $params);

// necesitamos:
// $amoun: el monto a cobrar
// $currency: el id de la moneda a cobrar, por defecto es USD

// este método hace una redirección a paypal

$paypal->handlePayment(200);

// el otro método que debemos usar es

$paypal->handleApproval();

// este método retorna toda la infromación del pago de ser aceptado por el usuario
// o retorna un array vacio
Stripe仅使用两个方法即可使用 Stripe
// usa el facade
use Tepuilabs\PaymentProcessors\Facades\PaymentProcessors;

// luego crea la instancia de la clase a usar

$params = [
    'key' => 'pk_test_51IMzM0...',
    'secret' => 'sk_test_51IM...',
];

$stripe = PaymentProcessors::resolveService('stripe', $params);

// Para generar el payment method id te recomiendo leer esto: https://github.com/TepuiLABS/payment-processors/discussions/6
// Para saber que es el payment method te invito a leer la documentación: https://stripe.com/docs/api/payment_methods

// Despues de obtener el payment method id pasamos a generar el pago de la siguiente forma:

$paymentData = [
    'amount' => 500, // integer
    'paymentMethod' => $paymentMethodId, // pm_1IOYCAJcoyM5FfOy0cVbjyuH
];

$intent = $stripe->handlePayment($paymentData);

// Y ya por ultimo, confirmamos el pago:

$confirm = $stripe->confirmPayment($intent['id']);

测试

composer test

变更日志

请参阅 变更日志 了解最近的变化。

贡献

请参阅 贡献指南 获取详细信息。

鸣谢

许可证

MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。