src/Topxia/MobileBundleV2/Alipay/AlipayNotify.php

(开头部分) 1KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

<?php

namespace Topxia\MobileBundleV2\Alipay;

require_once 'lib/alipay_core.function.php';
require_once 'lib/alipay_rsa.function.php';
require_once 'lib/alipay_md5.function.php';

class AlipayNotify
{
    /**
     * HTTPS形式消息验证地址
     */
    public $https_verify_url = 'https://mapi.alipay.com/gateway.do?service=notify_verify&';
    /**
     * HTTP形式消息验证地址
     */
    public $http_verify_url = 'http://notify.alipay.com/trade/notify_query.do?';
    public $alipay_config;

    public function __construct($alipay_config)
    {
        $this->alipay_config = $alipay_config;
    }

    public function AlipayNotify($alipay_config)
    {
        $this->__construct($alipay_config);
    }

    /**
     * 针对notify_url验证消息是否是支付宝发出的合法消息.
     *
     * @return 验证结果
     */
    public function verifyNotify()
    {
        if (empty($_POST)) {
            //判断POST来的数组是否为空
            return false;
        } else {
            //对notify_data解密
            $decrypt_post_para = $_POST;
            if ($this->alipay_config['sign_type'] == '0001') {
                $decrypt_post_para['notify_data'] = rsaDecrypt($decrypt_post_para['notify_data'], $this->alipay_config['private_key_path']);
            }

            //notify_id从decrypt_post_para中解析出来(也就是说decrypt_post_para中已经包含notify_id的内容)
            $doc = new \DOMDocument();
            $doc->loadXML($decrypt_post_para['notify_data']);
            $notify_id = $doc->getElementsByTagName('notify_id')->item(0)->nodeValue;

            //获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息)
            $responseTxt = 'true';
            if (!empty($notify_id)) {
                $responseTxt = $this->getResponse($notify_id);
            }

            //生成签名结果
            $isSign = $this->getSignVeryfy($decrypt_post_para, $_POST['sign'], false);

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。