2017-03-06 1 views
0

Ich entwickle ein Zahlung Gateway-Plugin (für Cybersource Payment) für WooCommerce. Ich habe es fast am Ende entwickelt, aber eine Sache fängt mich ab und das ist der Teil nach der Weiterleitung von der Payment Gateway Website nach erfolgreicher Bezahlung zurück zu meiner WordPress-Seite (Kaufbestätigungsseite - Neue WordPress-Seite erstellt mit Vorlage in wp- content/themes/mein-theme/order-confirm-template.php). Aber ich weiß nicht, wie man die Antwort behandelt, die von der Zahlungswebsite zurückkommt. Ich suchte nach einigen Hook-Hook-Haken, aber nichts funktionierte. Ich fand, dass es einen Haken woocommerce_thankyou gibt, aber das funktioniert auch nicht für mich.Behandlung Antwort und Bestellung in woocommerce nach Umleitung zurück von der Zahlung Website

Kann mir jemand hier in diesen zwei Punkten helfen unter

1) Wie Antwort zu handhaben und erteilte den Auftrag ordnungsgemäß und die Elemente aus dem Warenkorb entfernen, wenn wieder nach erfolgreicher Zahlung von Gateway-Website kommen.

2) Welche Seite sollte ich von der Gateway-Website zurückleiten? Zurück zur selben Checkout-Seite oder zu einer benutzerdefinierten Seite, genau wie ich es getan habe.

Jede Hilfe mit Code wird sehr geschätzt. Vielen Dank.

Antwort

0

ich den folgenden Code in meinem Plugin verwendet haben, ich hoffe, dies für Sie zu :)

Zuerst diesen Code hinzufügen arbeitet,

function receipt_page($order){ 
    echo $this -> ResponceHandler($order); 
} 

Jetzt ist der Code für ResponceHandler ($ Reihenfolge) Funktion,

public function ResponceHandler($order_id){ 




      if(!isset($_POST['ResponseCode'])){ 

      global $woocommerce; 
     echo '<p>'.__('Thank you for your order, please click the button below to pay with XYZ', 'woocommerce').'</p>'; 
      $order = new WC_Order($order_id); 

      $order_id = $order_id.'_'.date("ymds"); 



      $post_data = get_post_meta($order_id,'_post_data',true); 

      update_post_meta($order_id,'_post_data',array()); 
###Your Form Code HERE### 
    echo '<form><input value="Proceed To Payment" type="submit" /> </form>'; 
} 
###Haandle the response### 
if(isset($_POST['ResponseCode'])) 
      { 
      if($_POST['ResponseCode']==0){ 
            global $woocommerce; 
            session_start(); 
            $_SESSION['post']=$_POST; 

            $order = new WC_Order($order_id); 

            $order_id = $order_id.'_'.date("ymds"); 



            $post_data = get_post_meta($order_id,'_post_data',true); 

            update_post_meta($order_id,'_post_data',array()); 
               if($order->status != 'processing'){ 

               $order ->status ='Processing'; 
               $order->payment_complete(); 

               $order -> add_order_note('XYZ Payment Gateway <br>Response message :'.$_POST['ResponseMessage'].'<br>Payment ID :'.$_POST['PaymentID'].'<br>Merchant Reference Number :'.$_POST['MerchantRefNo'].'<br>Transaction ID :'.$_POST['TransactionID'].''); 

               add_post_meta($order->id, '_paymentid', sanitize_text_field($_POST['PaymentID'])); 
               add_post_meta($order->id, '_trno', sanitize_text_field($_POST['TransactionID'])); 
               $woocommerce -> cart -> empty_cart(); 
               wp_redirect($order->get_checkout_order_received_url()); 

              } 
           } 
      else { 

               if($order->status != 'failed'){ 
               $order ->status ='failed'; 
           echo "Payment failed!<br><br><br>Possible Error : ".$_POST['ResponseMessage']."<br>PaymentID: ".$_POST['PaymentID']."<br><br><br>We request you to save these details for further reference. <br>You can always pay for this order by clicking on your name in the top right corner and visiting your orders section."; } 
       } 

      } 





} 
Verwandte Themen