/**
  * 发起hpp请求流程,加密解密
  * @param $url
  * @param BaseApiRequest $requestObj
  * @param $timeout
  * @return mixed
  * @throws ServiceException
  */
 private static function makeHppRequest($url, BaseApiRequest $requestObj, $timeout)
 {
     //AES加密
     $encrypted = AesUtils::encrypt($requestObj->toJsonString(), Config::SIGN_TOKEN);
     //响应,解密
     $rawResp = self::postBodyRequest($url, $encrypted, ["X-mt-sno: " . Config::X_MT_SNO, 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0'], $timeout);
     $responseObj = json_decode(AesUtils::decrypt($rawResp, Config::SIGN_TOKEN), true);
     return $responseObj;
 }
<?php

require_once './sdk/Hpp.Config.php';
require_once './sdk/Hpp.AesUtils.php';
$payload = AesUtils::encrypt('test', Config::SIGN_TOKEN);
$ch = curl_init(Config::URL_OF_PAY);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//POST
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-mt-sno: ' . Config::X_MT_SNO, 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0']);
//header
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
//body
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
var_dump(curl_getinfo($ch));
var_dump($data);
// Check if any error occurred
if (!curl_errno($ch)) {
    $info = curl_getinfo($ch);
    echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
}
// Close handle
curl_close($ch);