我不明白。如果 Classic api 有 DoExpressCheckout 方法...... Rest API 有什么用? 在那个图像上,我们有它应该如何以经典方式工作的方式
所以对于我的案例,快速结帐步骤是: 1) 客户将商品放入购物车并点击 PayPal 结账按钮 我跑
var payment = new PayPal.Api.Payment();
var createdPayment = payment.Create(apiContext);
所以进行付款并将客户重定向到 Paypal 网站
2) 客户通过 paypal 流程并返回我的网站。从他的 pay pal 交易中我应该得到装运地址和他的电子邮件(无需提交付款!)并根据他的装运地址计算运费
3) 客户选择装运方式后,我需要更新他的交易(添加运费),然后才提交。
所以这里的问题
1) 由于 PayPal.Api.Payment() 只有 Creare、Execute 和 Update 方法,如何基于 paymentId(如 PAY-21A17783AU475540MKYGAM5Q)使用 C# 库获取支付(交易)信息?
2) 如何更新当前交易(添加一些新数据,如运费),然后提交?
附言。文档中有很多乱七八糟的东西,很多人不明白他们应该如何正确使用该 api。
公爵
最佳答案
根据您的帖子,您将创建一个 Order
- 强烈建议您在此链接中使用他们的库(它包括示例,应该可以让您快速入门,维护得很好,并且维护人员很棒/响应迅速)
Create it - 这将映射到经典的
SetExpressCheckout
Redirect to Paypal以获得用户的认可。重定向 URL 是响应的一部分(不再只是一个标记)
如果用户“同意”,Paypal 会像经典一样重定向回来
- 您会在
else
block 的示例中看到这个处理 - 就像经典的一样
PayerID
在查询字符串中
- 您会在
Execute付款
- 响应将包含您需要的数据,您将在执行语句下方的行中看到,因此它映射到
GetExpressCheckoutDetails
- 您还将在注释行中看到有关下一步操作(Auth、Capture 等)的选项。这些将映射到“完成”付款
- 在获取详细信息后,您可以在上面“调整”运费/税费,并且在您可以添加的最大额外金额方面与经典 IINM 具有相同的规则 - 115% not to exceed $75 )
- 响应将包含您需要的数据,您将在执行语句下方的行中看到,因此它映射到
如果你有沙盒账户,我有调试页面here这显示了可能有用的数据 io。
请注意,我只是部分捕获 ("is_final_capture": false
),因此如果您检查您的沙盒(买家)帐户,收取的总金额将不是全部金额
嗯..
关于REST api 上的 paypal 快速结账(C# lib),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870812/