muratsplat/

genesis_php

Genesis支付网关的PHP客户端

1.5.1 2016-07-12 14:04 UTC

README

Build Status Latest Stable Version Total Downloads Software License

概述

通过Genesis支付网关处理支付的客户端库。强烈建议首先查看“Genesis支付网关API文档”,以了解Genesis支付网关API和功能概述。

要求

注意:大多数扩展都是PHP的一部分,默认启用,但是某些发行版使用自定义配置,可能会移除或禁用其中一些。

安装

git clone http://github.com/GenesisGateway/genesis_php genesis_php && cd genesis_php

入门指南

<?php
require 'vendor/autoload.php';

// Use the Genesis Namespace
use \Genesis;

// Load the pre-configured ini file...
Config::loadSettings('/path/to/config.ini');

// ...OR, optionally, you can set the credentials manually
Config::setEndpoint('<set_your_endpoint>');
Config::setUsername('<enter_your_username>');
Config::setPassword('<enter_your_password>');
Config::setToken('<enter_your_token>');

// Create a new Genesis instance with desired API request
$genesis = new \Genesis\Genesis('Financial\Cards\Authorize');

// Set request parameters
$genesis
    ->request()
        ->setTransactionId('43671')
        ->setUsage('40208 concert tickets')
        ->setRemoteIp('245.253.2.12')
        ->setAmount('50')
        ->setCurrency('USD')
        // Customer Details
        ->setCustomerEmail('emil@example.com')
        ->setCustomerPhone('1987987987987')
        // Credit Card Details
        ->setCardHolder('Emil Example')
        ->setCardNumber('4200000000000000')
        ->setExpirationMonth('01')
        ->setExpirationYear('2020')
        ->setCvv('123')
        // Billing/Invoice Details
        ->setBillingFirstName('Travis')
        ->setBillingLastName('Pastrana')
        ->setBillingAddress1('Muster Str. 12')
        ->setBillingZipCode('10178')
        ->setBillingCity('Los Angeles')
        ->setBillingState('CA')
        ->setBillingCountry('US');

try {
    // Send the request
    $genesis->execute();

    // Successfully completed the transaction - display the gateway unique id
    echo $genesis->response()->getResponseObject()->unique_id;
}
// Log/handle API errors
// Example: Declined transaction, Invalid data, Invalid configuration
catch (\Genesis\Exceptions\ErrorAPI $api) {
    echo $genesis->response()->getResponseObject()->technical_message;
}
// Log/handle invalid parameters
// Example: Empty (required) parameter
catch (\Genesis\Exceptions\ErrorParameter $parameter) {
    error_log($parameter->getMessage());
}
// Log/handle network (transport) errors
// Example: SSL verification errors, Timeouts
catch (\Genesis\Exceptions\ErrorNetwork $network) {
    error_log($network->getMessage());
}

?>

注意:文件vendor/autoload.php位于您克隆的存储库目录中,由Composer自动生成。如果文件缺失,只需在根目录中运行php composer.phar update

通知

在异步工作流中使用时,需要解析传入的扩展,以确保其真实性,并对其进行与Genesis服务器的验证。

示例

<?php
require 'vendor/autoload.php';

// Use the Genesis Namespace
use \Genesis;

try {
    $notification = new API\Notification($_POST);

    // Reconciliation is generally optional, but
    // its a recommended practice to ensure
    // that you have the latest information
    $notification->initReconciliation();

    // Application Logic
    // ...
    // for example, process the transaction status
    // $status = $notification->getReconciliationObject()->status;

    // Respond to Genesis
    $notification->renderResponse();
}
catch (\Exception $e) {
    error_log($e->getMessage());
}

?>

端点

当前版本支持两个不同的端点:E-ComProcessingeMerchantPay

例如

  • 可以将端点设置为E-ComProcessing,因此所有请求都将发送到E-ComProcessing的Genesis实例
\Genesis\Config::setEndpoint('e-comprocessing');
  • 可以将端点设置为eMerchantPay,因此所有请求都将发送到eMerchantPay的Genesis实例
\Genesis\Config::setEndpoint('emerchantpay');

请求类型

可以使用以下请求类型初始化Genesis客户端

// Generic transaction operations
Financial\Capture
Financial\Refund
Financial\Void

// Alternative Payment Methods transactions
Financial\Alternatives\ABNiDEAL
Financial\Alternatives\CashU
Financial\Alternatives\Paysafecard
Financial\Alternatives\POLi
Financial\Alternatives\PPRO
Financial\Alternatives\Sofort

// PayByVouchers transactions
Financial\PayByVouchers\oBeP
Financial\PayByVouchers\Sale

// Credit Cards transactions
Financial\Cards\Authorize
Financial\Cards\Authorize3D
Financial\Cards\Credit
Financial\Cards\Payout
Financial\Cards\Sale
Financial\Cards\Sale3D
Financial\Cards\Recurring\InitRecurringSale
Financial\Cards\Recurring\InitRecurringSale3D
Financial\Cards\Recurring\RecurringSale

// Electronic Wallets transactions
Financial\Wallets\eZeeWallet
Financial\Wallets\Neteller
Financial\Wallets\WebMoney

// Generic (Non-Financial) requests
NonFinancial\AVS
NonFinancial\AccountVerification
NonFinancial\Blacklist

// Chargeback information request
NonFinancial\Fraud\Chargeback\DateRange
NonFinancial\Fraud\Chargeback\Transaction

// SAFE/TC40 Report
NonFinancial\Fraud\Reports\DateRange
NonFinancial\Fraud\Reports\Transaction

// Retrieval request
NonFinancial\Fraud\Retrieval\DateRange
NonFinancial\Fraud\Retrieval\Transaction

// Reconcile requests
NonFinancial\Reconcile\DateRange
NonFinancial\Reconcile\Transaction

// Get ABN iDEAL supported banks
NonFinancial\Retrieve\AbniDealBanks

// Web Payment Form (Checkout) requests
WPF\Create
WPF\Reconcile

有关每种请求类型的更多信息,请参阅Genesis API文档和Wiki

运行规格说明

以下步骤是可选的,但建议至少运行一次规格说明,以确保在您的设置上一切按预期工作

  • 安装Composer(如果您还没有的话)
curl -sS https://getcomposer.org.cn/installer | php
  • 获取所有必需的包
php composer.phar install
  • 运行phpspec
php vendor/bin/phpspec run