修正支付回调配置参数

This commit is contained in:
wucongxing 2023-03-06 16:59:51 +08:00
parent d4707488b6
commit fe62ed8614
5 changed files with 73 additions and 15 deletions

View File

@ -2,15 +2,59 @@
namespace App\Controller; namespace App\Controller;
use App\Constants\HttpEnumCode;
use App\Exception\BusinessException;
use App\Services\BaseService; use App\Services\BaseService;
use App\Utils\Log; use App\Utils\Log;
use Extend\Wechat\WechatPay;
use Hyperf\HttpMessage\Stream\SwooleFileStream;
use Hyperf\HttpMessage\Stream\SwooleStream;
use Psr\Http\Message\ResponseInterface;
class CallBackController extends BaseService class CallBackController extends AbstractController
{ {
// 微信支付回调 /**
public function wxPayCallBack(){ * 患者端微信支付回调
$request_params = $this->request->all(); * @return ResponseInterface
Log::getInstance()->info(json_encode($request_params,JSON_UNESCAPED_UNICODE)); * @throws \Throwable
*/
public function patientWxPayCallBack(): ResponseInterface
{
try {
// 处理支付结果事件
$WechatPay = new WechatPay(1);
$app = $WechatPay->createApp();
$server = $app->getServer();
$server->handlePaid(function ($message) {
Log::getInstance()->info("微信患者端支付回调数据:" . json_encode($message,JSON_UNESCAPED_UNICODE));
dump($message);
// $message 为微信推送的通知结果,详看微信官方文档
// 微信支付订单号 $message['transaction_id']
// 商户订单号 $message['out_trade_no']
// 商户号 $message['mchid']
// 具体看微信官方文档...
// 进行业务处理,如存数据库等...
});
// 处理退款结果事件
$server->handleRefunded(function ($message) {
Log::getInstance()->info("微信患者端退款回调数据:" . json_encode($message,JSON_UNESCAPED_UNICODE));
// 同上,$message 详看微信官方文档
// 进行业务处理,如存数据库等...
});
return $server->serve();
}catch (\Exception $e) {
return $this->response->withStatus(500)->withBody(new SwooleStream(strval(json_encode(['code' => 'ERROR', 'message' => $e->getMessage()], JSON_UNESCAPED_UNICODE))));
}
}
// 医生端微信支付回调
public function doctorWxPayCallBack(): ResponseInterface
{
return $this->response->json([]);
} }
// im回调 // im回调

View File

@ -37,17 +37,18 @@ return [
"doctor" => [ "doctor" => [
"app_id" => env('DOCTOR_WECHAT_APP_ID', 'wxc83296720404aa7b'), "app_id" => env('DOCTOR_WECHAT_APP_ID', 'wxc83296720404aa7b'),
"secret" => env('DOCTOR_WECHAT_APP_SECRET', '817665d3763637fe66d56548f8484622'), "secret" => env('DOCTOR_WECHAT_APP_SECRET', '817665d3763637fe66d56548f8484622'),
"notify_url" => env('DOCTOR_WECHAT_NOTIFY_URL', 'callback/wxpay/doctor'),
], ],
"patient" => [ "patient" => [
"app_id" => env('PATIENT_WECHAT_APP_ID', 'wx70a196902e0841b6'), "app_id" => env('PATIENT_WECHAT_APP_ID', 'wx70a196902e0841b6'),
"secret" => env('PATIENT_WECHAT_APP_SECRET', '2671d2f4285180ddec5a5a2b16ed50f2'), "secret" => env('PATIENT_WECHAT_APP_SECRET', '2671d2f4285180ddec5a5a2b16ed50f2'),
"notify_url" => env('PATIENT_WECHAT_NOTIFY_URL', 'callback/wxpay/patient'),
],
"pay" => [
"mch_id" => env('PATIENT_WECHAT_MCH_ID', '1636644248'),
"v3_api_secret" => env('PATIENT_WECHAT_APIv3_SECRET', 'gdxz292sjSOadN3m2pCda03NfCsmNadY'),
] ]
], ],
"pay" => [
"mch_id" => env('PATIENT_WECHAT_MCH_ID', '1636644248'),
"app_id" => env('PATIENT_WECHAT_APP_ID', 'wx70a196902e0841b6'),
"v3_api_secret" => env('PATIENT_WECHAT_APIv3_SECRET', 'gdxz292sjSOadN3m2pCda03NfCsmNadY'),
]
], ],
"alibaba" => [// 阿里 "alibaba" => [// 阿里
"dysms" => [// 阿里云大鱼短信 "dysms" => [// 阿里云大鱼短信

View File

@ -373,9 +373,12 @@ Router::addGroup('/system', function () {
// 回调 // 回调
Router::addGroup('/callback', function () { Router::addGroup('/callback', function () {
// 支付回调 // 支付回调
Router::addGroup('/pay', function () { Router::addGroup('/wxpay', function () {
// 微信支付回调 // 患者端微信支付回调
Router::post('/wx', [CallBackController::class, 'wxPayCallBack']); Router::post('/patient', [CallBackController::class, 'patientWxPayCallBack']);
// 医生端微信支付回调
Router::post('/doctor', [CallBackController::class, 'doctorWxPayCallBack']);
}); });
// im回调 // im回调

View File

@ -6,6 +6,7 @@ use App\Constants\HttpEnumCode;
use App\Exception\BusinessException; use App\Exception\BusinessException;
use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; use EasyWeChat\Kernel\Exceptions\InvalidArgumentException;
use EasyWeChat\Kernel\Exceptions\InvalidConfigException; use EasyWeChat\Kernel\Exceptions\InvalidConfigException;
use EasyWeChat\OfficialAccount\Message;
use EasyWeChat\Pay\Application; use EasyWeChat\Pay\Application;
use Hyperf\Utils\ApplicationContext; use Hyperf\Utils\ApplicationContext;
use Psr\SimpleCache\CacheInterface; use Psr\SimpleCache\CacheInterface;
@ -16,6 +17,7 @@ use Psr\SimpleCache\CacheInterface;
class WechatPay class WechatPay
{ {
protected array $config;// 系统配置 protected array $config;// 系统配置
protected array $pay_config;// 支付系统配置
/** /**
* @param string $user_type * @param string $user_type
@ -30,6 +32,8 @@ class WechatPay
$this->config = config("we_chat.applets.pharmacist"); $this->config = config("we_chat.applets.pharmacist");
} }
$this->pay_config = config("we_chat.applets.pay");
if (empty($this->config)){ if (empty($this->config)){
throw new BusinessException("系统配置错误", HttpEnumCode::SERVER_ERROR); throw new BusinessException("系统配置错误", HttpEnumCode::SERVER_ERROR);
} }
@ -91,11 +95,11 @@ class WechatPay
$app = $this->createApp(); $app = $this->createApp();
$options = [ $options = [
"mchid" => config("we_chat.pay.mch_id"), // <---- 商户号 "mchid" => $this->pay_config['mch_id'], // <---- 商户号
"out_trade_no" => $out_trade_no, // 商户系统内部订单号 "out_trade_no" => $out_trade_no, // 商户系统内部订单号
"appid" => $this->config['app_id'], "appid" => $this->config['app_id'],
"description" => "问诊服务", "description" => "问诊服务",
"notify_url" => "https://dev.hospital.applets.igandanyiyuan.com/callback/pay/wx", "notify_url" => env('DOMAIN_NAME_DEV') . $this->config['notify_url'],
"amount" => [ "amount" => [
"total" => $total,//订单总金额,单位为分。 "total" => $total,//订单总金额,单位为分。
"currency" => "CNY" "currency" => "CNY"
@ -151,4 +155,6 @@ class WechatPay
throw new BusinessException($e->getMessage(), HttpEnumCode::SERVER_ERROR); throw new BusinessException($e->getMessage(), HttpEnumCode::SERVER_ERROR);
} }
} }
} }

View File

@ -7,6 +7,8 @@ cd /data/www/hospital-applets-api || exit
echo " echo "
APP_NAME=gdxz APP_NAME=gdxz
APP_ENV=dev APP_ENV=dev
DOMAIN_NAME_DEV=https://dev.hospital.applets.igandanyiyuan.com/
DOMAIN_NAME_PROD=https://dev.hospital.applets.igandanyiyuan.com/
# [mysql] # [mysql]
DB_DRIVER=mysql DB_DRIVER=mysql
@ -34,11 +36,13 @@ JWT_ALGO=HS256
# [WECHAT] # [WECHAT]
PATIENT_WECHAT_APP_ID=wx70a196902e0841b6 PATIENT_WECHAT_APP_ID=wx70a196902e0841b6
PATIENT_WECHAT_APP_SECRET=2671d2f4285180ddec5a5a2b16ed50f2 PATIENT_WECHAT_APP_SECRET=2671d2f4285180ddec5a5a2b16ed50f2
PATIENT_WECHAT_NOTIFY_URL=callback/wxpay/patient
# [DOCTOR] # [DOCTOR]
# [WECHAT] # [WECHAT]
DOCTOR_WECHAT_APP_ID=wxc83296720404aa7b DOCTOR_WECHAT_APP_ID=wxc83296720404aa7b
DOCTOR_WECHAT_APP_SECRET=817665d3763637fe66d56548f8484622 DOCTOR_WECHAT_APP_SECRET=817665d3763637fe66d56548f8484622
DOCTOR_WECHAT_NOTIFY_URL=callback/wxpay/doctor
# [AMQP] # [AMQP]
AMQP_HOST=42.193.16.243 AMQP_HOST=42.193.16.243