说的无益,看代码就行了 更多支付方式请到快速入门 | Pay
不会使用微信支付的请去看THINKPHP Yansongda 微信H5支付,公众号支付这篇已作出详细方法
下面看回调方法的使用
public function notify()
{
$pay = Pay::wechat($this->config); // 跟支付的配置一样
try{
$verifyData = $pay->verify()->toArray(); // 是的,验签就这么简单!
error_log(print_r($verifyData,1),3,'weixinpay1.log'); // 打印回调数据
// TODO::参照如下内容 修改自己的业务逻辑
// 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号;
// 2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);
// 3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email);
// 4、其它业务逻辑情况 修改订单状态、[发短信、推送 请使用事件机制]等
// updateWechatPayNotify() 自定义业务逻辑处理方法
if (true === $this->updateWechatPayNotify($verifyData)) {
return $pay->success();
}
error_log(print_r($data,1),3,'weixinpay2.log');
} catch (\Exception $e) {
$err = [
'errorCode' => $e->getCode(),
'errorMsg' => $e->getMessage(),
'errorFile' => $e->getFile() . ' [ ' . $e->getLine() . ' ]',
'errorData' => $e->getTraceAsString(),
];
error_log('aliPayNotify Error' . PHP_EOL . \json_encode($err),3,LOG_PATH.'weixinpay_error.log');
}
// 已失败
return 'Failed';
}
订单处理方法 updateWechatPayNotify
//更新订单状态
protected function updateWechatPayNotify($verifyData){
$outTradeNo = $verifyData['out_trade_no'];
// 查找订单
$orderInfo = Db::name('order')->where(['order_no'=>$outTradeNo, 'pay_status'=>0])->find();
if (empty($orderInfo)) {
return true;
}
// 金额对比 以分为单位
$orgAmount = $verifyData['cash_fee']/100; // 回调金额
// 修改订单状态
$orderData = [
'transaction_id' => $verifyData['transaction_id'],
'pay_status' => 1,
'pay_time' => time(),
'pay_sum' => $orgAmount,
'pay_source' => 'xcx',
];
Db::startTrans();
$res = Db::name('order')->where(['id'=>$orderInfo['id']])->update($orderData);
if($res){
// 更新用户过期时间
Db::commit();
return true;
}else{
Db::rollback();
return false;
}
}