用于我开发的 wordpress 插件的 Paypal Express Checkout
Paypal Express Checkout for my developing wordpress plugin
情况:我正在开发一个 wordpress 插件,在 http://example.com/edit-order
上,客户可以上传图像、修改图像、调整图像大小并由打印机打印。然后,用户将需要根据最终图像大小为良好的基础付费。为了最短的工作流程,我希望在同一页面上也有“结帐”按钮。
我希望将 paypal 集成为支付网关,我相信 paypal 快速结帐按钮集成将是 'easiest'。我已经阅读了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)
似乎只接受一个参数,如何传递订单详细信息以创建付款?
仅供参考,我之前使用过 stripe SDK 和 API,它们非常简单...我只是不明白 paypal express 结账是如何完成的!特别是对于客户端 REST,这对我来说毫无意义......为什么有人想要客户端 REST,它在客户端完成整个过程并且不将任何内容传回服务器以确定是否支付了商品?我错过了什么没听懂?
For client-side REST: I know I can callback on 'onAuthorize' to redirect to a pre-defined page to confirmed payment on server-side, but how do I pass the success payment detail back to the server? and more importantly, how do I know the payment detail passed back is from paypal and genuine instead of being sent from malicious site?
你是对的,没有 100% 可靠的方法来做到这一点。这里推荐的方法是将 paymentID 和 payerID 传回您的服务器,并在那里调用 paypal REST api 以验证金额。
For server-side REST: this make more sense to me to call the paypal API from server side, but how do I pass the payment amount and order detail from edit-order page to the create-payment page? from the example code
我推荐的方式是:
- 在 onAuthrorize
中执行 execute()
- 重定向页面
- 进行服务器端调用以获取付款详细信息
您还可以选择构建单页应用程序,并在同一页面上显示客户端 execute()
返回的详细信息
since paypal.request.post(CREATE_PAYMENT_URL) seems to accept only one argument, how to pass along the order detail in order to create the payment?
您实际上可以传递第二个参数,该参数将作为键值传递给您的服务器:
paypal.request.post(CREATE_PAYMENT_URL, { foo: 'bar' })
paypal.request.post
实际上只是一个使 ajax 调用更容易的包装器。
why would anyone want to client REST which finish the whole process in client side and pass nothing back to server to determine if the good is paid for?
您仍应进行服务器端验证以确保该项目已付款。客户端集成只是让创建和执行付款变得更简单。
需要注意一件事——客户端和服务器端集成使用相同的 REST api。因此,没有什么能阻止您将两者结合使用。客户端调用只是让其中一些调用变得更容易一些,而无需额外的服务器端逻辑。
情况:我正在开发一个 wordpress 插件,在 http://example.com/edit-order
上,客户可以上传图像、修改图像、调整图像大小并由打印机打印。然后,用户将需要根据最终图像大小为良好的基础付费。为了最短的工作流程,我希望在同一页面上也有“结帐”按钮。
我希望将 paypal 集成为支付网关,我相信 paypal 快速结帐按钮集成将是 'easiest'。我已经阅读了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)
似乎只接受一个参数,如何传递订单详细信息以创建付款?
仅供参考,我之前使用过 stripe SDK 和 API,它们非常简单...我只是不明白 paypal express 结账是如何完成的!特别是对于客户端 REST,这对我来说毫无意义......为什么有人想要客户端 REST,它在客户端完成整个过程并且不将任何内容传回服务器以确定是否支付了商品?我错过了什么没听懂?
For client-side REST: I know I can callback on 'onAuthorize' to redirect to a pre-defined page to confirmed payment on server-side, but how do I pass the success payment detail back to the server? and more importantly, how do I know the payment detail passed back is from paypal and genuine instead of being sent from malicious site?
你是对的,没有 100% 可靠的方法来做到这一点。这里推荐的方法是将 paymentID 和 payerID 传回您的服务器,并在那里调用 paypal REST api 以验证金额。
For server-side REST: this make more sense to me to call the paypal API from server side, but how do I pass the payment amount and order detail from edit-order page to the create-payment page? from the example code
我推荐的方式是:
- 在 onAuthrorize 中执行
- 重定向页面
- 进行服务器端调用以获取付款详细信息
execute()
您还可以选择构建单页应用程序,并在同一页面上显示客户端 execute()
返回的详细信息
since paypal.request.post(CREATE_PAYMENT_URL) seems to accept only one argument, how to pass along the order detail in order to create the payment?
您实际上可以传递第二个参数,该参数将作为键值传递给您的服务器:
paypal.request.post(CREATE_PAYMENT_URL, { foo: 'bar' })
paypal.request.post
实际上只是一个使 ajax 调用更容易的包装器。
why would anyone want to client REST which finish the whole process in client side and pass nothing back to server to determine if the good is paid for?
您仍应进行服务器端验证以确保该项目已付款。客户端集成只是让创建和执行付款变得更简单。
需要注意一件事——客户端和服务器端集成使用相同的 REST api。因此,没有什么能阻止您将两者结合使用。客户端调用只是让其中一些调用变得更容易一些,而无需额外的服务器端逻辑。