Table of Contents
Reply content:
Home Backend Development PHP Tutorial How to perform signature verification on the content of WeChat payment result notification?

How to perform signature verification on the content of WeChat payment result notification?

Sep 11, 2016 am 11:34 AM
java php WeChat WeChat Pay

How to perform signature verification on the content of WeChat payment result notification?

I have received the data returned by Tencent, but I need to verify the signature to ensure that the data has not been tampered with, and then do the corresponding logical processing.
How is this signature verification done?
What are the parameters for signing?
How to fill in the parameter name and parameter value?

This is my signature code:

<code> ///验证签名
         $wx_sign = array();//微信给返回的数据加入一个数组做签名
         $wx_sign['appid']          = $wxdata['appid'];
         $wx_sign['bank_type']      = $wxdata['bank_type'];
         $wx_sign['cash_fee']       = $wxdata['cash_fee'];
         $wx_sign['fee_type']       = $wxdata['fee_type'];
         $wx_sign['is_subscribe']   = $wxdata['is_subscribe'];
         $wx_sign['mch_id']         = $wxdata['mch_id'];
         $wx_sign['nonce_str']      = $wxdata['nonce_str'];
         $wx_sign['openid']         = $wxdata['openid'];
         $wx_sign['out_trade_no']   = $wxdata['out_trade_no'];
         $wx_sign['result_code']    = $wxdata['result_code'];
         $wx_sign['return_code']    = $wxdata['return_code'];
         $wx_sign['time_end']       = $wxdata['time_end'];
         $wx_sign['total_fee']      = $wxdata['total_fee'];
         $wx_sign['trade_type']     = $wxdata['trade_type'];
         $wx_sign['transaction_id'] = $wxdata['transaction_id'];
         
         $wx_sign_all = $this->wechatAppPay->MakeSign($wx_sign);//调用签名函数</code>
Copy after login
Copy after login

My signature function:

<code>    /**
 * 生成签名
 *  @return 签名
 */
public function MakeSign( $params ){
    //签名步骤一:按字典序排序数组参数
    ksort($params);
    $string = $this->ToUrlParams($params);
    //签名步骤二:在string后加入KEY
    $string = $string . "&key=".$this->key;
    //签名步骤三:MD5加密
    $string = md5($string);
    //签名步骤四:所有字符转为大写
    $result = strtoupper($string);
    return $result;
}
</code>
Copy after login
Copy after login

The value of $wx_sign_all is different from the returned sign value!
Is the signature verification done by comparing the self-generated sign with the returned sign?

////////////////////////////The problem has been solved//////////////////// ///

I accidentally wrote a wrong value

Reply content:

How to perform signature verification on the content of WeChat payment result notification?

I have received the data returned by Tencent, but I need to verify the signature to ensure that the data has not been tampered with, and then do the corresponding logical processing.
How is this signature verification done?
What are the parameters for signing?
How to fill in the parameter name and parameter value?

This is my signature code:

<code> ///验证签名
         $wx_sign = array();//微信给返回的数据加入一个数组做签名
         $wx_sign['appid']          = $wxdata['appid'];
         $wx_sign['bank_type']      = $wxdata['bank_type'];
         $wx_sign['cash_fee']       = $wxdata['cash_fee'];
         $wx_sign['fee_type']       = $wxdata['fee_type'];
         $wx_sign['is_subscribe']   = $wxdata['is_subscribe'];
         $wx_sign['mch_id']         = $wxdata['mch_id'];
         $wx_sign['nonce_str']      = $wxdata['nonce_str'];
         $wx_sign['openid']         = $wxdata['openid'];
         $wx_sign['out_trade_no']   = $wxdata['out_trade_no'];
         $wx_sign['result_code']    = $wxdata['result_code'];
         $wx_sign['return_code']    = $wxdata['return_code'];
         $wx_sign['time_end']       = $wxdata['time_end'];
         $wx_sign['total_fee']      = $wxdata['total_fee'];
         $wx_sign['trade_type']     = $wxdata['trade_type'];
         $wx_sign['transaction_id'] = $wxdata['transaction_id'];
         
         $wx_sign_all = $this->wechatAppPay->MakeSign($wx_sign);//调用签名函数</code>
