buuum / redsys
使用redsys soap的简单PHP类
Requires
- php: >=5.5.0
Requires (Dev)
Suggests
- redsys/messages: Allows messages errors from error code
README
安装
系统要求
要使用Buuum\Redsys,您需要PHP >= 5.5.0,但建议使用最新的稳定版本。
Composer
Buuum\redsys可在Packagist上找到,并可以使用Composer进行安装
composer require buuum/redsys
手动安装
只要它遵循PSR-0或PSR-4标准,您就可以使用自己的自动加载器。只需将src目录内容放入您的vendor目录中。
文档
https://canales.redsys.es/canales/ayuda/documentacion/Manual%20integracion%20para%20conexion%20por%20Redireccion.pdf https://canales.redsys.es/canales/ayuda/documentacion/Manual%20integracion%20para%20conexion%20por%20Web%20Service.pdf
通过重定向进行支付
选项1.- payment.php(银行网页中的visa卡号)
$redsys = new \Buuum\Redsys($redsys_key); try { $redsys->setMerchantcode($redsys_merchant_code); $redsys->setAmount($amount); $redsys->setOrder($order); $redsys->setTerminal($redsys_merchant_terminal); $redsys->setCurrency(978); $redsys->setTransactiontype('0'); $redsys->setMethod('C'); $redsys->setNotification('https:///notification.php'); //Url de notificacion $redsys->setUrlOk('https:///payment_ok.php'); $redsys->setUrlKo('https:///payment_ko.php'); $redsys->setTradeName('Store S.L'); $redsys->setTitular('John Doe'); $redsys->setProductDescription('Product description'); $form = $redsys->createForm(); } catch (Exception $e) { echo $e->getMessage(); die; } echo $form;
选项2.- payment.php(网页中的visa卡号)
$redsys = new \Buuum\Redsys($redsys_key); try { $redsys->setMerchantcode($redsys_merchant_code); $redsys->setAmount($amount); $redsys->setOrder($order); $redsys->setTerminal($redsys_merchant_terminal); $redsys->setCurrency(978); $redsys->setPan($visa_number); $redsys->setExpiryDate($visa_expiry); $redsys->setCVV($visa_cvv); $redsys->setMerchantDirectPayment(true); $redsys->setTransactiontype('0'); $redsys->setMethod('C'); $redsys->setNotification('https:///notification.php'); //Url de notificacion $redsys->setUrlOk('https:///payment_ok.php'); $redsys->setUrlKo('https:///payment_ko.php'); $redsys->setTradeName('Store S.L'); $redsys->setTitular('John Doe'); $redsys->setProductDescription('Product description'); $form = $redsys->createForm(); } catch (Exception $e) { echo $e->getMessage(); die; } echo $form;
notification.php
$redsys = new \Buuum\Redsys($redsys_key); try{ $result = $redsys->checkPaymentResponse($_POST); catch (Exception $e) { echo $e->getMessage(); die; } var_dump($result);
#### 通知结果输出
有错误
array ( 'error' => true, 'code' => 'SIS041', 'Ds_Date' => '05/03/2017', 'Ds_Hour' => '08:40', 'Ds_SecurePayment' => '1', 'Ds_Card_Country' => '724', 'Ds_Amount' => '1000', 'Ds_Currency' => '978', 'Ds_Order' => '99699629', 'Ds_MerchantCode' => 'xxxxxx', 'Ds_Terminal' => '001', 'Ds_Response' => '0000', 'Ds_MerchantData' => '', 'Ds_TransactionType' => '0', 'Ds_ConsumerLanguage' => '1', 'Ds_AuthorisationCode' => '875284', )
无错误
array ( 'error' => false, 'code' => 0, 'Ds_Date' => '05/03/2017', 'Ds_Hour' => '08:40', 'Ds_SecurePayment' => '1', 'Ds_Card_Country' => '724', 'Ds_Amount' => '1000', 'Ds_Currency' => '978', 'Ds_Order' => '99699629', 'Ds_MerchantCode' => 'xxxxxxx', 'Ds_Terminal' => '001', 'Ds_Response' => '0000', 'Ds_MerchantData' => '', 'Ds_TransactionType' => '0', 'Ds_ConsumerLanguage' => '1', 'Ds_AuthorisationCode' => '875284', )
通过Web服务进行支付
支付
$redsys = new \Buuum\Redsys($redsys_key); try { $redsys->setMerchantcode($redsys_merchant_code); $redsys->setAmount($amount); $redsys->setOrder($order); $redsys->setTerminal($redsys_merchant_terminal); $redsys->setCurrency(978); $redsys->setPan($visa_number); $redsys->setExpiryDate($visa_expiry); $redsys->setCVV($visa_cvv); $redsys->setTransactiontype('A'); $redsys->setIdentifier('REQUIRED'); $result = $redsys->firePayment(); } catch (Exception $e) { echo $e->getMessage(); die; } var_dump($result);
通过标识符进行支付
$redsys = new \Buuum\Redsys($redsys_key); try { $redsys->setMerchantcode($redsys_merchant_code); $redsys->setAmount($amount); $redsys->setOrder($order); $redsys->setTerminal($redsys_merchant_terminal); $redsys->setCurrency(978); $redsys->setTransactiontype('A'); $redsys->setIdentifier($client_identifier); $result = $redsys->firePayment(); } catch (Exception $e) { echo $e->getMessage(); die; }
从订单中退款
$redsys = new \Buuum\Redsys($redsys_key); try { $redsys->setMerchantcode($redsys_merchant_code); $redsys->setAmount($amount); $redsys->setOrder($order); $redsys->setTerminal($redsys_merchant_terminal); $redsys->setCurrency(978); $redsys->setTransactiontype(3); $result = $redsys->firePayment(); } catch (Exception $e) { echo $e->getMessage(); die; }
#### 结果输出
有错误
array ( 'error' => true, 'code' => 'SIS0051', 'DS_MERCHANT_MERCHANTCODE' => 'xxxxx', 'DS_MERCHANT_AMOUNT' => '1000', 'DS_MERCHANT_ORDER' => '9932453', 'DS_MERCHANT_TERMINAL' => '001', 'DS_MERCHANT_CURRENCY' => '978', 'DS_MERCHANT_PAN' => '4548812049400004', 'DS_MERCHANT_EXPIRYDATE' => '2012', 'DS_MERCHANT_CVV2' => '123', 'DS_MERCHANT_TRANSACTIONTYPE' => 'A', 'DS_MERCHANT_IDENTIFIER' => 'REQUIRED', )
无错误
array ( 'error' => false, 'code' => '0', 'Ds_Amount' => '1000', 'Ds_Currency' => '978', 'Ds_Order' => '1234524534', 'Ds_Signature' => 'Xfh84TG95t7XRKQV/UGyhH+lXd6PFuGPeU25fgNpGUc=', 'Ds_MerchantCode' => 'xxxxxx', 'Ds_Terminal' => '1', 'Ds_Response' => '0000', 'Ds_AuthorisationCode' => '415446', 'Ds_TransactionType' => 'A', 'Ds_SecurePayment' => '0', 'Ds_Language' => '1', 'Ds_ExpiryDate' => '2012', 'Ds_Merchant_Identifier' => '4597a931b735a7d8e55252e25894fa6dd3a9bed4', 'Ds_MerchantData' => array (), 'Ds_Card_Country' => '724', )
获取错误消息
要获取错误消息,请使用类https://github.com/eusonlito/redsys-Messages
$error = \Redsys\Messages\Messages::getByCode($result['code']); # error output array ( 'code' => 'SIS0051', 'message' => 'Ds_Merchant_Order Número de pedido repetido', 'msg' => 'MSG0001', 'detail' => '', )
授权协议
MIT授权协议(MIT)
版权(c)2016
以下任何人获得本软件及其相关文档副本(“软件”)的副本,均免费授予在软件上不受限制地处理的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供副本的个人做上述事项,前提是
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和不侵犯版权的保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论是在合同、侵权或其他法律行为中产生的,无论是由于软件或其使用或其他方式。