Woocommerce API ส่งคืน 1 แต่ใช้งานได้

ฉันกำลังพยายามเขียนเกตเวย์การชำระเงินของตัวเองสำหรับ WooCommerce และมันกำลังไปได้สวย ตอนนี้ผู้ให้บริการชำระเงินของฉันสามารถโทรกลับเพื่อตรวจสอบสถานะการชำระเงินได้ ดังนั้นฉันจึงสร้างฟังก์ชันโทรกลับขึ้นมา

 add_action('woocommerce_api_'.strtolower(get_class($this)), array(&$this, 'callback'));

    public function callback()
    {
        mail('[email protected]', 'callback ideal', print_r($_REQUEST,true) . print_r($_SERVER,true));

        echo '+';
        return '+';
    }

เมื่อฉันเรียก URL การติดต่อกลับ ฉันได้รับอีเมลที่อยู่ในฟังก์ชันการโทรกลับ แต่เอาต์พุตที่การโทรกลับให้จะเป็น 1 เสมอ

ฉันค้นหาใน Google ว่า 1 หมายถึงอะไร หมายความว่าการโทรกลับไม่สิ้นสุดหรือไม่ถูกเรียกเลย

ในกรณีของฉัน มันถูกโทรมาเนื่องจากฉันได้รับอีเมล ใครช่วยชี้ฉันไปในทิศทางที่ถูกต้องได้ไหม? ฉันคงขาดอะไรบางอย่างไป

อัปเดต:

เมื่อฉันฆ่าสคริปต์ด้วยการออกจากฟังก์ชันการโทรกลับ ฉันจะสามารถเห็นผลลัพธ์ได้ แต่นี่อาจไม่ใช่วิธีแก้ปัญหาที่เหมาะสม


person David Ericsson    schedule 29.05.2015    source แหล่งที่มา


คำตอบ (1)


สาเหตุอาจเป็นเพราะว่าการกระทำนี้ถูกเรียกผ่านอาแจ็กซ์ ใน WordPress ค่าเริ่มต้นของ Ajax จะส่งคืนฟังก์ชัน die() ก่อนที่ฟังก์ชันจะสิ้นสุด ดังนั้นหากเราไม่ระบุ die() ในฟังก์ชันที่กำหนดเองของเรา มันจะผนวก 1 ด้วยข้อมูลในการโทรกลับของเรา ดังนั้นคุณต้องเรียก die หรือ exit หลังจากเอาต์พุตถูกสะท้อนไปยังเบราว์เซอร์เพื่อป้องกันการส่งคืนและข้อมูลอื่น ๆ ในฟังก์ชันที่กำหนดเองของเราซึ่งถูกเรียกผ่าน Ajax

หวังว่าโซลูชันนี้จะช่วยคุณได้

person Domain    schedule 30.05.2015