Copy after login
Copy after login

My signature function:

<code>    /**
 * 生成签名
 *  @return 签名
 */
public function MakeSign( $params ){
    //签名步骤一:按字典序排序数组参数
    ksort($params);
    $string = $this->ToUrlParams($params);
    //签名步骤二:在string后加入KEY
    $string = $string . "&key=".$this->key;
    //签名步骤三:MD5加密
    $string = md5($string);
    //签名步骤四:所有字符转为大写
    $result = strtoupper($string);
    return $result;
}
</code>
Copy after login
Copy after login

The value of $wx_sign_all is different from the returned sign value!
Is the signature verification done by comparing the self-generated sign with the returned sign?

////////////////////////////The problem has been solved//////////////////// ///

I accidentally wrote a wrong value

<code>$wx_sign['sign']           = $wxdata['sign'];
$wx_sign_all = $this->wechatAppPay->MakeSign($wx_sign);//调用签名函数</code>
Copy after login

Here we will add sign to the signature string. sign should not participate in the signature.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

What is Cross-Site Request Forgery (CSRF) and how do you implement CSRF protection in PHP? What is Cross-Site Request Forgery (CSRF) and how do you implement CSRF protection in PHP? Apr 07, 2025 am 12:02 AM

In PHP, you can effectively prevent CSRF attacks by using unpredictable tokens. Specific methods include: 1. Generate and embed CSRF tokens in the form; 2. Verify the validity of the token when processing the request.

PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

The Future of PHP: Adaptations and Innovations The Future of PHP: Adaptations and Innovations Apr 11, 2025 am 12:01 AM

The future of PHP will be achieved by adapting to new technology trends and introducing innovative features: 1) Adapting to cloud computing, containerization and microservice architectures, supporting Docker and Kubernetes; 2) introducing JIT compilers and enumeration types to improve performance and data processing efficiency; 3) Continuously optimize performance and promote best practices.

PHP vs. Python: Understanding the Differences PHP vs. Python: Understanding the Differences Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

The difference between H5 and mini-programs and APPs The difference between H5 and mini-programs and APPs Apr 06, 2025 am 10:42 AM

H5. The main difference between mini programs and APP is: technical architecture: H5 is based on web technology, and mini programs and APP are independent applications. Experience and functions: H5 is light and easy to use, with limited functions; mini programs are lightweight and have good interactiveness; APPs are powerful and have smooth experience. Compatibility: H5 is cross-platform compatible, applets and APPs are restricted by the platform. Development cost: H5 has low development cost, medium mini programs, and highest APP. Applicable scenarios: H5 is suitable for information display, applets are suitable for lightweight applications, and APPs are suitable for complex functions.

PHP's Current Status: A Look at Web Development Trends PHP's Current Status: A Look at Web Development Trends Apr 13, 2025 am 12:20 AM

PHP remains important in modern web development, especially in content management and e-commerce platforms. 1) PHP has a rich ecosystem and strong framework support, such as Laravel and Symfony. 2) Performance optimization can be achieved through OPcache and Nginx. 3) PHP8.0 introduces JIT compiler to improve performance. 4) Cloud-native applications are deployed through Docker and Kubernetes to improve flexibility and scalability.

How can you prevent a class from being extended or a method from being overridden in PHP? (final keyword) How can you prevent a class from being extended or a method from being overridden in PHP? (final keyword) Apr 08, 2025 am 12:03 AM

In PHP, the final keyword is used to prevent classes from being inherited and methods being overwritten. 1) When marking the class as final, the class cannot be inherited. 2) When marking the method as final, the method cannot be rewritten by the subclass. Using final keywords ensures the stability and security of your code.

See all articles