当支付宝和微信支付成功后,我们在回调方法里记录订单状态方便我们去调试和查验支付结果。
第一种将接收的生成日志txt文件,记录信息在本地
functionlog_result($file,$word){
$fp4=fopen($file,r);//只读打开模板,底部;
$str=fread($fp4,filesize($file));//读取模板内容
$str=$str.\n执行日期:.date(Y-m-dH:i:s).\n.$word.\n\n;
$handle=fopen($file,w);//不存在就创建;,创建页面
fwrite($handle,$str);
}
使用方法:
$this-log_result($log_name,【接收到的notify接受信息】:商户订单号:.$trade_no.'|'.$verify_result['out_transaction_id'].;订单号:.$verify_result['out_trade_no'].'状态'.$flag.'钱:'.$money.'id:'.$order_id.\n签名结束\n);
第二种将数据记录在数据库中:
1.创建支付宝支付记录数据表:
CREATETABLE`site_pay_ali`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`pay_scene`tinyint(1)NOTNULLDEFAULT'1'COMMENT'支付场景',
`oid`int(11)NOTNULLCOMMENT'订单id',
`order_number`int(11)NOTNULLCOMMENT'订单号',
`subject`varchar(100)NOTNULLCOMMENT'支付主题',
`buyer_id`varchar(20)NOTNULLCOMMENT'买家支付宝用户号',
`total_amount`varchar(20)NOTNULLCOMMENT'总金额',
`sign_type`varchar(10)NOTNULLCOMMENT'签名类型',
`trade_no`varchar(80)NOTNULLCOMMENT'支付宝交易号',
`app_id`varchar(50)NOTNULLCOMMENT'开发者的app_id',
`buyer_logon_id`varchar(100)NOTNULLCOMMENT'买家支付宝帐号',
`notify_time`varchar(100)NOTNULLCOMMENT'支付时间',
PRIMARYKEY(`id`)
)ENGINE=MyISAMDEFAULTCHARSET=utf8COMMENT='支付宝支付记录';
/**
*增加支付宝支付完成记录
*@param$data
*@paramstring$model
*@returnmixed
*/
publicfunctionaddRecord($data,$model=''){
$model=$model==''?D('Order'):$model;
$oid=$model-where(array('order_number'=$data['out_trade_no']))-field('id')-find();
$savedata=array(
'pay_scene'=$data['pay_scene']?$data['pay_scene']:1,
'oid'=$oid['id'],
'order_number'=$data['out_trade_no'],
'subject'=$data['subject'],
'buyer_id'=$data['buyer_id'],
'total_amount'=$data['total_amount'],
'sign_type'=$data['sign_type'],
'trade_no'=$data['trade_no'],
'app_id'=$data['app_id'],
'buyer_logon_id'=$data['buyer_logon_id'],
'notify_time'=$data['notify_time'],
);
$re=$this-data($savedata)-add();
return$re;
}
2.创建微信支付记录表
CREATETABLE`site_pay_wx`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`pay_scene`tinyint(1)NOTNULLDEFAULT'1'COMMENT'支付场景',
`oid`int(11)NOTNULLCOMMENT'订单id',
`order_number`int(11)NOTNULLCOMMENT'订单号',
`attach`varchar(300)NOTNULLCOMMENT'支付主题',
`bank_type`varchar(20)NOTNULLCOMMENT'付款银行',
`cash_fee`int(11)NOTNULLCOMMENT'现金支付金额',
`fee_type`varchar(20)NOTNULLCOMMENT'货币种类',
`nonce_str`varchar(50)NOTNULLCOMMENT'随机字符串',
`openid`varchar(300)NOTNULLCOMMENT'用户标识',
`sign`varchar(50)NOTNULLCOMMENT'签名',
`is_subscribe`tinyint(1)NOTNULLCOMMENT'是否关注公众账号',
`time_end`varchar(20)NOTNULLCOMMENT'支付时间',
`transaction_id`varchar(50)NOTNULLCOMMENT'微信支付订单号',
`nickname`varchar(300)CHARACTERSETutf8mb4NOTNULLCOMMENT'用户昵称',
``tinyint(1)NOTNULLDEFAULT'1'COMMENT'用户性别',
`city`varchar(50)DEFAULTNULLCOMMENT'用户城市',
`province`varchar(50)DEFAULTNULLCOMMENT'用户省份',
`country`varchar(50)DEFAULTNULLCOMMENT'用户国家',
`headimgurl`varchar(500)DEFAULTNULLCOMMENT'用户头像',
PRIMARYKEY(`id`)
)ENGINE=MyISAMAUTO_INCREMENT=3DEFAULTCHARSET=utf8COMMENT='微信支付信息表';
添加微信支付数据:
/**
*增加微信支付完成记录
*@param$data
*@paramstring$model
*@returnint|mixed
*/
publicfunctionaddRecord($data,$model=''){
$model=$model==''?D('Order'):$model;
$oid=$model-where(array('order_number'=$data['out_trade_no']))-field('id')-find();
$userInfo=S('userInfo');
$savedata=array(
'pay_scene'=$data['pay_scene']?$data['pay_scene']:1,
'oid'=$oid['id'],
'order_number'=$data['out_trade_no'],
'attach'=$data['attach'],
'bank_type'=$data['bank_type'],
'cash_fee'=$data['cash_fee'],
'fee_type'=$data['fee_type'],
'nonce_str'=$data['nonce_str'],
'openid'=$data['openid'],
'sign'=$data['sign'],
'is_subscribe'=$data['is_subscribe'],
'time_end'=$data['time_end'],
'transaction_id'=$data['transaction_id'],
'nickname'=base64_encode($userInfo['nickname']),
''=$userInfo[''],
'city'=$userInfo['city'],
'province'=$userInfo['province'],
'country'=$userInfo['country'],
'headimgurl'=$userInfo['headimgurl'],
);
$re=$this-where(array('order_number'=$data['out_trade_no']))-find();
if(!$re){
$re=$this-data($savedata)-add();
return$re;
}else{
return-1;