PayHandler.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. namespace common\pay\rengong;
  3. use backend\models\Config;
  4. use backend\models\Deposit;
  5. use backend\models\SyncDesposit;
  6. use common\helpers\Utils;
  7. use common\pay\BasePayHandler;
  8. use Yii;
  9. class PayHandler extends BasePayHandler
  10. {
  11. public $name; //机构名称
  12. public $merNo; //卡号
  13. public $bankName; //开户行
  14. /**
  15. * @inheritdoc
  16. */
  17. public function init()
  18. {
  19. parent::init();
  20. $config = Config::findOne(1);
  21. if ($this->name == null) {
  22. $this->name = $config['rengong_name'];
  23. }
  24. if ($this->merNo == null) {
  25. $this->merNo = $config['rengong_merno'];
  26. }
  27. if ($this->bankName == null) {
  28. $this->bankName = $config['rengong_bankname'];
  29. }
  30. }
  31. /**
  32. * @param array $deposit
  33. * @param array $params
  34. * @return string
  35. */
  36. public function outPay($deposit, $params = [])
  37. {
  38. $data = [];
  39. //提交的参数
  40. $data['name'] = $this->name; //机构名称
  41. $data['order_num'] = $deposit['order_sn']; //订单号码
  42. $data['pay_amount'] = sprintf("%.2f",$deposit['rmb']); //订单金额
  43. $data['merNo'] = $this->merNo; //银行卡号
  44. $data['bankName'] = $this->bankName; //开户银行
  45. $data['backUrl'] = $this->notifyUrl; //异步通知地址
  46. return self::createGetHtml($data);
  47. }
  48. /**
  49. * @param array $data
  50. * @return bool
  51. */
  52. public function handleNotify($data)
  53. {
  54. $merOrderId = trim($data['order']);
  55. $reuslt = Deposit::find()->where(['order_sn' => $merOrderId])->asArray()->limit(1)->one();
  56. if($reuslt){
  57. $res = Deposit::updateAll(['type' => 1], "order_sn = $merOrderId");
  58. return true;
  59. }else{
  60. return false;
  61. }
  62. }
  63. public function outNotify($success)
  64. {
  65. if ($success == true) {
  66. $raw_fail = array('code' =>1, 'msg' => '成功');
  67. return json_encode($raw_fail);
  68. } else {
  69. return "FAIL";
  70. }
  71. }
  72. /**
  73. * @param array $data
  74. * @return bool
  75. */
  76. public function handleReturn($data)
  77. {
  78. $merOrderId = trim($data['order']);
  79. $reuslt = Deposit::find()->where(['order_sn' => $merOrderId])->asArray()->limit(1)->one();
  80. if($reuslt){
  81. $res = Deposit::updateAll(['type' => 1], "order_sn = $merOrderId");
  82. }
  83. return true;
  84. }
  85. public function outReturn($success)
  86. {
  87. }
  88. public static function createGetHtml($params)
  89. {
  90. $encodeType = isset ($params ['encoding']) ? $params ['encoding'] : 'UTF-8';
  91. $jqueryJs = '/ui/js/sand/jquery-1.7.2.min.js';
  92. $html = <<<eot
  93. <html>
  94. <head>
  95. <meta http-equiv="Content-Type" content="text/html; charset={$encodeType}" />
  96. <script type="text/javascript" src="{$jqueryJs}"></script>
  97. </head>
  98. <body>
  99. <div style="width: 30%;margin: 10% auto;padding: 30px;background: linear-gradient(to top right, #4eb07d 0%, #add19e 25%, #9ecf68 100%);border-radius: 10px;">
  100. <p>支付金额:<span style="color:red;">{$params['pay_amount']}元</span></p>
  101. <p>银行卡号:<span>{$params['merNo']}</span></p>
  102. <p>开户银行:<span>{$params['bankName']}</span></p>
  103. <p>支付机构:<span>{$params['name']}</span></p>
  104. <p>订单号码:<span>{$params['order_num']}</span></p>
  105. <p style="font-size: 15px;text-align: right;color: red;">温馨提示:<span>转账备注请填写订单号码(切记)</span></p>
  106. <p style="font-size: 15px;text-align: right;color: red;"><span>单笔转账不超过20万/一笔(切记)</span></p>
  107. <button style="background:#9ecf68;" id="button">我已成功支付</button>
  108. </div>
  109. </body>
  110. <script>
  111. $('#button').click(function(){
  112. $.ajax({
  113. type:'post',
  114. url:'{$params['backUrl']}',
  115. data:{"order":"{$params['order_num']}"},
  116. dataType:'json',
  117. success:function(data){
  118. if(data.code==1){
  119. alert("我们会尽快审核,请等待.");
  120. }
  121. },
  122. error:function(e){
  123. }
  124. });
  125. })
  126. </script>
  127. </html>
  128. eot;
  129. return $html;
  130. }
  131. }