PAYPAL php SDK1.0.1,如何设置NO_SHIPPING

问题描述

我正在建立一个电子商务网站,该网站仅销售数字商品(不包括运费)。因此,我尝试在请求创建过程中将“ shipping_preferences”键设置为“ NO_SHIPPING”,但它似乎不起作用(它不会产生任何错误)。我正在关注文档here

PHP代码buildrequestBody):

function buildrequestBody()
{
    return array(
          'intent' => 'CAPTURE','purchase_units' =>
                array(
                  0 =>
                    array(
                      'amount' =>
                        array(
                          'currency_code' => 'EUR','value' => '150.00'
                        ),'payee' =>
                        array(
                          'email_address' => 'sb-qloys3515897@business.example.com'
                          )

                  )
                ),'order_application_context' =>
             array(
               'shipping_preferences' => 'NO_SHIPPING'
             )
            );
}

这是返回的json,(与运送没有任何关系,因此在结帐时,它仍会询问地址)

{
  "statusCode": 201,"result": {
    "id": "23K326254X491844S","intent": "CAPTURE","status": "CREATED","purchase_units": [
      {
        "reference_id": "default","amount": {
          "currency_code": "EUR","value": "150.00"
        },"payee": {
          "email_address": "sb-qloys3515897@business.example.com"
        }
      }
    ],"create_time": "2020-10-23T19:52:24Z","links": [
      {
        "href": "https://api.sandBox.paypal.com/v2/checkout/orders/23K326254X491844S","rel": "self","method": "GET"
      },{
        "href": "https://www.sandBox.paypal.com/checkoutNow?token=23K326254X491844S","rel": "approve",{
        "href": "https://api.sandBox.paypal.com/v2/checkout/orders/23K326254X491844S","rel": "update","method": "PATCH"
      },{
        "href": "https://api.sandBox.paypal.com/v2/checkout/orders/23K326254X491844S/capture","rel": "capture","method": "POST"
      }
    ]
  },"headers": {
    "": "","Cache-Control": "max-age=0,no-cache,no-store,must-revalidate","Content-Length": "718","Content-Type": "application/json","Date": "Fri,23 Oct 2020 19","Paypal-Debug-Id": "cc5deeef2624d"
  }
}

我还尝试了'application_context'而不是'order_application_context',但是它给了我相同的结果(结帐时要求送货地址,并且json与以前相同)

这是修改后的PHP代码

return array(
          'intent' => 'CAPTURE','application_context' =>
            array(
              'shipping_preferences' => 'NO_SHIPPING'
              //'user_action' => 'PAY_Now'
            ),'payee' =>
                        array(
                          'email_address' => 'sb-qloys3515897@business.example.com'
                          )

                  )
                )
            );

解决方法

您链接到对象的定义,而不是文档的一部分,该文档告诉您在请求正文中其键名应为:https://developer.paypal.com/docs/api/orders/v2/#orders-create-request-body

也就是application_context