food_server/FlyCube/Api/Controller/PayController.class.php
tk 51f61ef9e6 【类 型】:fix
【主	题】:日志输出错误
【描	述】:
	[原因]:不用Logger::debug 有logger参数即可
	[过程]:删除Logger::debug方法调用
	[影响]:
【结	束】

# 类型 包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
2024-06-04 14:04:41 +08:00

106 lines
3.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Api\Controller;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use Yansongda\Pay\Pay;
use Yansongda\Pay\Logger;
class PayController extends PublicController
{
private $openid; // 用户openid
private $session_key; // 用户session_key
protected $config = [
'wechat' => [
'default' => [
'mch_id' => '1625070753', // 必填-商户号
'mch_secret_key' => 'qwertyuiopasdfghjklzxcvbnm123456', // 必填-v3商户秘钥
'mch_secret_cert' => 'C:/phpstudy_pro/cert/apiclient_key.pem', // 必填-商户私钥路径
'mch_public_cert_path' => 'C:/phpstudy_pro/cert/apiclient_cert.pem', // 必填-商户公钥证书路径
'notify_url' => 'https://szdot.top/flycube.php/Api/Pay/notifyCallback', // 必填-回调通知地址
'mini_app_id' => 'wx8347571d6893a383', // 选填-小程序 的 app_id
// 必填-微信平台公钥证书路径
'wechat_public_cert_path' => [
'5878026B07BD819CCC25AC95FA31AE45BB6BC0D9' => 'C:/phpstudy_pro/cert/wechatpay_5878026B07BD819CCC25AC95FA31AE45BB6BC0D9.pem',
],
],
],
'logger' => [ // optional
'enable' => true,
'file' => 'C:/phpstudy_pro/cert/logs/wechat.log',
'level' => 'info', // 建议生产环境等级调整为 info开发环境为 debug
'type' => 'single', // optional, 可选 daily
'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
],
'http' => [ // optional
'timeout' => 5.0,
'connect_timeout' => 5.0,
],
];
/**
* @description: 子类的初始化
*/
public function _initialize()
{
parent::_initialize();
// 解析HTTP请求头中的token
if ($_REQUEST['order_sn']) {
//解构文件头里面的token
$server = isset($_SERVER) ? $_SERVER : "";
$token = $server['HTTP_TOKEN'];
$jwtKey = C('jwtKey'); // jwt密钥
$jwt = JWT::decode($token, new Key($jwtKey, 'HS256')); // 使用密钥和 HS256 算法对 JWT 进行解码
$res_token = (array) $jwt; // 将解码后的对象转换为数组
//token过期
if (empty($res_token)) {
echo json_encode(array('status' => -1, 'msg' => '帐号认证过期!'));
exit();
}
//token检测通过 获取用户id
$this->openid = $res_token['openid'];
$this->session_key = $res_token['session_key'];
}
}
/**
* @description: 发起小程序支付
*/
public function pay()
{
$order = [
'out_trade_no' => time() . '',
'description' => 'subject-测试',
'amount' => [
'total' => 1,
'currency' => 'CNY',
],
'payer' => [
'openid' => $this->openid,
]
];
try {
$pay = Pay::wechat($this->config)->mini($order);
echo json_encode($pay);
} catch (\Exception $e) {
echo 'Error: ' . $e->getMessage();
}
}
public function notifyCallback()
{
$pay = Pay::wechat($this->config);
try {
$data = $pay->callback(); // 是的,验签就这么简单!
} catch (\Exception $e) {
// $e->getMessage();
}
return $pay->success();
}
}