eee
This commit is contained in:
@@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace wchat\wx\V3;
|
|
||||||
|
|
||||||
class Config
|
|
||||||
{
|
|
||||||
|
|
||||||
protected string $appId = '';
|
|
||||||
protected string $appSecret = '';
|
|
||||||
protected string $mchId = '';
|
|
||||||
protected string $mchKey = '';
|
|
||||||
protected string $secret = '';
|
|
||||||
protected string $mchCert = '';
|
|
||||||
protected string $SerialNumber = '';
|
|
||||||
protected string $notifyUrl = '';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -147,7 +147,7 @@ class WxV3PaymentNotify extends SmallProgram
|
|||||||
*/
|
*/
|
||||||
public function decode($ciphertext, $nonce, $associated_data): bool
|
public function decode($ciphertext, $nonce, $associated_data): bool
|
||||||
{
|
{
|
||||||
$data = $this->decrypt($ciphertext, $nonce, $associated_data);
|
$data = $this->decrypt($ciphertext, $this->getConfig()->getMchKey(), $nonce, $associated_data);
|
||||||
$this->notifyModel = new NotifyModel();
|
$this->notifyModel = new NotifyModel();
|
||||||
$this->notifyModel->amount = $data['amount'];
|
$this->notifyModel->amount = $data['amount'];
|
||||||
$this->notifyModel->payer = $data['payer'];
|
$this->notifyModel->payer = $data['payer'];
|
||||||
|
|||||||
@@ -135,11 +135,12 @@ trait WxV3PaymentTait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $ciphertext
|
* @param string $ciphertext
|
||||||
|
* @param string $v3Key
|
||||||
* @param string $iv
|
* @param string $iv
|
||||||
* @param string $aad
|
* @param string $aad
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function decrypt(string $ciphertext, string $iv = '', string $aad = ''): array
|
public function decrypt(string $ciphertext, string $v3Key, string $iv = '', string $aad = ''): array
|
||||||
{
|
{
|
||||||
$ciphertext = base64_decode($ciphertext);
|
$ciphertext = base64_decode($ciphertext);
|
||||||
$authTag = substr($ciphertext, $tailLength = 0 - BLOCK_SIZE);
|
$authTag = substr($ciphertext, $tailLength = 0 - BLOCK_SIZE);
|
||||||
@@ -149,7 +150,7 @@ trait WxV3PaymentTait
|
|||||||
if ($tagLength > BLOCK_SIZE || ($tagLength < 12 && $tagLength !== 8 && $tagLength !== 4)) {
|
if ($tagLength > BLOCK_SIZE || ($tagLength < 12 && $tagLength !== 8 && $tagLength !== 4)) {
|
||||||
throw new \RuntimeException('The inputs `$ciphertext` incomplete, the bytes length must be one of 16, 15, 14, 13, 12, 8 or 4.');
|
throw new \RuntimeException('The inputs `$ciphertext` incomplete, the bytes length must be one of 16, 15, 14, 13, 12, 8 or 4.');
|
||||||
}
|
}
|
||||||
$plaintext = openssl_decrypt(substr($ciphertext, 0, $tailLength), ALGO_AES_256_GCM, $this->getConfig()->getKey(), OPENSSL_RAW_DATA, $iv, $authTag, $aad);
|
$plaintext = openssl_decrypt(substr($ciphertext, 0, $tailLength), ALGO_AES_256_GCM, $v3Key, OPENSSL_RAW_DATA, $iv, $authTag, $aad);
|
||||||
if (false === $plaintext) {
|
if (false === $plaintext) {
|
||||||
throw new \UnexpectedValueException('Decrypting the input $ciphertext failed, please checking your $key and $iv whether or nor correct.');
|
throw new \UnexpectedValueException('Decrypting the input $ciphertext failed, please checking your $key and $iv whether or nor correct.');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user