webstasolutions / concardis-sdk
Concardis PayEngine 3.0 的 PHP 库
v2.0.7
2024-01-13 19:19 UTC
Requires
- php: 8.0|~8.1
- ext-curl: *
- curl/curl: ~2.3.2
Requires (Dev)
- phpunit/phpunit: 9.5.5
- sebastian/version: 3.0.2
README
先决条件
PHP
获取并安装适合您系统的 PHP。 https://php.ac.cn/manual/en/install.php
Composer
获取并安装适合您系统的 composer。 https://composer.php.ac.cn
获取 PHP SDK
通过 Packagist.org
composer require webstasolutions/concardis-sdk
通过克隆
github.com:webstasolutions/concardis-sdk.git
作为发布版压缩包
https://github.com/webstasolutions/concardis-sdk/releases
安装
解压缩 PHP SDK 文件夹,进入新创建的文件夹并运行
composer install
将 PHP SDK 文件夹移动到您的 PHP 项目的 vendor 文件夹中。现在您可以使用 PHP 文件来使用 SDK。
初始化 SDK
include_once "./vendor/payengine/autoload.php"; use \Concardis\Payengine\Lib\Payengine; use \Concardis\Payengine\Lib\Internal\Config\MerchantConfiguration; use \Concardis\Payengine\Lib\Models\Request\Customer as CustomerRequest; use \Concardis\Payengine\Lib\Models\Request\Customers\Persona as PersonaRequest; use \Concardis\Payengine\Lib\Models\Request\Customers\Address as AddressRequest; use \Concardis\Payengine\Lib\Models\Request\Orders\Payment\Payment; $config = new MerchantConfiguration(); //TODO: Enter your API-Key $config->setApiKey('YOUR_API_KEY'); // TODO: Enter your merchantId $config->setMerchantId('YOUR_MERCHANT_ID'); $config->setIsLiveMode(false); $lib = new Payengine($config);
基本用法
创建客户
$customerRequest = new CustomerRequest(); $customerRequest->setEmail('somebody@' . time() .'.org'); $customerResponse = $lib->customer()->post($customerRequest);
创建个人资料
$personaRequest = new PersonaRequest(); $personaRequest->setTitle("Dr."); $personaRequest->setGender( \Concardis\Payengine\Lib\Internal\Constants\Gender::MALE ); $personaRequest->setFirstName("Max"); $personaRequest->setLastName("Mustermann"); $personaRequest->setBirthday(time()); $personaRequest->setFax("0123456789"); $personaRequest->setMobile("0123456789"); $personaRequest->setPhone("0123456789");
创建地址
$addressRequest = new AddressRequest(); $addressRequest->setFirstName("Maxim"); $addressRequest->setLastName("Mustermann"); $addressRequest->setZip("12345"); $addressRequest->setStreet("Musterstrasse"); $addressRequest->setHouseNumber("1a"); $addressRequest->setCountry("DE"); $addressRequest->setCity("Musterstadt"); $addressRequest->setPhone("0123456789"); $addressRequest->setMobile("0123456789"); $addressRequest->setFax("0123456789"); $addressRequest->setState("nrw"); $addressRequest->setTitle("dr."); $addressResponse = $lib->customer( $customerResponse->getCustomerId())->addresses()->post($addressRequest);
创建预先授权
$payment = new Payment(); //TODO Enter PaymentInstrumentId $payment->setPaymentInstrumentId('IDFromYourFrontend'); $item = new \Concardis\Payengine\Lib\Models\Request\Orders\Item(); $item->setQuantity(2); $item->setUnitPrice(5); $item->setUnitPriceWithTax(6); $item->setTotalPrice(10); $item->setTotalPriceWithTax(12); $item->setArticleNumber("test"); $item->setName("testName"); $item->setTax(19); $async = new \Concardis\Payengine\Lib\Models\Request\Orders\Async(); $async->setSuccessUrl("http://google.de?q=success"); $async->setCancelUrl("http://google.de?q=cancel"); $async->setFailureUrl("http://google.de?q=failure"); $authorizingTransaction = new \Concardis\Payengine\Lib\Models\Request\Orders\AuthorizingTransaction(); $authorizingTransaction->setCustomer($customerResponse->getCustomerId()); $authorizingTransaction->setPersona($personaResponse->getPersonaId()); $authorizingTransaction->setBillingAddress( $addressResponse->getAddressId() ); $authorizingTransaction->setShippingAddress( $addressResponse->getAddressId() ); $authorizingTransaction->setCurrency("EUR"); $authorizingTransaction->setPayment($payment); $authorizingTransaction->setBasket(array( $item )); $authorizingTransaction->setInitialAmount(12); $authorizingTransaction->setChannel('ECOM'); $authorizingTransaction->setSource("basicUsage script"); $authorizingTransaction->setTerms(time()); $authorizingTransaction->setPrivacy(time()); $authorizingTransaction->setAsync($async); $authorizingTransaction->setProduct( \Concardis\Payengine\Lib\Internal\Constants\Products::CREDITCARD ); $transactionResponse = $lib->orders()->preauth()->post( $authorizingTransaction );
捕获预先授权
$referencingTransaction = new \Concardis\Payengine\Lib\Models\Request\Orders\ReferencingTransaction(); $referencingTransaction->setInitialAmount(12); $referencingTransaction->setCurrency("EUR"); $referencingTransaction->setDescription("Capture everything"); $referencingTransaction->setBasket(array( $item )); /* @var $preAuthTransaction \Concardis\Payengine\Lib\Models\Response\Orders\Transaction */ $preAuthTransaction = $transactionResponse->getTransactions()[0]; $preAuthId = $preAuthTransaction->getTransactionId(); $captureResponse = $lib->orders( $transactionResponse->getOrderId() )->transactions($preAuthId)->capture()->post($referencingTransaction);
取消预先授权
$referencingTransaction = new \Concardis\Payengine\Lib\Models\Request\Orders\ReferencingTransaction(); $referencingTransaction->setInitialAmount(12); $referencingTransaction->setCurrency("EUR"); $referencingTransaction->setDescription("Capture everything"); $referencingTransaction->setBasket(array( $item )); /* @var $preAuthTransaction \Concardis\Payengine\Lib\Models\Response\Orders\Transaction */ $preAuthTransaction = $transactionResponse->getTransactions()[0]; $preAuthId = $preAuthTransaction->getTransactionId(); $cancelResponse = $lib->orders( $transactionResponse->getOrderId() )->transactions($preAuthId)->cancel()->post($referencingTransaction);
退款捕获或借记交易
$referencingTransaction = new \Concardis\Payengine\Lib\Models\Request\Orders\ReferencingTransaction(); $referencingTransaction->setInitialAmount(12); $referencingTransaction->setCurrency("EUR"); $referencingTransaction->setDescription("Refund everything"); $referencingTransaction->setBasket(array( $item )); $refundResponse = $lib->orders( $transactionResponse->getOrderId() )->transactions( $captureResponse->getTransactionId() )->refund()->post($referencingTransaction);
获取交易状态
$transactionGetResponse = $lib->orders( $transactionResponse->getOrderId() )->transactions($captureResponse->getTransactionId())->get();
获取订单
$orderGetResponse = $lib->orders( $transactionResponse->getOrderId() )->get();
测试
要运行测试(不包括集成测试),请使用 phpunit 并带上排除组选项。
phpunit tests --exclude-group integrationtests
文档
有关更多信息,请参阅 Payengine 文档:https://docs.payengine.de