2

您好我正在使用以下设置

  • 创建贝宝商家和客户沙盒帐户
  • 配置的贝宝 REST API 应用程序
  • 向我的服务器添加了一个 webhook url,并已验证它可以使用webhook 模拟器工作
  • 使用了此处找到的 Express Checkout javascript 实现

在沙箱中查看通知时,我能够成功付款,但从未触发过 webhook ???

下面是我使用的 javascript 实现的示例,请不要将它嵌入到冷融合脚本文件中,因此使用主题标签。

`

var items = #paypalItems#;

// Render the PayPal button
paypal.Button.render({

    env: '#application.config.paypal.bSandbox ? "sandbox" : "production"#', // sandbox | production
    commit: true,

    //style the button
    style: {
        label: 'pay'
    },

    // PayPal Client IDs - replace with your own
    client: {
        sandbox:    '#application.config.paypal.sandbox_key#',
        production: '#application.config.paypal.live_key#'
    },

    // Wait for the PayPal button to be clicked
    payment: function(data, actions) {

        // Make a client-side call to the REST api to create the payment
        return actions.payment.create({
            payment: {
                transactions: [{
                    amount: {
                        total: #trim(numberFormat( application.oCart.getTotal(bDiscount=1,bShipping=1) , "99999999.99" ))#,
                        currency: "AUD",
                        details: {
                        subtotal: #trim(numberFormat( application.oCart.getTotal() - application.oCart.getAmountGST( amount=application.oCart.getTotal(bDiscount=1), addGST=false ), "99999999.99" ))#,
                        tax: #trim(numberFormat(application.oCart.getAmountGST( amount=application.oCart.getTotal(bDiscount=1), addGST=false ), "99999999.99" ))#,
                        shipping: #trim(numberFormat( application.oCart.oShipping.getCartShippingAmount(country=session.fcbshoppingCart.order.shippingCountry), "99999999.99" ))#
                        }
                    },
                    invoice_number: "#orderNumber#",
                    item_list: {
                        items:  items,
                        shipping_address: {
                        recipient_name: "#session.fcbshoppingCart.customer.firstName# #session.fcbshoppingCart.customer.lastName#",
                        line1: "#session.fcbshoppingCart.order.shippingAddress1#",
                        line2: "#session.fcbshoppingCart.order.shippingAddress2#",
                        city: "#session.fcbshoppingCart.order.shippingSuburb#",
                        country_code: "#paypalCountryCode#",
                        postal_code: "#session.fcbshoppingCart.order.shippingPostCode#",
                        state: "#session.fcbshoppingCart.order.shippingState#"
                        }
                    }
                }]
            }
        });
    },

    // Wait for the payment to be authorized by the customer
    onAuthorize: function(data, actions) {

      console.log( "Paypal Authorize:", data );

        // Execute the payment
        return actions.payment.execute().then(function(payment) {

            console.log( "Paypal Response:", payment );

            //payment has been accepted so we can now generate an order
            $.ajax({
                type: "get",
                url: "/apps/paypal/createOrder.cfm",
                data: {
                    transactionNumber: "#orderNumber#",
                    payPalPaymentId: data.paymentID
                },
                dataType: "json",
                success: function( res ) {
                    console.log('edharry create order data', res);

                    if( res.BPAYMENTPROCEED ) {
                        $('##paypal-message').addClass("show success").text('Payment Successfully Complete!');
                        //lets redirect to the checkout success page.
                        window.location.href = window.location.origin + '/shop/checkout/confirmation?productOrder=' + res.PRODUCTORDER.OBJECTID;
                    } else {
                        //need to handle a failed transaction
                        $('##paypal-message').addClass("show failure").text('Payment did not complete on server!');
                    }
                },
                error: function() {
                    //lets show an error
                    $('##paypal-message').addClass("show failure").text('Payment did not complete on server!');
                }
            })

            $('##paypal-message').addClass("show success").text('Payment Successfully Complete!');
        });
    },

    onCancel: function(data) {
        console.log('The payment was cancelled!');
    }

}, '##paypal-button-container');`
4

1 回答 1

2

这是 Paypal 的一个持续问题。他们知道这个问题,目前正在努力解决这个问题。

于 2017-07-04T10:37:01.240 回答