jrk / paymentsips-bundle
symfony2 的 paymentsips 组件包
dev-master / 1.0.x-dev
2018-12-11 22:50 UTC
Requires
- php: >=5.3.2
- ext-curl: *
- symfony/framework-bundle: 2.*
This package is auto-updated.
Last update: 2024-08-29 03:47:18 UTC
README
设置
JRKPaymentSipsBundle 需要ATOS api文件夹
- 使用 composer
在项目的 composer.json 文件中将 jrk/paymentsips-bundle 添加为依赖项
{
"require": {
"jrk/paymentsips-bundle": "dev-master"
}
}
更新 composer
php composer update
or
php composer.phar update
- 将 JRKPaymentSipsBundle 添加到应用程序内核
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new JRK\PaymentSipsBundle\JRKPaymentSipsBundle(), ); }
- Yml 配置
# app/config/config.yml jrk_payment_sips: files: sips_pathfile: "%kernel.root_dir%/config/sips/param/pathfile" sips_request: "%kernel.root_dir%/config/sips/bin/static/request" sips_response: "%kernel.root_dir%/config/sips/bin/static/response" sips_logs: "%kernel.root_dir%/logs/sips.log" params: sips_merchant_id: "XXXXXXXXXXXXXXXXXX" sips_currency_code: "EUR" # OR use the currency_code provided by ATOS (978=EUR for example) sips_language: "fr" sips_payment_means: "CB,2,VISA,2,MASTERCARD,2" sips_header_flag: "yes" sips_merchant_country: "fr" links: sips_cancel_return_url: "my_homepage_route" # Route to redirect if the payment is canceled sips_route_response: "my_sips_response" # Route to redirect if the payment is accepted sips_route_auto_response: "my_sips_autoresponse" # Route called by the payment server
- 路由导入
# app/config/routing.yml jrk_payment_sips: resource: "@JRKPaymentSipsBundle/Resources/config/routing.yml" prefix: /payment
- 控制台使用
安装资源
php app/console assets:install
生成路径文件资源 - 您需要指定参数的路径目录(默认使用 [app/config/sips/param])
php app/console jrk:sips:install
例如,使用组件的默认值,您可以这样提取 API
.
|-- app
| `-- config
| `-- sips
| `-- bin
| `-- static
| `-- request
| `-- response
| `-- param
| `-- certif.XXXXXXXXXXXX
| `-- parmcom.XXXXXXXXXXXX
| `-- parmcom.mercanet # if you are using mercanet for example
| `-- pathfile # generated
| `-- Version.txt
使用方法
- 使用服务
打开您的控制器并调用该服务。
<?php $sips_form = $this->get('jrk_paymentsips')->get_sips_request( array( "amount" => 10, "currency_code" => 978 // Override params if you need "order_id" => 12 ), $YourTransactionEntityExample ); ?>
该组件将服务器响应以多维数组的形式传递
在您的响应操作中,如果您调用此: $structuredData = $request->attributes->get('response_data');
,则变量 structuredData 将包含以下数据
- code
- error
- merchant_id
- merchant_country
- amount
- transaction_id
- payment_means
- transmission_date
- payment_time
- payment_date
- response_code
- payment_certificate
- authorisation_id
- currency_code
- card_number
- cvv_flag
- cvv_response_code
- bank_response_code
- complementary_code
- complementary_info
- return_context
- caddie
- receipt_complement
- merchant_language
- language
- customer_id
- order_id
- customer_email
- customer_ip_address
- capture_day
- capture_mode
- data
- order_validity
- transaction_condition
- statement_reference
- card_validity
- score_value
- score_color
- score_info
- score_threshold
- score_profile
属性 "code" 和 "response_code" 将为您提供有关支付状态的更多信息。现在您可以在控制器中使用 "sips_route_response" 方法
<?php // Retrieve the data forwarded by the bundle $responseData = $request->attributes->get('response_data'); $orderId = $responseData['order_id']; // Get your order entity $order = $this ->getDoctrine() ->getEntityManager() ->getRepository('YourBundle:YourEntity') ->find($orderId) ; // Update your entity data, for exemple order state $order->setState("ACCEPTED"); $em=$this->getDoctrine()->getEntityManager(); $em->persist($order); $em->flush(); ?>
控制器示例
<?php class MyController { public function paymentpageAction() { // Initialize your order entity or whatever you want $order = new OrderExample(); // Don't forget to set an amount in array // You can dynamically override config parameters here like currency_code etc... $paymentForm = $this->get('jrk_paymentsips')->get_sips_request( array( 'amount' => $price, 'order_id' => $order->getId() ), $order ); // Render your payment page, you can render the sips form like that for twig : {{ sips_form }} return $this->render('ShopFrontBundle:MyController:paymentpage.html.twig', array( "sips_form"=>$paymentForm ) ); } // Controller set in your config.yml : my_sips_response parameter public function my_sips_responseAction() { $responseData = $request->attributes->get('response_data'); $orderId = $responseData['order_id']; // Find your order in your database $order = $this ->getDoctrine() ->getEntityManager() ->getRepository('YourBundle:YourEntity') ->find($orderId) ; // Store your transaction entity in database for example, or attributes. $order->setState("ACCEPTED"); $em = $this->getEntityManager(); $em->persist($order); $em->flush(); // Notify the user by mail for example /* ... */ // Redirect the user in his history orders for example return $this->redirect($this->generateUrl("user_history_orders")); } } ?>
视图(twig 示例)
Order page :
{{ sips_form|raw }}