| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- <?php
- /**
- * Author: 芸众商城 www.yunzshop.com
- * Date: 2019/4/24
- * Time: 下午3:10
- */
- namespace app\payment\controllers;
- use app\common\helpers\Url;
- use app\common\models\AccountWechats;
- use app\common\modules\orderGoods\OrderGoodsCollection;
- use app\common\services\Pay;
- use app\common\services\wechat\lib\WxPayConfig;
- use app\common\services\wechat\lib\WxPayResults;
- use app\payment\PaymentController;
- use Yunshop\ConvergePay\services\NotifyService;
- use app\common\events\withdraw\WithdrawSuccessEvent;
- use Yunshop\StoreCashier\frontend\store\models\PreOrder;
- use Yunshop\StoreCashier\frontend\store\models\PreOrderGoods;
- class HkscanController extends PaymentController
- {
- private $attach = [];
- private $parameter = [];
- private $param = '';
- public function preAction()
- {
- parent::preAction();
- if (empty(\YunShop::app()->uniacid)) {
- $post = $this->getResponseResult();
- $this->attach = $post['attach'];
- \Setting::$uniqueAccountId = \YunShop::app()->uniacid = $this->attach;
- }
- }
- /**
- * @throws \app\common\exceptions\AppException
- * @throws \app\common\exceptions\ShopException
- * @throws \app\common\services\wechat\lib\WxPayException
- */
- public function notifyUrl()
- {
- $post = $this->getResponseResult();
- \Log::info('港版微信支付回调结果', $post);
- $this->param = '微信港版扫码支付';
- $this->log($post);
- //验签
- $result = $this->getSignResult($post);
- if ($result) {
- $data = [
- 'total_fee' => $post['total_fee'] ,
- 'out_trade_no' => $post['out_trade_no'],
- 'trade_no' => 'hk_pay',
- 'unit' => 'fen',
- 'pay_type' => '港版扫码支付',
- 'pay_type_id' => 56
- ];
- $this->payResutl($data);
- echo "success";
- } else {
- echo "fail";
- }
- }
- public function notifyAliUrl()
- {
- $post = $this->getResponseResult();
- \Log::info('支付宝香港H5支付回调结果', $post);
- $this->param = '支付宝香港H5支付';
- $this->log($post);
- //验签
- $result = $this->getSignResult($post);
- if ($result) {
- $data = [
- 'total_fee' => $post['total_fee'] ,
- 'out_trade_no' => $post['out_trade_no'],
- 'trade_no' => 'hk_pay',
- 'unit' => 'fen',
- 'pay_type' => '支付宝香港H5支付',
- 'pay_type_id' => 62
- ];
- $this->payResutl($data);
- echo "success";
- } else {
- echo "fail";
- }
- }
- /**
- * 支付日志
- *
- * @param $post
- */
- public function log($post)
- {
- //访问记录
- Pay::payAccessLog();
- //保存响应数据
- Pay::payResponseDataLog($post['out_trade_no'], $this->param, json_encode($post));
- }
- /**
- * 签名验证
- *
- * @return bool
- */
- public function getSignResult($data)
- {
- $sign = $data['sign'];
- $set = \Setting::get('plugin.hk_pay_set');
- //验签
- unset($data['sign']);
- $string1 = '';
- foreach($data as $k => $v) {
- $string1 .= "{$k}={$v}&";
- }
- $string1 .= "key={$set['key']}";
- if ($sign == strtoupper(md5($string1))) {
- \Log::debug('验签成功');
- return true;
- }
- return false;
- }
- /**
- * 获取回调结果
- *
- * @return array|mixed|\stdClass
- */
- public function getResponseResult()
- {
- $input = file_get_contents('php://input');
- if (!empty($input) && empty($_POST['out_trade_no'])) {
- //禁止引用外部xml实体
- $disableEntities = libxml_disable_entity_loader(true);
- $data = json_decode(json_encode(simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
- libxml_disable_entity_loader($disableEntities);
- if (empty($data)) {
- exit('fail');
- }
- if ($data['status'] != 0 || $data['result_code'] != 0 || $data['pay_result'] != 0) {
- exit('fail');
- }
- $post = $data;
- } else {
- $post = $_POST;
- }
- return $post;
- }
- }
|