Php WooCommerce的成功URL是什么?

Php WooCommerce的成功URL是什么?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我在我的网站上使用WooCommerce,目前添加了一个网关插件。我只想问一下这个插件中的成功URL、取消URL和IPN URL是什么。让我们以www.domain.com为例 代码如下: add_action('plugins_loaded', 'woocommerce_FdBank_init', 0); function woocommerce_FdBank_init() { class WC_FdBank extends WC_Payment_Gateway { /*

我在我的网站上使用WooCommerce,目前添加了一个网关插件。我只想问一下这个插件中的成功URL、取消URL和IPN URL是什么。让我们以
www.domain.com
为例

代码如下:

add_action('plugins_loaded', 'woocommerce_FdBank_init', 0);

function woocommerce_FdBank_init() {

class WC_FdBank extends WC_Payment_Gateway {

    /*
     * consrtuct
     */
    public function __construct()
    {
        $url = includes_url();
        $this->id       = 'FdBank';
        // some code 
        $this->notify_url   = trailingslashit(home_url());

        add_action('woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
        add_action('woocommerce_thankyou_FdBank', array(&$this, 'thankyou_page'));
        add_action('woocommerce_receipt_FdBank', array(&$this, 'receipt_page'));

        add_action('init', array(&$this, 'check_FdBank_response'));
    add_action( 'woocommerce_api_' . strtolower( get_class( $this ) ), array( $this, 'check_FdBank_response' ) );
    }//function construct

    /*
     * Fields for admin
     */
    public function init_form_fields()
    {
        // some code here 
    }//function init_form_fields

    /*
     * All resonses
     * are opereted here
     * +curl from pay server
     */
    public function check_FdBank_response()
    {
        global $woocommerce;


        ##gettin notify Data from pay server
        if($_SERVER['REQUEST_METHOD'] == 'POST'){
            $aData = $_POST;
            if (!empty($aData)) {
                $order_id = $aData['tran_id'];
                $order_id = preg_replace("/$this->user_code/", '', $order_id, 1);
                $order    = new WC_Order( $order_id );
                if($aData['Tran_Status'] == 'S' && $order->status == 'pending'){
                    $order->update_status('processing');
                    return;
                }
            }
        }

        ## fail Action
        $order_id = $aData['tran_id'];
        $order_id = preg_replace("/$this->user_code/", '', $order_id, 1);
        $order    = new WC_Order( $order_id );
        if($_POST['Tran_Status'] == 'F' || $_POST['Tran_Status'] == 'P'){
            if($order->status !=='completed'){
                if($order->status == 'processing'){
                } else {
                    $order -> update_status('failed');
                    $order -> add_order_note('Failed');
                    $order -> add_order_note("Payment failed in bank");
                    $redirect = $order->get_cancel_order_url();
                    return;
                }
            } else {
                wp_redirect($this->notify_url);
            }
        }//function check_FdBank_response

        ##Success Action
        if($_POST['Tran_Status'] == 'S'){
            if($order->status !=='completed'){
                if($order->status == 'processing'){
                    $order->payment_complete();
                    $order->update_status('completed');
                    $order->add_order_note('FdBank payment successful<br/>Bank Ref Number: '.$transid);
                    $order->add_order_note("Thank you for shopping with us. Your account has been charged and your transaction is successful. We will be shipping your order to you soon.");
                    $woocommerce->cart->empty_cart();
                    $abc = $this->get_return_url( $order );
                    wp_redirect($this->get_return_url( $order ));
                    return;
                }
            } else {
                $order -> update_status('failed');
                $order -> add_order_note('Failed');
                $order -> add_order_note("Payment failed in bank");
                $redirect = $order->get_cancel_order_url();
                wp_redirect($redirect);
                return;
            }
        }
    }

    /*
     * Gererating from fields
     */
    public function payment_fields()
    {
        if ($this->description){
            echo wpautop(wptexturize($this->description));
        }
    }//function payment_fields

    /*
     * thank you page
     */
    public function thankyou_page()
    {
        if ($this->description){
            echo wpautop(wptexturize($this->description));
        }

        ?><h2><?php _e('Our Details', 'woocommerce') ?></h2>
        <ul class="order_details ppay_details"><?php

        $fields = array(
            'ppay_number'=> __('FdBank ', 'woocommerce')
        );
        foreach ($fields as $key=>$value) :
            if(!empty($this->$key)) :
                echo '<li class="'.$key.'">'.$value.': <strong>'.wptexturize($this->$key).'</strong></li>';
            endif;
        endforeach;
        ?></ul><?php
    }//function thankyou_page

    /*
     * simple reciept
     */
    public function receipt_page($order)
    {
        echo '<p>'.__('Thank you for your order, please click the button below to pay with FdBank .', 'woocommerce').'</p>';
        echo $this->generate_FdBank_form( $order );
    }//function receipt_page

    /*
     * generate_FdBank_form
     * form
     */
    public function generate_FdBank_form( $order_id )
    {
        global $woocommerce;
        $order = new WC_Order( $order_id );
    $redirect_url = $order->get_checkout_order_received_url();
        $redirect_url = add_query_arg( 'wc-api', get_class( $this ), $redirect_url );
        $redirect_url = $redirect_url . '&res=1';


        $params = array(
            // some code 
        );

        $lr_args_array = array();
        foreach($params as $key => $value){
            $lr_args_array[] = "<input type='hidden' name='$key' value='$value'/>";
        }



        return '<form id="FdBank"  action="https://sandbox.domain.com/trans.aspx" method="POST" name="process" >' . implode('', $lr_args_array) . '
                        <input type="submit" class="button-alt button" id="submit_FdBank_payment_form" value="'.__('Pay FdBank ', 'woocommerce').'" /> <a class="button cancel" href="'.esc_url( $order->get_cancel_order_url() ).'">'.__('Cancel order &amp; restore cart', 'woocommerce').'</a>
                </form>';

    }//function generate_FdBank_form

    /*
     * proccess
     */
    public function process_payment( $order_id ) {
        global $woocommerce;
        $order = new WC_Order( $order_id );
        return array(
            'result'    => 'success',
            'redirect'  => add_query_arg('order', $order->id, add_query_arg('key', $order->order_key, get_permalink(woocommerce_get_page_id('pay'))))
        );
    }//function process_payment

}
    function woocommerce_add_FdBank_gateway($methods) {
        $methods[] = 'WC_FdBank';
        return $methods;
    }
    add_filter('woocommerce_payment_gateways', 'woocommerce_add_FdBank_gateway' );
}
add_action('plugins_loaded','woocommerce_FdBank_init',0);
功能:商业银行初始化(){
WC\U类银行扩展WC\U支付网关{
/*
*协商
*/
公共函数构造()
{
$url=包含_url();
$this->id='FdBank';
//一些代码
$this->notify_url=trailingslashit(home_url());
添加操作($this->id,数组($this,'process\u admin\u options');
添加操作('woocommerce'u thankyou'FdBank',数组(&$this,'thankyou'page');
添加_操作('woocommerce_receipt_FdBank',数组(&$this,'receipt_page');
添加操作('init',数组(&$this,'check_FdBank_response');
添加操作('woocommerce'u api'.strtolower(get_class($this))、数组('check_FdBank_response');
}//功能结构
/*
*管理员字段
*/
公共函数初始化表单字段()
{
//这里有一些代码
}//函数init_form_字段
/*
*所有原因
*你在这里演出吗
*+从付费服务器
*/
公共职能检查银行响应()
{
全球商业;
##从支付服务器获取通知数据
如果($\u服务器['REQUEST\u METHOD']=='POST'){
$aData=$\邮政编码;
如果(!空($aData)){
$order_id=$aData['tran_id'];
$order\u id=preg\u replace(“/$this->user\u code/”,“”,$order\u id,1);
$order=新WC\U订单($order\U id);
如果($aData['Tran_Status']='S'&&&$order->Status=='pending'){
$order->update_状态(“处理”);
返回;
}
}
}
##失败行为
$order_id=$aData['tran_id'];
$order\u id=preg\u replace(“/$this->user\u code/”,“”,$order\u id,1);
$order=新WC\U订单($order\U id);
如果($_POST['Tran_Status']='F'|$_POST['Tran_Status']]='P'){
如果($order->status!=='completed'){
如果($order->status==“正在处理”){
}否则{
$order->update_status('failed');
$order->add_order_note('Failed');
$order->添加订单票据(“银行付款失败”);
$redirect=$order->get_cancel_order_url();
返回;
}
}否则{
wp\u重定向($this->notify\u url);
}
}//功能检查\u FdBank\u响应
##成功行动
如果($_POST['Tran\u Status']='S'){
如果($order->status!=='completed'){
如果($order->status==“正在处理”){
$order->payment_complete();
$order->update_status('completed');
$order->add_order_note('FdBank payment successful
银行参考号:'。$transid); $order->add_order_note(“感谢您与我们一起购物。您的帐户已被收取费用,您的交易成功。我们将很快将您的订单发送给您。”); $woocommerce->cart->empty_cart(); $abc=$this->get\u return\u url($order); wp_重定向($this->get_return_url($order)); 返回; } }否则{ $order->update_status('failed'); $order->add_order_note('Failed'); $order->添加订单票据(“银行付款失败”); $redirect=$order->get_cancel_order_url(); wp_重定向($redirect); 返回; } } } /* *从田野中挖掘 */ 公共功能支付字段() { 如果($this->description){ echo wpautop(WPTextureize($this->description)); } }//功能付款字段 /* *谢谢你的页面 */ 公共活动谢谢(第页) { 如果($this->description){ echo wpautop(WPTextureize($this->description)); } ?>
在您的银行帐户中设置此url

domain.com/wc-api/wc\u联邦银行

domain.com
替换为您的域名

现在,在确认/取消交易后,您的支付网关将重定向回此url,它将自动调用您的
check\u FdBank\u response()
函数

检查\u FdBank\u response()
现在使用网关响应附带的参数验证事务。 若交易将确认,它将重定向到感谢页面。其他明智的重定向到取消url


这是这段代码的全部工作

对于成功的订单,您应该转到“订单已收到”页面,这是一个自定义端点。您可以在代码中看到成功的url
“重定向”=>添加查询参数('order',$order->id,添加查询参数('key',$order->order\key,get\permalink(woocommerce\u get\u page\id('pay'))
。如果我有一个www.domain.com,那么成功的url是什么,取消url和ipn url?我的意思是www.domain.com/success\u urlWooCommerce没有一个静态的成功url。您可以始终创建一个页面并获得“成功!感谢您的订单”由于content.pages已经可用,即谢谢页面、成功页面。我只想问我在我的帐户中设置了什么url,以便插件得到响应。因为银行要求提供“取消url”和“成功url”