设置发货名称 - Authorize.net 贝宝快递 API - Ruby

Set Shipping Name - Authorize.net PayPal Express API - Ruby

我有一个使用 Authorize.net's PayPal Express API Authorize & Capture function 的工作 Ruby 实现。 我正在尝试将送货方式 firstName 添加到请求中,但我总是收到错误消息。这是我的代码:

transaction = Transaction.new("xxxxx","xxxxx")
request = CreateTransactionRequest.new

    payPalType = PayPalType.new()
    payPalType.successUrl = "https://www.example.com"
    payPalType.cancelUrl = "https://www.example.com"

    #standard api call to retrieve response
    paymentType = PaymentType.new()
    paymentType.payPal = payPalType


    request.transactionRequest = TransactionRequestType.new()

    request.transactionRequest.amount = 99.99

    request.transactionRequest.payment = paymentType
    request.transactionRequest.transactionType = TransactionTypeEnum::AuthCaptureTransaction


    #I WANT TO SET THE SHIPPING FIRST NAME HERE:
    request.transactionRequest.shipTo.firstName="Bob"

    response = transaction.create_transaction(request)

这是我在尝试设置送货方式名称时遇到的错误:

NoMethodError (undefined method `firstName=' for nil:NilClass):

我理解错误,但无法确定是我在错误的对象上调用了错误的方法还是发生了什么。该方法调用的文档不是很清楚。任何帮助,将不胜感激。谢谢

我只使用了 billTo 而不是 shipTo,虽然我猜他们都应该接受 CustomerAddressType

所以它应该是这样的:

transactionRequest.shipTo = CustomerAddressType.new(
        user[:user_name][:first],
        user[:user_name][:last],
        nil,
        user[:user_address][:street],
        user[:user_address][:city],
        user[:user_address][:state],
        user[:user_address][:zip],
        'USA'
      )

我离开了这些字段,但你应该检查 "shipTo" 的顺序是否相同。