/**
* 修改支付结果,添加订单表的悲观行级锁,预防回调并发的可能
*
* @param [string] $TransID 订单id
* @return void
* @author HappyCrab
*/
public function setPay($TransID)
{
Db::startTrans();
try {
$Order_data = Db::name('xxx')->where(['TransID' => $TransID])->lock(true)
->field("*")
->find();
if (!$Order_data || $Order_data['status'] == 1) {
// 如果订单不存在 或者 订单已经支付过了
Db::rollback();
return false;
}
if(isset($_GET['test']) && $_GET['test'] == 1){
sleep(10);
}
Db::name('pay_order')->where(['TransID' => $TransID])->setField("Zt", 1);
Db::commit();
} catch (\Exception $e) {
Db::rollback();
return false;
}
return $Order_data;
}