搜尋

首頁  >  問答  >  主體

php微信支付回呼url

回呼url 什麼時候才寫邏輯呢 文件對這個沒詳細說明 是不是客戶支付成功 微信才會去訪問回調url 支付失敗 是不會去訪問的呢

大家讲道理大家讲道理2765 天前1171

全部回覆(3)我來回復

  • PHP中文网

    PHP中文网2017-06-26 10:51:04

    我想你可能沒有仔細去看文檔,附上相關 支付業務流程時序圖。

    這張時序圖上比較清楚的說明了:在用戶確認支付,輸入密碼後,微信驗證授權成功時,便會向商家非同步通知付款結果(需要注意,這裡包含支付成功和付款失敗兩種情況) ,商家根據微信傳回的參數更新自己的訂單業務邏輯。

    回覆
    0
  • 某草草

    某草草2017-06-26 10:51:04

    你在手機上付完款,看到的支付完成,這只能算進行了第一步。支付完成才會進行回調,就是把支付的交易流水推送給回調的介面。

     public function noticeFirst() {
    
            Vendor('WXPAYS.lib.WxPayPubHelper');
            $notify = new \Notify_pub();
    
            //存储微信的回调
            $xml = $GLOBALS['HTTP_RAW_POST_DATA'];
            $notify->saveData($xml);
            $arr = $notify->data;
    
    
            //验证签名,并回应微信。
            //对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,
            //微信会通过一定的策略(如30分钟共8次)定期重新发起通知,
            //尽可能提高通知的成功率,但微信不保证通知最终能成功。
            $wxpay_config = array(
                'APPID' => '',
                'MCHID' => '',
                'KEY' => '',
                'APPSECRET' => ''
            );
            if ($notify->checkSign($wxpay_config) === FALSE) {
                $notify->setReturnParameter("return_code", "FAIL"); //返回状态码
                $notify->setReturnParameter("return_msg", "签名失败"); //返回信息
            } else {
                $notify->setReturnParameter("return_code", "SUCCESS"); //设置返回码
            }
            $returnXml = $notify->returnXml();
            echo $returnXml;
    
            //==商户根据实际情况设置相应的处理流程,此处仅作举例=======
            if ($notify->checkSign($wxpay_config) === TRUE) {
    
                if ($arr["return_code"] == "FAIL") {
                    
                } elseif ($arr["result_code"] == "FAIL") {
                    
                } else {
    
                    $info = M('order')->where(array('order_sn' => $arr['out_trade_no']))->find();
    
                    if (!$info) {
                        exit('订单信息有误');
                    }
                    /* 修改订单状态 */
                    $data['status'] = 1;
                    $time_end = substr($arr['time_end'], 0, 4) . '-' . substr($arr['time_end'], 4, 2) . '-' . substr($arr['time_end'], 6, 2) . ' ' . substr($arr['time_end'], 8, 2) . ':' . substr($arr['time_end'], 10, 2). ':' . substr($arr['time_end'], 12, 2);
                    $data['pay_time'] = strtotime($time_end);
                    M('order')->where(array('order_id' => $info['order_id']))->save($data);
                    $total_fee=$arr['total_fee'];
                           
                    /* 添加支付流水 */
                    $_data['appid'] = $arr['appid'];
                    $_data['bank_type'] = $arr['bank_type'];
                    $_data['cash_fee'] = $arr['cash_fee'];
                    $_data['fee_type'] = $arr['fee_type'];
                    $_data['is_subscribe'] = $arr['is_subscribe'];
                    $_data['mch_id'] = $arr['mch_id'];
                    $_data['openid'] = $arr['openid'];
                    $_data['out_trade_no'] = $arr['out_trade_no'];
                    $_data['result_code'] = $arr['result_code'];
                    $_data['return_code'] = $arr['result_code'];
                    $_data['total_fee'] = $total_fee;
                    $_data['trade_type'] = $arr['trade_type'];
                    $_data['transaction_id'] = $arr['transaction_id'];
                    $_data['nonce_str'] = $arr['nonce_str'];
                    $_data['sign'] = $arr['sign'];
                    $_data['time_end'] = $arr['time_end'];
                    $pay_flow_id=M('payment_flow')->add($_data);
                    
                    /* 添加财务流水 */
                    //订单ID
                    $_trans_data['order_id']=$info['order_id'];
                    //会员ID
                    $_trans_data['user_id']=$info['user_id'];
                    //交易流水号
                    $_trans_data['flow_id']=$pay_flow_id;
                    //交易类型
                    $_trans_data['trans_type']='1';
                    //交易渠道
                    $_trans_data['trans_channel']='1';
                    $_trans_data['amount']=$total_fee*0.01;
                    $_trans_data['add_time']=time();
                    M('trans_flow')->add($_trans_data);
                   
                }
    
                //商户自行增加处理流程,
                //例如:更新订单状态
                //例如:数据库操作
                //例如:推送支付完成信息
            }
        }
    
    

    回覆
    0
  • 学习ing

    学习ing2017-06-26 10:51:04

    對,支付的時候設定好回調 url 付款成功後微信會主動調用這個 url 然後處理更新訂單的邏輯

    回覆
    0
  • 取消回覆