jihel/spreedly-viking-pay-receiver

为JihelOmnipaySpreedlyBridge提供的Viking支付接收器

安装: 32

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.1 2019-02-13 10:40 UTC

This package is not auto-updated.

Last update: 2024-09-20 20:26:27 UTC


README

为JihelOmnipaySpreedlyBridge提供的Viking支付插件适配器

1- 安装

将插件添加到composer.json的require中

{
    "require": {
        "jihel/spreedly-bridge": "1.0",
        "jihel/spreedly-viking-pay-receiver": "1.0",
    }
}

或者

php composer.phar require jihel/spreedly-viking-pay-receiver

将包添加到AppKernel.php中

public function registerBundles()
{
    $bundles = array(
        ...
        new Jihel\OmnipaySpreedlyBridgeBundle\JihelOmnipaySpreedlyBridgeBundle(),
    );
}

2- 配置

config.yml

jihel_viking_pay:
    accounts:
        default:
            password: %viking_pass%
            userId: %viking_user%
            entityId: %viking_entity_id%

omnipay:
    default_gateway: SpreedlyBridge
    methods:
        SpreedlyBridge:
            user: %spreedly_user%
            secret: %spreedly_secret%
            testMode: "%kernel.debug%"

routing.yml

JihelOmnipaySpreedlyBridgeBundle:
    resource: '@JihelOmnipaySpreedlyBridgeBundle/Resources/config/routing.yaml'
    prefix: /_jihel/omnipay

生成实体

php bin/console doctrine:schema:update --force

3- 使用

在/_jihel/omnipay/上创建一个新的接收器

支付方式是Omnipay标准,但您必须设置接收器

/form-submit

use Omnipay\SpreedlyBridge\Gateway;

// ...

/** @var ReceiverManager $receiverManager */
$receiverManager = $this->get('jihel.omnipay.manager.receiver');
/** @var TransactionManager $transactionManager */
$transactionManager = $this->get('jihel.omnipay.manager.transaction');

// Works with float, not cents
$initialAmount /= 100;
$gatewayName = Gateway::NAME;

$paymentRequest = new \Jihel\OmnipaySpreedlyBridgeBundle\Model\PaymentRequest();
$paymentRequest
    ->setAmount($initialAmount)
    ->setCurrency($order->getConfig()->getCurrency())
;

$receiver = $receiverManager->findByDomain($domain->getName());

$transaction = $transactionManager->create($paymentRequest, $receiver);
$order->setTransaction($transaction);
$m->persist($order->getTransaction());
$m->persist($order);
$m->flush();

// Redirect to /create

/create

// Finish to setup the gateway
$gateway->setReceiver($payment->getTransaction()->getReceiver());
$response = $gateway->purchase([
    'landingUrl' => $this->generateUrl('FrontTransactionBundle_payment_finish', [
        'uuid' => $order->getUuid(),
        'id' => $payment->getId(),
    ], UrlGeneratorInterface::ABSOLUTE_URL),
    'bin' => $payment->getTransaction()->getCreditCard()->getFirstSixDigits(),
    'currency' => $payment->getTransaction()->getCurrency(),
    'amount' => $payment->getTransaction()->getAmount(),
    'cardReference' => $payment->getTransaction()->getCreditCard()->getToken(),
])->send();

if ($response->isRedirect()) {
    $transactionManager->pendingPayment($payment);

    $response->redirect();
    die;
} elseif (!$response->isSuccessful()) {
    $transactionManager->failPayment($payment);
    $this->addFlash('danger', $response->getMessage());

    // Redirect to form
}

// Else it's success
$transactionManager->depositPayment($payment, $response);

// Redirect to after payment page

/3ds

$gateway->setReceiver($payment->getTransaction()->getReceiver());
$response = $gateway->completePurchase([
    '3ds' => $request->query->get('id'),
])->send();

Then handle as standard omnipay response

4- 感谢

感谢我的猫一直喵喵叫。感谢我抽出空闲时间编写教程帮助懒惰的开发者。您可以在这里访问我的简历