dwmsw/sagepay

Sagepay Direct V3 包装器

1.9.0 2018-03-10 00:34 UTC

This package is auto-updated.

Last update: 2024-09-12 03:57:17 UTC


README

Build Status Code Climate Test Coverage

描述

dwmsw/sagepay 是一个用于与 Sagepay Direct v3.00 协议 交互的库。

它的目标是使与 Sagepay 的交互尽可能简单,并在 packagist 上以 composer 包的形式提供。

此包装器不包括任何数据库实现,纯粹是为了使与 Sagepay API 的交互更简单,并增加一层验证。所有将数据发送到 Sagepay 的方法都将以关联数组的形式返回响应,不添加或删除任何内容。

它以这种方式构建,以便不限制开发者使用特定的数据库实现或结构。我们更喜欢您能够以您喜欢的任何方式使用数据。

## 安装

通过 composer 安装是最佳方式。请在 CLI 中运行以下命令

composer require dwmsw/sagepay

实现了什么?

  • 支付(带或不带令牌)
  • 延期支付 + 发布
  • 折扣
  • 退款
  • 3D Secure

基本用法

支付

// Create instance of Direct
$sagepay = new dwmsw\sagepay\Direct();

// New Basket instance
$basket = new dwmsw\sagepay\Basket();
// Add an item to the basket
$basket->addItem(new dwmsw\sagepay\Item('Test Item', 30.00, 6, 1));
// Add another item to the basket
$basket->addItem(new dwmsw\sagepay\Item('Test Item Two', 30.00, 6, 2));
// Add a discount
$basket->addDiscount(new dwmsw\sagepay\Discount(50.00, 'This is a discount'));

// Set the Basket
$sagepay->setBasket($basket);

// Set up the config
$sagepay->setConnectionMode(CONNECTION MODE TEST/LIVE);
$sagepay->setVendorName(YOUR VENDOR NAME);
$sagepay->setCurrency('GBP');
$sagepay->setApplyAvsCv2(1);
$sagepay->setApply3dSecure(0);
$sagepay->setGiftAid(0);

$vendorTxCode = md5(rand(1, 1000));

// TX Specific bits
$sagepay->setVendorTxCode($vendorTxCode);
$sagepay->setDescription('Test Payment');
$sagepay->setCustomerEmail('daryll@digitalwebmedia.co.uk');

// Set up addresses
$BillingAddress = new dwmsw\sagepay\Address();
$BillingAddress->setName('Daryll', 'Doyle');
$BillingAddress->setPhone('46554789658');
$BillingAddress->setAddress('88', 'Test Address', 'Town', 'GB', '412');

// Set Addresses into the class
$sagepay->setBillingAddress($BillingAddress);
// Delivery Address can be a different instance of address if needed
$sagepay->setDeliveryAddress($BillingAddress);

// New card instance
$card = new dwmsw\sagepay\Card();
// Card details 
$card->setCardHolder('Mr D Doyle');
$card->setCardType('VISA');
$card->setCardNumber('4929000000006');
$card->setStartDate(false);
$card->setExpiryDate('1216');
$card->setCV2('123');

$sagepay->setCard($card);

$output = $sagepay->register('PAYMENT');

// Do whatever you want with $output

要使用令牌进行支付,您最初需要将以下内容传递到您的设置中

$sagepay->setCreateToken(1);

这将告诉 sagepay 在支付成功时返回令牌。然后您可以使用此令牌进行进一步的支付。

要使用令牌进行支付,您不需要输入卡详情,而是使用以下内容

// New card instance
$card = new dwmsw\sagepay\Card();
$card->setToken('TOKEN');
$card->setCV2('CV2');

$sagepay->setCard($card);

当使用令牌时,类自动将 StoreToken 设置为 1 以持久化令牌。尽管我可能会在某个时候添加一个选项来更改此设置!

DEFERRED

// As above, but use the following line
$output = $sagepay->register('DEFERRED');

RELEASE

// Create instance of Direct
$sagepay = new dwmsw\sagepay\Direct();
// Make the release
$output = $sagepay->release('VPSTxId', 'SecurityKey', 'vendorTxCode', 'TxAuthNo', 'AMOUNT TO RELEASE');
    
// Do whatever with $output

REFUND

// Create instance of Direct
$sagepay = new dwmsw\sagepay\Direct();
// Make the refund
$output = $sagepay->refund('NEWvendorTxCode', 'AMOUNT TO REFUND', 'OLDVPSTxId', 'OLDvendorTxCode', 'OLDSecurityKey', 'OLDTxAuthNo', 'Refund Message');
    
// Do whatever with $output

3D Secure

// Create instance of Direct
$sagepay = new dwmsw\sagepay\Direct();
$sagepay->setConnectionMode('test');

// Send the output back to Sagepay
$output = $sagepay->threeDResponse($_POST['MD'], $_POST['PaRes']);

待办事项

  • Paypal 集成

参与进来

  • 为您希望的功能打开一个问题
  • 提交一个 PR
  • 编写可能缺失的任何测试!