payway-ar / php-sdk-venta-online
Payway在线销售SDK
Requires
- php: >=5.3
- dev-master
- V2.0.2
- V2.0.1
- V2.0.0
- V1.7.8
- V1.7.7
- V1.7.6
- V1.7.5
- V1.7.4
- V1.7.3
- V1.7.2
- V1.7.1
- V1.6.1
- v1.5.6
- V1.5.5
- V1.5.0
- V1.4.0
- V1.3.2
- V1.3.1
- V1.3.0
- V1.2.0
- V1.1.0
- V1.0.7
- V1.0.6
- V1.0.5
- V1.0.4
- dev-develop
- dev-feature/FONLP02-2471-operaciones-bimonetaria-en-sd-ks-php
- dev-bugfix/FONLP02-2330
- dev-feature/FONLP02-2140-sdk-php-documentacion-cybersource-device-finger-print
- dev-fix_readme
- dev-release/2.0.1
- dev-release/2.0
- dev-issue-10-08
- dev-update-readme-only-pci
- dev-EzequielAlg-patch-3
- dev-EzequielAlg-patch-2
- dev-EzequielAlg-patch-1
- dev-Update-readme
- dev-bugfix/FPP11-4185-fixing-amount-problems
- dev-merge-master
- dev-feature/FPP11-5653-tokenizacion-en-sdk-php-externa
- dev-feature/FPP11-3363-3DS-payments
- dev-feature/FPP11-1858-Rebranding
- dev-feature/FPP11-475-partial-total-refund
- dev-feature/FPP11-478-token-tokenCS
- dev-FPP18-97
- dev-feature/FPP11-134-environmentQA
- dev-DECD-9811
This package is not auto-updated.
Last update: 2024-09-25 16:21:11 UTC
README
Payway SDK PHP
说明
所有支付和操作的amount字段都是Long类型,将最后两位数字视为金额的小数部分。
用于连接Payway支付网关的模块
简介
通过sdks进行交易流程由两步组成,即客户生成支付令牌和商家处理支付。以下详细列出了实现这些功能的不同语言的sdks。
- 生成支付令牌。可以使用以下任何一种前端sdks
- 处理支付。可以使用以下任何一种后端sdks
范围
PHP SDK为后端应用提供支持,负责商家与Payway API通信,使用其私有1API密钥和客户生成的支付令牌。
要生成支付令牌,客户端应用程序将通过以下任何一种前端sdks与Payway通信
超时时间
标准的超时时间为6秒。在某些情况下,如高并发交易流,超时时间可能介于**20到30秒**之间。如果客户选择配置低于指定值的超时时间,则必须手动取消“已授权”状态的交易。
时序图
交易通过sdks的流程包含两个步骤,即
前端SDK:使用公开访问密钥(public API Key)发送卡敏感数据(PAN、有效期月份和年份、安全码、持卡人姓名以及证件类型和号码)以获取支付令牌,该令牌将允许进行后续交易。
后端SDK:使用私有访问密钥(private API Key)执行支付,发送在第1步生成的令牌以及交易级别的交易标识符、总金额、货币和分期付款数量。
以下是一个支付流程图。
安装
SDK可以从Github或通过以下命令使用composer下载:
composer require decidir2/php-sdk
一旦在项目中安装了SDK,就需要在php.ini中取消注释extension=php_curl.dll,因为连接到网关时使用了PHP的curl类。
支持的PHP版本
SDK实现的版本已针对PHP 5.3以上的版本进行测试。
集成手册
提供在线查询的文档Payway集成手册,其中详细说明了集成过程。在同一文档中,解释了可用的服务和操作,包括示例请求和响应,在此仅将通过SDK调用不同服务的方式进行示例。
环境
PHP SDK允许与Payway的沙盒和产品环境一起工作。环境应在实例化SDK时定义。
$ambient = "test";//valores posibles: "test" , "prod" o "qa" $connector = new \Decidir\Connector($keys_data, $ambient);
使用方法
初始化相应的连接器类。
SDK-PHP允许与Payway的开发和生产环境一起工作。环境应根据以下说明进行实例化。实例化Decidir\Connector
类。该类接收Payway为商家提供的公钥或私钥以及工作环境。
$keys_data = array('public_key' => 'e9cdb99fff374b5f91da4480c8dca741', 'private_key' => '92b71cf711ca41f78362a7134f87ff65'); $ambient = "test";//valores posibles: "test" , "prod" o "qa" $connector = new \Decidir\Connector($keys_data, $ambient);
注意: SDK包含一个完整的测试示例,需要通过浏览器访问,那里可以配置不同的选项。
网关操作
健康检查
此资源允许了解Payway的RESTful API当前状态。
$connector = new \Decidir\Connector($keys_data, $ambient); $response = $connector->healthcheck()->getStatus(); $response->getName(); $response->getVersion(); $response->getBuildTime();
令牌
此资源允许获取支付令牌。
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP"); $data = array( "card_number" => "4509790112684851", "card_expiration_month" => "12", "card_expiration_year" => "30", "card_holder_name" => "Barb", "card_holder_birthday" => "24071990", "card_holder_door_number" => 505, "security_code" => "123", "card_holder_identification" => array( "type" => "dni", "number" => "29123456")); $response = $connector->token()->token($data); $respuesta = new TokenResponse(); $respuesta->setId($response->get('id',null)); $respuesta->setStatus($response->get('status',null)); $respuesta->setCardNumberLength($response->get('card_number_length', null)); $respuesta->setDateCreated($response->get('date_created', null)); $respuesta->setBin($response->get('bin', null)); $respuesta->setLastFourDigits($response->get('last_four_digits', null)); $respuesta->setSecurityCodeLength($response->get('security_code_length', null)); $respuesta->setExpirationMonth($response->get('expiration_month', null)); $respuesta->setExpirationYear($response->get('expiration_year', null)); $respuesta->setDateDue($response->get('date_due', null)); $cardHolder = $response->get('cardholder', null); $respuesta->setType($cardHolder['identification']['type']); $respuesta->setNumber($cardHolder['identification']['number']); $respuesta->setName($cardHolder['name']);
TokenCS
此资源允许获取支付令牌。
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP"); $data = array( "card_number" => "4509790112684851", "card_expiration_month" => "12", "card_expiration_year" => "30", "card_holder_name" => "Barb", "card_holder_birthday" => "24071990", "card_holder_door_number" => 505, "security_code" => "123", "card_holder_identification" => array( "type" => "dni", "number" => "29123456" ), "fraud_detection"=> array( "device_unique_identifier"=> "12345" ), "ip_address"=> "192.168.100.1"); $response = $connector->token()->tokenCs($data); $respuesta = new TokenResponse(); $respuesta->setId($response->get('id',null)); $respuesta->setStatus($response->get('status',null)); $respuesta->setCardNumberLength($response->get('card_number_length', null)); $respuesta->setDateCreated($response->get('date_created', null)); $respuesta->setBin($response->get('bin', null)); $respuesta->setLastFourDigits($response->get('last_four_digits', null)); $respuesta->setSecurityCodeLength($response->get('security_code_length', null)); $respuesta->setExpirationMonth($response->get('expiration_month', null)); $respuesta->setExpirationYear($response->get('expiration_year', null)); $respuesta->setDateDue($response->get('date_due', null)); $cardHolder = $response->get('cardholder', null); $respuesta->setType($cardHolder['identification']['type']); $respuesta->setNumber($cardHolder['identification']['number']); $respuesta->setName($cardHolder['name']);
执行支付
一旦生成并存储了支付令牌,就需要执行包含先前生成的令牌的支付请求。除了支付令牌和交易的自身参数外,商家还必须使用site_transaction_id标识购买。
说明: amount是一个Long类型字段,最后两位数字将被视为小数。
示例
$connector = new \Decidir\Connector($keys_data, $ambient); $data = array( "site_transaction_id" => "12042017_20", "token" => "be211413-757b-487e-bb0c-283d21c0fb6f", "customer" => array( "id" => "customer", "email" => "user@mail.com" "ip_address" => "192.168.100.2" ), "payment_method_id" => 1, "bin" => "450799", "amount" => 500, "currency" => "ARS", "installments" => 1, "description" => "", "establishment_name" => "Nombre establecimiento", "payment_type" => "single", "sub_payments" => array() ); try { $response = $connector->payment()->ExecutePayment($data); $response->getId(); $response->getToken(); $response->getUser_id(); $response->getPayment_method_id(); $response->getBin(); $response->getAmount(); $response->getCurrency(); $response->getInstallments(); $response->getPayment_type(); $response->getDate_due(); $response->getSub_payments(); $response->getStatus(); $response->getStatus_details()->ticket $response->getStatus_details()->card_authorization_code $response->getStatus_details()->address_validation_code $response->getStatus_details()->error $response->getDate(); $response->getEstablishment_name(); $response->getFraud_detection(); $response->getAggregate_data(); $response->getSite_id(); } catch( \Exception $e ) { var_dump($e->getData()); }
PCI交易
以下是一个不带Cybersource的PCI交易的示例。
说明: amount是一个long类型字段,代表以分表示的值。
示例
$connector = new \Decidir\Connector($keys_data, $ambient); $data = array( "site_transaction_id" => "12042017_20", "token" => "be211413-757b-487e-bb0c-283d21c0fb6f", "customer" => array( "id" => "customer", "email" => "user@mail.com" "ip_address" => "192.168.100.2" ), "payment_method_id" => 1, "bin" => "450799", "amount" => 500, "currency" => "ARS", "installments" => 1, "description" => "", "establishment_name" => "Nombre establecimiento", "payment_type" => "single", "sub_payments" => array(), "card_data" => array( "card_number" => "4509790112684851", "card_expiration_month" => "12", "card_expiration_year" => "30", "card_holder_name" => "Barb", "security_code" => "123", "card_holder_identification" => array( "type" => "dni", "number" => "29123456" ), ), "aggregate_data" => array( "name" => "" ), ); try { $response = $connector->payment()->ExecutePayment($data); $response->getId(); $response->getToken(); $response->getUser_id(); $response->getPayment_method_id(); $response->getBin(); $response->getAmount(); $response->getCurrency(); $response->getInstallments(); $response->getPayment_type(); $response->getDate_due(); $response->getSub_payments(); $response->getStatus(); $response->getStatus_details()->ticket $response->getStatus_details()->card_authorization_code $response->getStatus_details()->address_validation_code $response->getStatus_details()->error $response->getDate(); $response->getEstablishment_name(); $response->getFraud_detection(); $response->getAggregate_data(); $response->getSite_id(); } catch( \Exception $e ) { var_dump($e->getData()); }
执行标记化PCI支付
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP"); $data = array( "site_transaction_id" => "tokeniz" . rand(), "establishment_name" => "Store", "spv" => null, "bin" => "4507990", "payment_method_id" => 1, "amount" => 50000, "currency" => "ARS", "installments" => 1, "description" => "PCI pago tokenizado", "payment_type" => "single", "sub_payments" => [], "fraud_detection" => array( "send_to_cs" => false ), "card_data" => array( "card_holder_name" => "Luis Perez", "last_four_digits" => "1112", "card_holder_birthday" => "01012000", "card_holder_door_number" => 666, "card_holder_identification" => array( "type" => "dni", "number" => "41371431" ), "security_code" => "666", "card_expiration_month" => "03", "card_expiration_year" => "30" ), "cardholder_auth_required" => false, "is_tokenized_payment" => true, "token_card_data" => array( "token" => "4507990000004905", "eci" => "05", "cryptogram" => "cryptogram_123467890" ), "aggregate_data" => array( "indicator" => "1", "identification_number" => "30598910045", "bill_to_pay" => "Decidir_Test", "bill_to_refund" => "Decidir_Test", "merchant_name" => "DECIDIR", "street" => "Lavarden", "number" => "247", "postal_code" => "C1437FBE", "category" => "05044", "channel" => "005", "geographic_code" => "C1437", "city" => "Ciudad de Buenos Aires", "merchant_id" => "decidir_Agregador", "province" => "Buenos Aires", "country" => "Argentina", "merchant_email" => "qa@decidir.com", "merchant_phone" => "+541135211111" ) ); try { $response = $connector->payment()->ExecutePayment($data); } catch( \Exception $e ) { var_dump($e->getData()); }
执行带有3ds的单次支付
在这种情况下,需要添加标志"cardholder_auth_required"为true,并传递"auth_3ds_data"对象。
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP"); $data = array( "site_transaction_id" => "{{site_transaction_id}}", "token" => "{{token}}", "payment_method_id" => 1, "bin" => 450799, "amount" => 100, "currency" => "ARS", "installments" => 1, "payment_type" => "single", "sub_payments" => [], "cardholder_auth_required" => true, "auth_3ds_data" => array( "device_type" => "BROWSER", "accept_header" => "application/json", "user_agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)Gecko/20100101", "ip" => "1.12.123.255", "java_enabled" => true, "language" => "es", "color_depth" => "32", "screen_height" => 28, "screen_width" => 4, "time_zone_offset" => 570 ) ); try { $response = $connector->payment()->ExecutePayment($data); } catch( \Exception $e ) { var_dump($e->getData()); }
执行3ds指令
添加包含id和instruction_value属性的对象。
$data = array( "id" => "{{id}}", "instruction_value" => "{{instruction_value}}", ); $connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP"); try{ $response = $connector->threedsChallenge()->threedsChallenge($data); } catch( \Exception $e ) { var_dump($e->getData()); }
捕获支付
对于分两步进行的交易操作,支付捕获或确认可以按以下方式进行。
说明: amount是一个Long类型字段,最后两位数字将被视为小数。
示例
$connector = new \Decidir\Connector($keys_data, $ambient); $data = array( "amount" => 500, ); try { $response = $connector->payment()->CapturePayment($data); } catch( \Exception $e ) { var_dump($e->getData()); }
执行离线支付
一旦生成并存储了离线支付令牌,就需要使用先前生成的令牌执行支付请求。除了支付令牌和交易的自身参数外,商家还必须使用site_transaction_id标识购买。
说明: amount是一个Long类型字段,最后两位数字将被视为小数。
支付简单
示例
$data = array( "site_transaction_id" => "230518_41", "token" => "92a95793-3321-447c-8795-8aeb8a8ac067", "payment_method_id" => 25, "amount" => 1000, "currency" => "ARS", "payment_type" => "single", "email" => "user@mail.com", "invoice_expiration" => "191123", "cod_p3" => "12", "cod_p4" => "134", "client" => "12345678", "surcharge" => 10.01, "payment_mode" => "offline" ); $response = $connector->payment()->ExecutePaymentOffline($data);
Rapipago
示例
$data = array( "site_transaction_id" => "230518_38", "token" => "8e190c82-6a63-467e-8a09-9e8fa2ab6215", "payment_method_id" => 26, "amount" => 1000, "currency" => "ARS", "payment_type" => "single", "email" => "user@mail.com", "invoice_expiration" => "191123", "cod_p3" => "12", "cod_p4" => "134", "client" => "12345678", "surcharge" => 10.01, "payment_mode" => "offline" ); $response = $connector->payment()->ExecutePaymentOffline($data);
支付我的账户
示例
$data = array( "site_transaction_id" => "220518_39", "token" => "9ae1d130-8c89-4c3b-a267-0e97b88fedd0", "payment_method_id" => 41, "amount" => 1000, "currency" => "ARS", "payment_type" => "single", "email" => "user@mail.com", "bank_id" => 1, "sub_payments" => 100, "invoice_expiration" => "191123" ); $response = $connector->payment()->ExecutePaymentOffline($data);
快速收款
示例
$data = array( "site_transaction_id" => "160518_42", "token" => "3df26771-67ab-4a8e-91e2-f1e0b0c559f7", "payment_method_id" => 51, "amount" => 1000, "currency" => "ARS", "payment_type" => "single", "email" => "user@mail.com", "invoice_expiration" => "191123", "second_invoice_expiration" => "191123", "cod_p3" => "1", "cod_p4" => "134", "client" => "12345678", "surcharge" => 10.01, "payment_mode" => "offline" ); $response = $connector->payment()->ExecutePaymentOffline($data);
快速收款
示例
$data = array( "site_transaction_id" => "160518_42", "token" => "3df26771-67ab-4a8e-91e2-f1e0b0c559f7", "payment_method_id" => 51, "amount" => 1000, "currency" => "ARS", "payment_type" => "single", "email" => "user@mail.com", "invoice_expiration" => "191123", "second_invoice_expiration" => "191123", "cod_p3" => "1", "cod_p4" => "134", "client" => "12345678", "surcharge" => 10.01, "payment_mode" => "offline" ); $response = $connector->payment()->ExecutePaymentOffline($data);
支付表单
此服务允许在商业中集成支付表单。使用“validate”资源从操作数据中获取哈希值,然后此哈希值将在调用“form”资源时使用,该资源将返回为每个商业渲染的表单,以便用于和完成支付流程。
示例
//Para este servicio es necesario enviar junto al public y private key el "form_apikey" y "form_site". $keys_data = array( 'form_apikey' => '5cde7e72ea1e430db94d4312346a3744 ', 'form_site' => '00021625' ); $connector = new \Decidir\Connector($keys_data, $ambient); $data = array( "site" => array( "id" => "03101980", //opcional, si no se tiene Merchant no se envía este atributo "transaction_id" => "Swatch op", "template" => array( "id" => 5 ), ), "customer" => array( "id" => "001", "email" => "user@mail.com", ), "payment" => array( "amount" => 1203, "currency" => "ARS", "payment_method_id" => 1, "bin" => "45979", "installments" => 4, "payment_type" => "single", "sub_payments" => array() ), "success_url" => "https://shop.swatch.com/es_ar/", //si no se informa el "redirect_url" es requerido "cancel_url" => "https://swatch.com/api/result", "redirect_url" => "", //si no se informa el "success_url" es requerido "fraud_detection" => array() //si no esta activado cybersource no enviar este atributo ); $response = $connector->payment()->Validate($data);
validate服务响应
$response = $connector->payment()->Validate($data); $response->getHash(); //respuesta: 46711cd8-81f8-4228-96cc-ac3e90c75622"
渲染的表单
获取哈希值后,可以从以下url生成表单:https://api.decidir.com/web/form?hash=46711cd8-81f8-4228-96cc-ac3e90c75622。
支付列表
通过此资源,生成支付列表的请求。此资源允许添加额外的过滤条件
- (可选) offset:返回结果中的偏移量。默认值 = 0。
- (可选) pageSize:返回的最大结果数量。默认值 = 50。
- (可选) siteOperationId:商业层面的唯一交易ID(相当于site_transaction_id)。
- (可选) merchantId:商业的Site ID。
$connector = new \Decidir\Connector($keys_data, $ambient); $data = array("pageSize" => 5); $response = $connector->payment()->PaymentList($data); $response->getLimit(); $response->getOffset(); $response->getResults(); $response->getHas_more();
支付信息
通过此资源,生成请求获取先前完成的支付信息的请求,传递支付ID作为参数。
$connector = new \Decidir\Connector($keys_data, $ambient); $data = array(); $response = $connector->payment()->PaymentInfo($data, '574421'); $response->getId(); $response->getSiteTransaction_id(); $response->getToken(); $response->getUser_id(); $response->getPayment_method_id(); $response->getCard_brand(); $response->getBin(); $response->getAmount(); $response->getCurrency(); $response->getInstallments(); $response->getPayment_type(); $response->getSub_payments(); $response->getStatus(); $response->getStatus_details(); $response->getDate(); $response->getEstablishment_name(); $response->getFraud_detection(); $response->getAggregate_data(); $response->getSite_id();
额外卡信息
添加“card_data”选项可以获取支付所使用的卡的额外信息。
$data = array(); $query = array("expand"=>"card_data"); $response = $connector->payment()->PaymentInfo($data, '873836', $query); $response->getCard_data()
响应
Array ( [card_number] => 450799XXXXXX4905 [card_holder] => Array ( [identification] => Array ( [type] => dni [number] => 27859328 ) [name] => Tarjeta Visa ) )
支付取消/全额退款
通过此资源,生成请求取消/全额退款单个支付的请求,传递支付ID作为参数。
$data = array(); $response = $connector->payment()->Refund($data, '574671'); //574671 es el id de la operacion de compra $response->getId(); $response->getAmount(); $response->getSub_payments(); $response->getStatus();
取消全额退款
通过此资源,生成请求取消/全额退款单个支付的请求,传递支付ID和退款ID作为参数。
$data = array(); $response = $connector->payment()->deleteRefund($data, '574671', '164'); //574671 id de la operacion de compra, 164 id de la devolucion $response->getResponse(); $response->getStatus();
支付部分退款
通过此资源,生成请求部分退款单个支付的请求,传递支付ID和退款金额作为参数。
$data = array( "amount" => 100 ); $response = $connector->payment()->partialRefund($data,'574673'); //574671 id de la operacion de compra $response->getId(); $response->getAmount(); $response->getSub_payments(); $response->getStatus();
取消部分退款
通过此资源,生成请求取消部分退款单个支付的请求,传递支付ID和退款ID作为参数。
$data = array(); $response = $connector->payment()->deleteRefund($data, '574671', '164'); //574671 id de la operacion de compra, 164 id de la devolucion parcial $response->getResponse()); $response->getStatus());
信用卡标记化
此功能允许在用卡购买后,在Decidir的后端生成一个唯一的代币,这允许再次使用此卡购买时,只需提供卡代币和安全码。第一步是执行正常支付,生成的代币将位于响应的“token”字段中。
标记化卡列表
此方法允许了解特定用户的代币化卡列表。调用tokensList方法时需要提供用户名(user_id)。
$data = array(); $response = $connector->token()->tokensList($data, 'prueba'); //prueba, es el usuario dueño de la tarjeta de credito var_dump($response); var_dump($response->getTokens());
执行标记化支付
一旦从代币化卡中获取了代币,就需要执行支付请求。除了支付代币和交易自己的参数外,商业还必须使用“site_transaction_id”和“user_id”识别购买。
$connector = new \Decidir\Connector($keys_data, $ambient); $data = array( "site_transaction_id" => "12042017_20", "token" => "be211413-757b-487e-bb0c-283d21c0fb6f", "user_id" => "pepe", "payment_method_id" => 1, "bin" => "450799", "amount" => 1000, "currency" => "ARS", "installments" => 1, "description" => "", "payment_type" => "single", "sub_payments" => array() ); $response = $connector->payment()->ExecutePayment($data); $response->getId(); $response->getToken(); $response->getUser_id(); $response->getPayment_method_id(); $response->getBin(); $response->getAmount(); $response->getCurrency(); $response->getInstallments(); $response->getPayment_type(); $response->getDate_due(); $response->getSub_payments(); $response->getStatus(); $response->getStatus_details(); $response->getDate(); $response->getEstablishment_name(); $response->getFraud_detection(); $response->getAggregate_data(); $response->getSite_id();
删除标记化卡
服务允许删除生成的卡代币,这可以通过实例化token并使用tokenDelete()方法以及发送代币化卡来实现。
$data = array(); $response = $connector->token()->tokenDelete($data, 'af49025a-f1b7-4363-a1cb-1ed38c3d4d75');
与Cybersource集成
要使用Cybersource欺诈控制服务,在执行支付时,必须发送有关要执行的购买操作的一些额外数据。已定义了五个业务垂直,它们需要特定的参数,以及所有垂直的通用参数。
零售
以下参数应特别发送给零售垂直。此外,还应发送涉及交易中每个产品的特定数据。
示例
$csmdd = array( array( "csmdd17" => "17" ), array( "csmdd18" => "18" ), array( "csmdd19" => "19.999" ) ); $cs_data = array( "send_to_cs" => true, "channel" => "Web", "device_unique_id" => "1234-1234", "bill_to" => array( "city" => "Buenos Aires", "country" => "AR", "customer_id" => "martinid", "email" => "accept@decidir.com.ar", "first_name" => "martin", "last_name" => "perez", "phone_number" => "1547766111", "postal_code" => "1768", "state" => "BA", "street1" => "GARCIA DEL RIO 3333", "street2" => "GARCIA DEL RIO 3333", ), "ship_to" => array( "city" => "Buenos Aires", "country" => "AR", "customer_id" => "martinid", "email" => "accept@decidir.com.ar", "first_name" => "martin", "last_name" => "perez", "phone_number" => "1547766111", "postal_code" => "1768", "state" => "BA", "street1" => "GARCIA DEL RIO 3333", "street2" => "GARCIA DEL RIO 3333", ), "currency" => "ARS", "amount" => 1200, "days_in_site" => 243, "is_guest" => false, "password" => "password", "num_of_transactions" => 1, "cellphone_number" => "12121", "date_of_birth" => "129412", "street" => "RIO 4041", "days_to_delivery" => "55", "dispatch_method" => "storepickup", "tax_voucher_required" => true, "customer_loyality_number" => "123232", "coupon_code" => "cupon22", "csmdds" => $csmdd ); //Datos de productos, array con los diferentes productos involucrados. $cs_products = array( array( "csitproductcode" => "electronic_product", //Código de producto. MANDATORIO. "csitproductdescription" => "NOTEBOOK L845 SP4304LA DF TOSHIBA", //Descripción del producto. MANDATORIO. "csitproductname" => "NOTEBOOK L845 SP4304LA DF TOSHIBA", //Nombre del producto. MANDATORIO. "csitproductsku" => "LEVJNSL36GN", //Código identificador del producto. MANDATORIO. "csittotalamount" => 600, "csitquantity" => 1,//Cantidad del producto. MANDATORIO. "csitunitprice" => 600 //Formato Idem CSITTOTALAMOUNT. MANDATORIO ), array( "csitproductcode" => "default", //Código de producto. MANDATORIO. "csitproductdescription" => "PENDRIVE 2GB KINGSTON", //Descripción del producto. MANDATORIO. "csitproductname" => "PENDRIVE 2GB", //Nombre del producto. MANDATORIO. "csitproductsku" => "KSPDRV2g", //Código identificador del producto. MANDATORIO. "csittotalamount" => 600, //MANDATORIO "csitquantity" => 1, //Cantidad del producto. MANDATORIO. "csitunitprice" => 600 //Formato Idem CSITTOTALAMOUNT. MANDATORIO ) );
要将这些数据纳入初始请求,必须以以下方式实例化Decidir\Data\Cybersource\Retail类的对象。
$cybersource = new Decidir\Cybersource\Retail( $datos_cs, // Datos de la operación $cs_productos, // Datos de los productos ); $connector->payment()->setCybersource($cybersource->getData()); $data = array( "site_transaction_id" => "12042017_20", "token" => "be211413-757b-487e-bb0c-283d21c0fb6f", "user_id" => "usuario", "payment_method_id" => 1, "bin" => "450799", "amount" => 1200, "currency" => "ARS", "installments" => 1, "description" => "", "payment_type" => "single", "sub_payments" => array() ); $response = $connector->payment()->ExecutePayment($data);
票务
以下参数应特别发送给票务垂直。此外,还应发送涉及交易中每个产品的特定数据。
示例
$csmdd = array( array( "csmdd17" => "17" ), array( "csmdd18" => "18" ), array( "csmdd19" => "19.999" ) ); $cs_data = array( "send_to_cs" => true, "channel" => "Web", "device_unique_id" => "1234-1234", "bill_to" => array( "city" => "Buenos Aires", "country" => "AR", "customer_id" => "martinid", "email" => "accept@decidir.com.ar", "first_name" => "martin", "last_name" => "perez", "phone_number" => "1547766111", "postal_code" => "1427", "state" => "BA", "street1" => "GARCIA DEL RIO 4000", "street2" => "GARCIA DEL RIO 4000", ), "currency" => "ARS", "amount" => 1200, "days_in_site" => 243, "is_guest" => false, "password" => "abracadabra", "num_of_transactions" => 1, "cellphone_number" => "12121", "date_of_birth" => "129412", "street" => "RIO 4041", "delivery_type"=> "Pick up", "days_to_event"=> 55, "csmdds" => $csmdd ); //Datos de productos, array con los diferentes productos involucrados. $cs_products = array( array( "csitproductcode" => "concierto2016", "csitproductdescription" => "Popular Concierto 2016", "csitproductname" => "concierto2016", "csitproductsku" => "BS01", "csittotalamount" => 600, "csitquantity" => 1, "csitunitprice" => 6.00 ), array( "csitproductcode" => "concierto2017", "csitproductdescription" => "Popular Concierto 2017", "csitproductname" => "concierto2017", "csitproductsku" => "BS01", "csittotalamount" => 600, "csitquantity" => 1, "csitunitprice" => 600 ) );
要将这些数据纳入初始请求,必须以以下方式实例化Decidir\Data\Cybersource\Ticketing类的对象。
$cybersource = new Decidir\Cybersource\Ticketing( $datos_cs, // Datos de la operación $cs_productos, // Datos de los productos ); $connector->payment()->setCybersource($cybersource->getData()); $data = array( "site_transaction_id" => "12042017_20", "token" => "be211413-757b-487e-bb0c-283d21c0fb6f", "user_id" => "usuario", "payment_method_id" => 1, "bin" => "450799", "amount" => 1200, "currency" => "ARS", "installments" => 1, "description" => "", "payment_type" => "single", "sub_payments" => array() ); $response = $connector->payment()->ExecutePayment($data);
数字商品
以下参数应特别发送给数字商品垂直。此外,还应发送涉及交易中每个产品的特定数据。
示例
$csmdd = array( array( "csmdd17" => "17" ), array( "csmdd18" => "18" ), array( "csmdd19" => "19.999" ) ); $cs_data = array( "send_to_cs" => true, "channel" => "Web", "device_unique_id" => "1234-1234", "bill_to" => array( "city" => "Buenos Aires", "country" => "AR", "customer_id" => "martinid", "email" => "accept@decidir.com.ar", "first_name" => "martin", "last_name" => "perez", "phone_number" => "1547766111", "postal_code" => "1427", "state" => "BA", "street1" => "GARCIA DEL RIO 4000", "street2" => "GARCIA DEL RIO 4000", ), "currency" => "ARS", "amount" => 1200, "days_in_site" => 243, "is_guest" => false, "password" => "abracadabra", "num_of_transactions" => 1, "cellphone_number" => "12121", "date_of_birth" => "129412", "street" => "RIO 4041", "delivery_type"=> "Pick up", "csmdds" => $csmdd ); //lista de productos cybersource $cs_products = array( array( "csitproductcode" => "software2016", "csitproductdescription" => "Software 2016", "csitproductname" => "soft2016", "csitproductsku" => "ST01", "csittotalamount" => 600, "csitquantity" => 1, "csitunitprice" => 6.00 ), array( "csitproductcode" => "software2017", "csitproductdescription" => "Software 2017", "csitproductname" => "soft2017", "csitproductsku" => "ST01", "csittotalamount" => 600, "csitquantity" => 1, "csitunitprice" => 6.00 ) );
要将这些数据纳入初始需求,需要按照以下方式实例化Decidir\Data\Cybersource\DigitalGoods类的一个对象。
$cybersource = new Decidir\Cybersource\DigitalGoods( $datos_cs, // Datos de la operación $cs_productos, // Datos de los productos ); $connector->payment()->setCybersource($cybersource->getData()); $data = array( "site_transaction_id" => "12042017_20", "token" => "be211413-757b-487e-bb0c-283d21c0fb6f", "user_id" => "usuario", "payment_method_id" => 1, "bin" => "450799", "amount" => 1200, "currency" => "ARS", "installments" => 1, "description" => "", "payment_type" => "single", "sub_payments" => array() ); $response = $connector->payment()->ExecutePayment($data);
服务
以下参数应特别发送给数字商品垂直。此外,还应发送涉及交易中每个产品的特定数据。
示例
$csmdd = array( array( "csmdd17" => "17" ), array( "csmdd18" => "18" ), array( "csmdd19" => "19.999" ) ); $cs_data = array( "send_to_cs" => true, "channel" => "Web", "device_unique_id" => "1234-1234", "bill_to" => array( "city" => "Buenos Aires", "country" => "AR", "customer_id" => "martinid", "email" => "accept@decidir.com.ar", "first_name" => "martin", "last_name" => "perez", "phone_number" => "1547766111", "postal_code" => "1768", "state" => "BA", "street1" => "GARCIA DEL RIO 3333", "street2" => "GARCIA DEL RIO 3333", ), "currency" => "ARS", "amount" => 1200, "days_in_site" => 243, "is_guest" => false, "password" => "password", "num_of_transactions" => 1, "cellphone_number" => "12121", "date_of_birth" => "129412", "street" => "RIO 4041", "service_type" => "tiposervicio", "reference_payment_service1" => "reference1", "reference_payment_service2" => "reference2", "reference_payment_service3" => "reference3", "csmdds" => $csmdd ); //lista de productos cybersource $cs_products = array( array( "csitproductcode" => "popblacksabbat2016", "csitproductdescription" => "Popular Black Sabbath 2016", "csitproductname" => "popblacksabbat2016ss", "csitproductsku" => "asas", "csittotalamount" => 600, "csitquantity" => 1, "csitunitprice" => 600 ), array( "csitproductcode" => "popblacksabbat2017", "csitproductdescription" => "Popular Black Sabbath 2017", "csitproductname" => "popblacksabbat2017ss", "csitproductsku" => "asas", "csittotalamount" => 600, "csitquantity" => 1, "csitunitprice" => 600 ) );
要将这些数据纳入初始需求,需要按照以下方式实例化Decidir\Data\Cybersource\Service类的一个对象。
$cybersource = new Decidir\Cybersource\Service( $datos_cs, // Datos de la operación $cs_productos, // Datos de los productos ); $connector->payment()->setCybersource($cybersource->getData()); $data = array( "site_transaction_id" => "12042017_20", "token" => "be211413-757b-487e-bb0c-283d21c0fb6f", "user_id" => "usuario", "payment_method_id" => 1, "bin" => "450799", "amount" => 1200, "currency" => "ARS", "installments" => 1, "description" => "", "payment_type" => "single", "sub_payments" => array() ); $response = $connector->payment()->ExecutePayment($data);
旅行
以下参数需要特别发送,以适用于Travel垂直领域。此外,还需要发送涉及交易的所有乘客的特定数据。
示例
$cs_data = array( "send_to_cs" => true, "channel" => "Web", "device_unique_id" => "1234-1234", "bill_to" => array( "city" => "Buenos Aires", "country" => "AR", "customer_id" => "martinid", "email" => "accept@decidir.com.ar", "first_name" => "martin", "last_name" => "perez", "phone_number" => "1547766111", "postal_code" => "1768", "state" => "BA", "street1" => "GARCIA DEL RIO 3333", "street2" => "GARCIA DEL RIO 3333", ), "currency" => "ARS", "amount" => 1200, "days_in_site" => 243, "is_guest" => false, "password" => "password", "num_of_transactions" => 1, "cellphone_number" => "12121", "date_of_birth" => "129412", "street" => "RIO 4041", "reservation_code" => "GJH784", "third_party_booking" => false, "departure_city" => "EZE", "final_destination_city" => "HND", "international_flight" => true, "frequent_flier_number" => "00000123", "class_of_service" => "class", "day_of_week_of_flight" => 2, "week_of_year_of_flight" => 5, "airline_code" => "AA", "code_share" => "SKYTEAM", "decision_manager_travel" => array( "complete_route" => "EZE-LAX:LAX-HND", "journey_type" => "one way", "departure_date" => array( "departure_time" => "2017-05-30T09:00Z", "departure_zone "=> "GMT-0300" ) ), "airline_number_of_passengers" => 1 ); $cs_passenger = array( array( "email" => "juan@mail.com", "first_name" => "Juan", "last_name" => "Perez", "passport_id" => "412314851231", "phone" => "541134356768", "passenger_status" => "gol", "passenger_type" => "ADT" ) );
要将这些数据纳入初始需求,需要按照以下方式实例化Decidir\Data\Cybersource\Travel类的一个对象。
$cybersource = new Decidir\Cybersource\Travel( $datos_cs, // Datos de la operación $cs_passenger, // Datos de los pasajeros ); $connector->payment()->setCybersource($cybersource->getData()); $data = array( "site_transaction_id" => "12042017_20", "token" => "be211413-757b-487e-bb0c-283d21c0fb6f", "user_id" => "usuario", "payment_method_id" => 1, "bin" => "450799", "amount" => 1200, "currency" => "ARS", "installments" => 1, "description" => "", "payment_type" => "single", "sub_payments" => array() ); $response = $connector->payment()->ExecutePayment($data);
参考表格
支付方式代码
- Visa借记卡在电子商务中不接受部分退款。
接受的货币
注意 虽然DECIDIR的RESTful API支持美元购买,但阿根廷法律仅允许阿根廷比索交易。因此,DECIDIR建议所有交易都以该货币进行。