แยกวิเคราะห์การชำระเงิน Paypal

ฉันกำลังสร้างการชำระเงินโดยใช้ paypal ฉันดำเนินการเรื่องนี้มาสองวันแล้ว และดูเหมือนจะไม่เข้าใจวิธีรับรายละเอียดการชำระเงินเพื่อใส่ลงในฐานข้อมูลของฉัน

นี่เป็นข้อผิดพลาดที่ฉันได้รับเมื่อพยายามแยกวิเคราะห์ JSON:

Uncaught SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at https://######.com/######/quote.php?fname=######&lname=#####&email=########%40#########.com&tel=######&lot=7920&building=912&lotID=1:106:26
at e.n.dispatch (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:11814)
at e.n.resolve (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:10871)
at e.n.dispatch (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:12180)
at e.n.resolve (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:10871)
at https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:11681
at e.n.dispatch (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:11814)
at e.n.resolve (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:10871)
at e.n.dispatch (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:12180)
Error: Unexpected token o in JSON at position 1
at fr.error (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:62962)
at Object.<anonymous> (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:70732)
at JSON.parse (<anonymous>)
at o (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:70591)
at xr (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:70744)
at Fr.u.on (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:75415)
at Fr (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:75552)
at https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:81671
at Function.e.try (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:14344)
at https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:81468
Error: Unexpected token o in JSON at position 1
at fr.error (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:62962)
at Array.<anonymous> (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:70732)
at JSON.parse (<anonymous>)
at o (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:70591)
at xr (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:70744)
at Fr.u.on (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:75415)
at Fr (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:75552)
at https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:81671
at Function.e.try (https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:14344)
at https://www.paypal.com/sdk/js?client-id=AQ4DspGAAbWgC9Iw0KoI0kWjiEx5xM_gqpAmw1gxFIUha1YDtA_TTmMCaYJH6j58L3HvIlNkN4hD7Wdc&disable-funding=credit,card:2:81468

นี่คือสคริปต์ปุ่ม paypal ของฉัน

<script>
    
    paypal.Buttons({
        style:{
            color:'blue',
            shape:'pill'
        },createOrder: function (data, actions) {
    var cost = parseFloat(document.getElementsByClassName('totamount')[0].innerText.replace('$',''));
    var address = document.getElementsByClassName('product-name')[0].innerText;
    return actions.order.create({
        purchase_units : [{
            amount: {
                name: '####### ######',
                description: "##### #####at: " + address,
                value: cost
            }
        }]
    });
},
onApprove: function (data, actions) {
    return actions.order.capture().then(function (details) {
        console.log(details)
        var paydetails = JSON.parse(details);
        var payee = paydetails.payer.name.given_name + " " + paydetails.payer.name.surname;
        var payid = paydetails.id;
        console.log(payee);
        console.log(payid);
        //document.getElementsByClassName('cart-total')[0].innerHTML= JSON.stringify(details)
        //window.location.replace("https://######.com/######/paymentmade.php?uid=<?php echo $userid ?>")
    })
},
onCancel: function (data) {
    window.location.replace("https://#######.com/#######/quote.php?fname=<?php echo $fname ?> &lname=<?php echo $lname ?>&email=<?php echo $email ?>&tel=<?php echo $tel ?>&lot=<?php echo $lot ?>&building=<?php echo $building ?>&lotID=<?php echo $lotid ?>")
}
    }).render('#paypal-payment-button');</script>
<script src="include/script.js"></script>

ฉันได้ลองแยกวิเคราะห์ Json แล้วและฉันได้อ่าน stackoverflow อื่น ๆ ที่ชี้ไปที่การใช้สิ่งต่าง ๆ เช่น data.payID และสิ่งต่าง ๆ เช่นนั้น แต่สิ่งเหล่านั้นกลับให้ข้อผิดพลาดที่ไม่ได้กำหนดกลับมา


person skivecore    schedule 06.03.2021    source แหล่งที่มา
comment
console log detail.toString() แสดงใน Chrome คืออะไร   -  person onStackOverflowListener    schedule 06.03.2021


คำตอบ (1)


วิธีรับรายละเอียดการชำระเงินเพื่อใส่ลงในฐานข้อมูลของฉัน

หากคุณต้องการจัดเก็บรายละเอียดการชำระเงินไว้ในฐานข้อมูล คุณไม่ควรใช้ actions.order.capture() ในฝั่งไคลเอ็นต์

ให้เปลี่ยนไปใช้การรวมเซิร์ฟเวอร์ที่เหมาะสมแทน

สร้างสองเส้นทางบนเซิร์ฟเวอร์ของคุณ เส้นทางหนึ่งสำหรับ 'สร้างคำสั่งซื้อ' และอีกเส้นทางหนึ่งสำหรับ 'คำสั่งซื้อจับ' บันทึกไว้ที่นี่ เส้นทางเหล่านี้ควรส่งคืนเฉพาะข้อมูล JSON (ไม่มี HTML หรือข้อความ) อันหลังควร (เมื่อสำเร็จ) เก็บรายละเอียดการชำระเงินไว้ในฐานข้อมูลของคุณก่อนที่จะทำการส่งคืน (โดยเฉพาะ purchase_units[0].payments.captures[0].id รหัสธุรกรรม PayPal)

จับคู่สองเส้นทางดังกล่าวกับขั้นตอนการอนุมัติต่อไปนี้: https://developer.paypal.com/demo/checkout/#/pattern/server

person Preston PHX    schedule 06.03.2021