PayPal REST API:如何立即付款而无需要求送货地址

mat*_*ani 7 paypal paypal-rest-sdk

我正在尝试使用PayPal REST API而不是PayPal Classic API,但似乎REST API缺少Classic API具有的两个功能:

  1. 立即付款:当用户进入Pay​​Pal页面时,向他显示"立即付款"按钮而不是"继续"按钮,并且"您差不多完成了.您将确认您的付款..."短语.
  2. 没有送货地址:在PayPal页面上避免要求用户确认他的送货地址(在Classic API中使用NOSHIPPING = 1参数完成,如果我记得很清楚)

所以我的问题是:是否可以在不使用REST API查询送货地址的情况下立即执行付款?我是否必须回到Classic API?

我在这里提供了一些关于我如何使用PayPal REST API的更多信息.我正在使用PayPal REST Java SDK.这是一个示例请求:

{
  "intent": "sale",
  "payer": {
    "payment_method": "paypal"
  },
  "transactions": [
    {
      "amount": {
        "currency": "USD",
        "total": "5",
        "details": {
          "subtotal": "5"
        }
      },
      "description": "This is the payment transaction description.",
      "item_list": {
        "items": [
          {
            "quantity": "1",
            "name": "Item 1",
            "price": "5",
            "currency": "USD"
          }
        ]
      }
    }
  ],
  "redirect_urls": {
    "return_url": "http://XXX/handlePayment.jsp?guid\u003dXXX",
    "cancel_url": "http://XXX/cancelPayment.jsp?guid\u003dXXX"
  }
}
Run Code Online (Sandbox Code Playgroud)

它的回应是:

{
    "id": "XXX",
    "create_time": "2014-06-29T08:52:55Z",
    "update_time": "2014-06-29T08:52:55Z",
    "state": "created",
    "intent": "sale",
    "payer": {
        "payment_method": "paypal",
        "payer_info": {
            "shipping_address": {}
        }
    },
    "transactions": [
        {
            "amount": {
                "total": "5.00",
                "currency": "USD",
                "details": {
                    "subtotal": "5.00"
                }
            },
            "description": "This is the payment transaction description.",
            "item_list": {
                "items": [
                    {
                        "name": "Item 1",
                        "price": "5.00",
                        "currency": "USD",
                        "quantity": "1"
                    }
                ]
            }
        }
    ],
    "links": [
        {
            "href": "https://api.sandbox.paypal.com/v1/payments/payment/XXX",
            "rel": "self",
            "method": "GET"
        },
        {
            "href": "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=XXX",
            "rel": "approval_url",
            "method": "REDIRECT"
        },
        {
            "href": "https://api.sandbox.paypal.com/v1/payments/payment/XXX/execute",
            "rel": "execute",
            "method": "POST"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Amp*_*ign 5

在深入研究REST API时,我遇到了这个问题

我相信这意味着您不必再创建任何"个人资料",并且可以将它们与付款电话一起传递...

按要求进一步说明:)

下面是使用快速结账的客户端JS方法传递PayPal体验参数以及特定付款调用的示例.

        payment: function(data, actions) {
        return actions.payment.create({
            payment: {
                transactions: [
                    {
                        amount: { total: '1.00', currency: 'USD' }
                    }
                ]
            },

            experience: {
                input_fields: {
                    no_shipping: 1
                }
            }
        });
    },
Run Code Online (Sandbox Code Playgroud)

希望这对你们有足够的意义!:)


Dre*_*ell 4

不幸的是,REST API 提供的功能仍然远远落后于经典 API。您提到的这些功能是我经常看到的功能,据我所知,REST 服务尚未提供这些功能。

我个人一直坚持使用 Classic,因为它们提供了一切,而且我真的认为自己使用 REST 没有任何优势。如果您碰巧使用 PHP(我总是这样做),您可能会对我的PayPal 类库感兴趣。它使所有经典 API 调用对您来说都变得非常快速和简单,而且Packagist 上提供了它,因此您可以轻松地与 Composer 一起使用。