return_code != 'SUCCESS') { Yii::warning('return_code error:' . $postObj->return_code); util::end(); } $orderSn = $postObj->out_trade_no; $total_fee = $postObj->total_fee; $totalFee = $total_fee / 100; $attach = $postObj->attach; //接收流水类型、代金劵 parse_str($attach); $couponId = isset($couponId) ? $couponId : 0; //流水类型 $capitalType = isset($capitalType) ? $capitalType : null; $wxPayType = isset($wxPayType) ? $wxPayType : 0; if (isset($capitalType) == false) { Yii::warning('capitalType empty,orderId:' . $orderSn); util::end(); } $callbackParams = ['wxPayType' => $wxPayType]; $return = xhPayToolService::weixinPay($callbackParams, $orderSn, $totalFee, $capitalType, $couponId);//支付回调流程 if ($return['code'] == 'A0002') { Yii::warning('callback exec and failed,capitalType:' . $capitalType . ' orderSn:' . $orderSn); util::end(); } echo ''; } //支付宝异步通知 public function actionAlipayCallback() { echo '此方法还没有调试'; Yii::$app->end(); header("Content-type: text/html; charset=utf-8"); $alipayWap = Yii::getAlias("@vendor/alipayWap"); $orderSn = $_POST['out_trade_no'];//商户订单号 $pay = xhOrderService::getByOrderSn($orderSn); if (empty($pay)) { Yii::warning('没有找到订单:orderSn:' . $orderSn); util::end(); } $orderId = $pay['id'];//商户订单号 $merchantId = isset($pay['merchantId']) ? $pay['merchantId'] : 0; $extend = MerchantExtendService::getByMerchantId($merchantId); $config = [ //应用ID,您的APPID。 'app_id' => $extend['alipayPId'], //商户私钥,您的原始格式RSA私钥 'merchant_private_key' => $extend['alipayKey'], //异步通知地址 'notify_url' => Yii::$app->params['frontUrl'] . "/notice/alipay-async", //同步跳转 'return_url' => "", //编码格式 'charset' => "UTF-8", //签名方式 'sign_type' => "RSA2", //支付宝网关 'gatewayUrl' => "https://openapi.alipay.com/gateway.do", //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 'alipay_public_key' => $extend['alipayPublicKey'], ]; require_once($alipayWap . '/wappay/service/AlipayTradeService.php'); require_once($alipayWap . '/wappay/buildermodel/AlipayTradeQueryContentBuilder.php');//查询接口 $arr = $_POST; $alipaySevice = new \AlipayTradeService($config); $alipaySevice->writeLog(var_export($_POST, true)); $result = $alipaySevice->check($arr); Yii::info('check:' . $result); if ($result) {//验证成功 $tradeNo = $_POST['trade_no'];//支付宝交易号 $tradeStatus = $_POST['trade_status'];//交易状态 $totalFee = $_POST['total_amount']; $appId = $_POST['app_id']; $passbackParams = $_POST['passback_params']; $passbackParams = urldecode($passbackParams); parse_str($passbackParams);//接收流水类型、代金劵 $couponId = isset($couponId) ? $couponId : 0; $capitalType = isset($capitalType) ? $capitalType : null;//流水类型 $RequestBuilder = new \AlipayTradeQueryContentBuilder(); $RequestBuilder->setTradeNo($tradeNo); $queryResult = $alipaySevice->Query($RequestBuilder); $alipayId = $queryResult->buyer_user_id; $alipayAccount = $queryResult->buyer_logon_id;//买家的支付宝帐号,不完整,带*号 $alipayParams = ['alipayId' => $alipayId, 'alipayAccount' => $alipayAccount]; if (isset($capitalType) == false) { Yii::warning('capitalType empty, orderId:' . $orderId); util::end(); } if ($config['app_id'] != $appId) { Yii::warning('app_id disagree, orderId:' . $orderId . ' config app_id:' . $config['app_id'] . ' appId:' . $appId); util::end(); } if ($tradeStatus == 'TRADE_FINISHED' || $tradeStatus == 'TRADE_SUCCESS') { $callbackParams = []; $return = xhPayToolService::alipay($callbackParams, $orderSn, $totalFee, $capitalType, $couponId, $alipayParams);//支付回调流程 if ($return['code'] == 'A0002') { Yii::warning('callback exec and failed,capitalType:' . $capitalType . ' orderId:' . $orderId); util::end(); } } //请不要修改或删除 echo "success"; util::end(); } //请不要修改或删除 echo "fail"; } //配送单配送状态更新通知接口 /* * JSON 格式 { "ToUserName": "toUser", "FromUserName": "fromUser", "CreateTime": 1546924844, "MsgType": "event", "Event": "update_waybill_status", "shopid": "123456", "shop_order_id": "123456", "waybill_id": "123456", "action_time": 1546924844, "order_status": 102, "action_msg": "", "shop_no": "123456", "agent": { "name": "xxx", "phone": "1234567" } } */ public function actionExpressCallBack() { $postStr = file_get_contents('php://input');//接收微信服务器返回的json消息体 if (empty($postStr)) { util::end(); } $postData = json_decode($postStr,true); //订单号 $orderSn = $postData['shop_order_id']; //TODO 更改当前订单的快递状态 } }