本文整理汇总了PHP中AlipayNotify::queryNotify方法的典型用法代码示例。如果您正苦于以下问题:PHP AlipayNotify::queryNotify方法的具体用法?PHP AlipayNotify::queryNotify怎么用?PHP AlipayNotify::queryNotify使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AlipayNotify
的用法示例。
在下文中一共展示了AlipayNotify::queryNotify方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: AlipayNotify
/**
* 经销商采购订单--返回通知结果
*
* @author Garbin
* @param array $order_info
* @param bool $strict
* @return array
*/
function dealer_notify($order_info, $strict = false)
{
if (empty($order_info)) {
$this->_error('order_info_empty');
return false;
}
/* 初始化所需数据 */
$notify = $this->_get_notify();
$alipayNotify = new AlipayNotify($this->alipay_config);
/* 验证来路是否可信 */
if ($strict) {
/* 严格验证 */
$verify_result = $alipayNotify->queryNotify($notify['notify_id']);
if (!$verify_result) {
/* 来路不可信 */
$this->_error('notify_unauthentic');
return false;
}
}
/* 验证通知是否可信 */
$sign_result = $alipayNotify->verifySign($notify);
if (!$sign_result) {
/* 若本地签名与网关签名不一致,说明签名不可信 */
$this->_error('sign_inconsistent');
return false;
}
/* ----------通知验证结束---------- */
/* ----------本地验证开始---------- */
/* 验证与本地信息是否匹配 */
/* 这里不只是付款通知,有可能是发货通知,确认收货通知 */
if ($order_info['ship_bill_no'] != $notify['out_trade_no']) {
/* 通知中的订单与欲改变的订单不一致 */
$this->_error('order_inconsistent');
return false;
}
if ($order_info['amount'] != $notify['total_fee']) {
/* 支付的金额与实际金额不一致 */
$this->_error('price_inconsistent');
return false;
}
//至此,说明通知是可信的,订单也是对应的,可信的
/* 按通知结果返回相应的结果 */
$order_no = '';
switch ($notify['trade_status']) {
case 'WAIT_BUYER_PAY':
//等待买家付款
// $order_status = DORDER_PENDING; // 10
$order_status = DORDER_READY;
// 0
break;
case 'WAIT_SELLER_SEND_GOODS':
//买家已付款,等待卖家发货
// $order_status = DORDER_ACCEPTED; //
$order_status = DORDER_PENDING;
// 订单改为付款状态 10
$trade_no = $notify['trade_no'];
break;
case 'WAIT_BUYER_CONFIRM_GOODS':
//卖家已发货,等待买家确认
// $order_status = DORDER_SHIPPED;
$order_status = DORDER_ACCEPTED;
// 订单状态改为 已发货 20 , 发货状态:DORDER_SELLED 改为10
break;
case 'TRADE_FINISHED':
//交易结束
/* 说明是第三方担保交易,交易结束 */
$order_status = DORDER_SHIPPED;
// 订单买家确认收货,订单状态完成。 status =30 ,take_status = 30, abn_status = 30
break;
case 'TRADE_CLOSED':
//交易关闭
$order_status = DORDER_CANCLED;
// 废弃订单 status =30 ,take_status = 30,,abn_status = 40
break;
default:
$this->_error('undefined_status');
return false;
break;
}
switch ($notify['refund_status']) {
case 'REFUND_SUCCESS':
//退款成功,取消订单
$order_status = DORDER_CANCLED;
break;
}
/* 记录日志 */
$this->put_log();
return array('target' => $order_status, 'trade_status' => $notify['trade_status'], 'trade_no' => $trade_no);
}