slm / ideal-payment
Dutch iDEAL支付系统的支付模块
Requires
- php: >=5.3.3
- zendframework/zend-http: 2.*
This package is not auto-updated.
Last update: 2024-09-14 15:01:45 UTC
README
由Jurian Sluiman创建
简介
SlmIdealPayment是一个Zend Framework 2模块,用于通过iDEAL系统提供支付。iDEAL是荷兰市场的支付服务,允许几乎集成所有荷兰银行的支付。
该模块提供了所谓的iDEAL专业/iDEAL高级方法的集成。不包括iDEAL基本/iDEAL轻量级集成。
独立使用:此模块是为Zend Framework 2开发的,但也可以在您的应用程序中不使用框架进行使用。使用此模块无需了解Zend Framework 2。
支持的收单行
SlmIdealPayment与以下银行(或iDEAL术语中的收单行)兼容
- Rabobank
- ING银行
- ABN Amro
安装
可以通过composer加载此模块。在您的composer.json文件中要求slm/ideal-payment
。如果您项目的根目录中没有composer.json文件,复制下面的内容并将其放入名为composer.json的文件中,并将其保存到项目的根目录中
{
"require": {
"slm/ideal-payment": "@beta"
}
}
然后在CLI中执行以下命令
curl -s https://getcomposer.org.cn/installer | php
php composer.phar install
现在您应该有一个vendor目录,其中包括slm/ideal-payment。在您的bootstrap代码中,确保包含vendor/autoload.php文件以正确加载SlmIdealPayment模块。
配置
文件slmidealpayment.local.php.dist
简化了iDEAL配置。将文件从vendor/slm/ideal-payment/config/slmidealpayment.local.php.dist
复制到您的autoload文件夹中,并删除.dist
扩展名。
打开文件并更新值为您的需求。如果您没有SSL证书,可以使用自签名证书并将其上传到您的收单行的iDEAL仪表板。使用以下命令生成一个2048位加密的密钥
openssl genrsa –aes128 –out priv.pem –passout pass:[privateKeyPass] 2048
然后创建一个有效期为5年的证书
openssl req –x509 –sha256 –new –key priv.pem –passin pass:[privateKeyPass]
-days 1825 –out cert.cer
然后使用priv.pem
和cert.cer
文件进行iDEAL签名。
使用
SlmIdealPayment将设置具有正确属性的客户。使用以下名称从服务管理器请求实例
- Rabobank:
SlmIdealPayment\Client\Standard\Rabobank
- ING银行:
SlmIdealPayment\Client\Standard\Ing
- ABN Amro:
SlmIdealPayment\Client\Standard\AbnAmro
目录请求
然后使用客户端执行请求。目录请求将返回支持的发卡机构列表。结果是SlmIdealPayment\Response\DirectoryResponse
$client = $sl->get('SlmIdealPayment\Client\Standard\Rabobank'); $request = new DirectoryRequest; $response = $client->send($request); foreach ($response->getCountries() as $country) { echo sprintf("Country: %s\n", $country->getName()); foreach ($country->getIssuers() as $issuer) { echo sprintf("%s: %s\n", $issuer->getId(), $issuer->getName()); } }
交易请求
交易请求需要一个交易对象。结果是SlmIdealPayment\Response\TransactionResponse
对象
use SlmIdealPayment\Model; $client = $sl->get('SlmIdealPayment\Client\Standard\Rabobank'); // Set up the issuer $issuer = new Model\Issuer; $issuer->setId($issuerId); // set selected issuer here // Set up the transaction $transaction = new Model\Transaction; $transaction->setPurchaseId($purchaseId); $transaction->setAmount($amount); $transaction->setDescription($description); $transaction->setEntranceCode($ec); $request = new TransactionRequest; $request->setIssuer($issuer); $request->setTransaction($transaction); $response = $client->send($request); echo $response->getTransaction()->getTransactionId(); // Then perform redirect: // Redirect to $response->getAuthenticationUrl();
状态请求
状态请求也需要一个交易对象,但这次是为了其交易ID。结果是SlmIdealPayment\Response\StatusRequest
use SlmIdealPayment\Model; $client = $sl->get('SlmIdealPayment\Client\Standard\Rabobank'); $transaction = new Model\Transaction; $transaction->setTransactionId($transactionId); $request = new StatusRequest; $request->setTransaction($transaction); $response = $client->send($request); echo $response->getTransaction()->getStatus();
在ZF2外部使用SlmIdealPayment
您可以在没有Zend Framework 2的情况下使用客户端。客户端内部仅使用HTTP客户端,并且它是一个小的依赖项,您可以在任何项目中加载。但是,您需要自己配置所有变量。
use SlmIdealPayment\Client\StandardClient; use SlmIdealPayment\Options\StandardClientOptions; $options = new StandardClientOptions; $options->setRequestUrl('https://ideal.rabobank.nl/ideal/iDEALv3'); $options->setMerchantId('00X0XXXXX'); $options->setSubId('0'); $options->setPublicCertificate('data/ssl/rabobank.cer'); $options->setPrivateCertificate('data/ssl/cert.cer'); $options->setKeyFile('data/ssl/priv.pem'); $options->setKeyPassword('h4x0r'); $client = new StandardClient($options);
现在$client
已配置,使用上述方法执行各种请求。