dwmsw / sagepay
Sagepay Direct V3 包装器
1.9.0
2018-03-10 00:34 UTC
Requires
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/phpunit: 4.2.*
README
描述
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
- 编写可能缺失的任何测试!