雪巴 / etransactions-bundle
E-transactions支付网关(农业信贷银行)。
1.1.1
2021-03-24 19:36 UTC
Requires
- php: >=7.0
- symfony/symfony: ^3.2
This package is auto-updated.
Last update: 2024-09-26 18:35:57 UTC
README
此捆绑包允许在symfony项目中实现一个与E-transactions协同工作的支付解决方案。E-transactions是由以下银行“农业信贷银行”提供的支付方式。不要犹豫,联系我以改进它;)
安装
步骤1:使用Composer导入
使用composer
{
"require": {
"snowbaha/etransactions-bundle": "~1.0"
}
}
步骤2:启用插件
在kernel中启用捆绑包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Snowbaha\EtransactionsBundle\SnowbahaEtransactionsBundle(), ); }
步骤3:配置捆绑包
必填字段 PARAMETER
# E-Transactions (don't forget the validation of the HMAC key 'certif_test/prod' by email) etransactions_id: ~ etransactions_site: ~ etransactions_certif_test: ~ etransactions_certif_prod: ~
必填字段 CONFIG
snowbaha_etransactions: # Credentials identifiant: "%etransactions_id%" site: "%etransactions_site%" rang: "01" #change it with your RANK # Keys key_dev: "%etransactions_certif_test%" key_prod: "%etransactions_certif_prod%" # SETTING OPTIONAL env_mode: TEST # TEST by default - Possible values : TEST / PRODUCTION # check_signature: false # /!\ KEEP IT to false because it doesn't work and i DONT KNOW WHY (let me know if you have a solution) false by Default (if you want to check the signature of the IPN Bank
如何使用
控制器
创建交易
要启动一个新的交易,您需要在控制器中创建一个动作并调用snowbaha.etransactions服务。所有必填字段都使用它们的默认值。您可以在app/config/config.yml文件中配置交易的所有常用字段。
要查看哪些字段可用,请参阅PDF官方文档。
服务方法
init($order_id, $amount, $email_buyer, $currency = 978)允许您指定交易id、金额、买家邮箱和交易货币。setOptionnalFields(array)允许您指定任何字段。
示例
/** * @Route("/initiate-payment/id-{id}", name="pay_online") * @Template() */ public function payOnlineAction($id) { // ... $etransactions = $this->get('snowbaha.etransactions') ->init(99, 100, 'buyer@buy.com') ->setOptionnalFields(array( 'PBX_ERREUR' => 'http://www.example.com/error' )) ; return $this->render('YOURBUNDLEBundle:Etransactions:pay_online.html.twig', array( 'paymentUrl' => $etransactions->getPaymentUrl(), 'fields' => $etransactions->getFields(), )); }
处理来自服务器的响应
此路由将由E-Transactions服务调用,以更新您关于支付状态的信息。这是正确处理支付验证的唯一方式。
服务方法
responseBankServer(Request)用于更新交易状态(在数据库中)- 您将获得一个包含以下内容的数组
- sucessPayment: (应为true以验证支付)
- amount: (您的pbx_total变量)
- ref: (您的pbx_cmb变量)
- error:E; (如果有错误,则为
00000) - auto:A; (授权)
- sign:K (用于检查的签名)
示例
// YOUR CONTROLLER /** * THIS ROUTE have to be public to allow the bank access, it is the URL you will provide to your account * @Route("/payment/verification") * @param Request $request */ public function paymentVerificationAction(Request $request) { // ... $responseBank = $this->get('snowbaha.etransactions')->responseBankServer($request); $id_order = (int)$responseBank['ref']; $Order = $this->get('app.provider.order')->getOneByID( $id_order ); // Success if($responseBank['sucessPayment'] === true && !is_null($Order)) : $Order->setState("order.state.success_payment"); $Order->setPaymentError(0); // Email notification $this->get('app.mailing.order')->sendNewOrderNotif($Order); elseif( !is_null($Order) ) : // Error $Order->setState('order.state.success_payment_error'); $Order->setPaymentError($responseBank['error']); endif; //... }
模板
这是payOnlineAction()模板可能的样子。您可以使用paiementFormtwig函数根据服务中创建并返回的getFields()函数自动生成表单。
<html> <i class="fa fa-refresh fa-spin margin-top margin-bottom" style="font-size: 50px"></i> {# With http://fontawesome.io/icons/ #} <h3>Redirect to the paiement page...</h3> <form action="{{ paymentUrl }}" method="POST" id="etransactions-form"> {{ paiementForm(fields) }} {# If no JS, show the button to submit#} <noscript> <input type="submit" value="Pay"> </noscript> </form> </html> <script type="text/javascript"> document.getElementById('etransactions-form').submit(); </script>
LOG
当您遇到支付错误时,您可以使用日志: ENV.etransaction.log