Paypal Express Checkout为我开发的wordpress插件

时间:2017-05-07 07:13:53

标签: php wordpress paypal-rest-sdk paypal

情况:我正在开发一个wordpress插件,在http://example.com/edit-order上,客户可以上传图像,修改图像,调整大小并由打印机打印。然后,用户需要根据最终图像尺寸支付好的费用。为了最短的工作流程,我想进行"结帐"同一页面上的按钮。

我希望将paypal作为支付网关集成,我相信paypal快速结账按钮集成将是最简单的'。我已阅读贝宝文件here。让我感到困惑的是它可以集成到客户端REST或服务器端REST,甚至在阅读完所有示例代码和示例之后,我也不知道如何集成到我的插件中。

对于客户端REST:我知道我可以回复onAuthorize'重定向到预定义页面以确认服务器端的付款,但如何将成功付款详细信息传递回服务器?更重要的是,我怎么知道传回的付款细节是来自paypal和正版而不是从恶意网站发送?

对于服务器端REST:这对我来说更有意义从服务器端调用paypal API,但如何将付款金额和订单详细信息从edit-order页面传递到create-payment页面?来自示例代码

    var CREATE_PAYMENT_URL  = 'https://my-store.com/paypal/create-payment';
    var EXECUTE_PAYMENT_URL = 'https://my-store.com/paypal/execute-payment';

    paypal.Button.render({

        env: 'sandbox', // Or 'sandbox'

        commit: true, // Show a 'Pay Now' button

        client: {
            sandbox:    'xxxxxxxxx',
            production: 'xxxxxxxxx'
        }

        payment: function() {
            return paypal.request.post(CREATE_PAYMENT_URL).then(function(data) {
                return data.id;
            });
        },

        onAuthorize: function(data) {
            return paypal.request.post(EXECUTE_PAYMENT_URL, {
                paymentID: data.paymentID,
                payerID:   data.payerID
            }).then(function() {

                // The payment is complete!
                // You can now show a confirmation message to the customer
            });

因为paypal.request.post(CREATE_PAYMENT_URL)似乎只接受一个参数,如何传递订单明细以创建付款?

仅供参考,我之前使用过条形SDK和API,而且它们非常直接......我只是不明白paypal快速结账是怎么做的!特别是对于对我来说毫无意义的客户端REST ...为什么有人想要客户端REST在客户端完成整个过程并且不将任何内容传回服务器以确定是否支付了商品?我错过了什么,不明白?

1 个答案:

答案 0 :(得分:1)

  

对于客户端REST:我知道我可以回复onAuthorize'重定向到预定义页面以确认服务器端的付款,但如何将成功付款详细信息传递回服务器?更重要的是,我怎么知道传回的付款细节是来自paypal和正版而不是从恶意网站发送?

您认为没有100%可靠的方法可以做到这一点。这里推荐的方法是将paymentID和payerID传递回您的服务器,并在那里调用paypal REST api来验证金额。

  

对于服务器端REST:这对我来说更有意义从服务器端调用paypal API,但如何将付款金额和订单详细信息从编辑订单页面传递到创建付款页面?来自示例代码

我推荐的方式是:

  1. 在onAuthrorize中执行execute()
  2. 重定向页面
  3. 拨打服务器端电话以获取付款详情
  4. https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/advanced-payments-api/show-payment-details/

    您还可以选择构建单页应用,并在同一页面上显示客户端execute()返回的详细信息

      

    因为paypal.request.post(CREATE_PAYMENT_URL)似乎只接受一个参数,如何传递订单明细以创建付款?

    您实际上可以传递第二个参数,该参数将作为键值传递给您的服务器:

    paypal.request.post(CREATE_PAYMENT_URL, { foo: 'bar' })

    paypal.request.post实际上只是一个更容易调用ajax调用的包装器。

      

    为什么有人想要客户端REST在客户端完成整个过程并且不将任何内容传回服务器以确定是否支付了商品?

    您仍应进行服务器端验证,以确保该项目已付款。客户端集成使得创建和执行付款变得更加简单。

    有一点需要注意 - 客户端和服务器端集成都使用相同的REST API。所以没有什么可以阻止你们彼此结合使用。客户端调用只是让它更容易做一些这些调用,而无需额外的服务器端逻辑。