0
我想用無效的美國地址覆蓋PayPal的送貨地址。我確實在https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECCustomizing/中讀過,我只需要使用ADDROVERRIDE=1
,然後用PAYMENTREQUEST_0_SHIPTOSTREET
(加上一些其他相關的參數)覆蓋地址。用無效的美國地址覆蓋送貨地址
但是,文檔化的指南並不適合我。如果送貨地址位於美國以外,這將起作用。我設置一個測試應用程序,這些都是代碼:
class HomeController < ApplicationController
def index
end
def pay
paypal_options = {
no_shipping: true, # if you want to disable shipping information
allow_note: false, # if you want to disable notes
pay_on_paypal: true # if you don't plan on showing your own confirmation step
}
response = paypal_request.setup(
payment_request,
'http://localhost:3000/done',
'http://localhost:3000/done',
paypal_options # Optional
)
redirect_to response.redirect_uri
rescue Paypal::Exception::HttpError, Paypal::Exception::APIError => e
puts "------- ERROR"
puts e.response.details.map(&:long_message).join("")
end
def done
@response = paypal_request.checkout!(
params[:token],
params[:PayerID],
payment_request
)
end
private
def payment_request
Paypal::Payment::Request.new(
:description => "Some description", # item description
:quantity => 1, # item quantity
:amount => 1.00, # item value
:custom_fields => {
METHOD: 'SetExpressCheckout',
ADDROVERRIDE: 1,
REQCONFIRMSHIPPING: 0,
:"PAYMENTREQUEST_{n}_SHIPTONAME" => 'Donna W. Brogan',
:"PAYMENTREQUEST_{n}_SHIPTOCITY" => 'Oak Lawns',
:"PAYMENTREQUEST_{n}_SHIPTOSTREET" => '4223 Flinderation Road',
:"PAYMENTREQUEST_{n}_SHIPTOSTREET2" => '',
:"PAYMENTREQUEST_{n}_SHIPTOSTATE" => 'IL',
:"PAYMENTREQUEST_{n}_SHIPTOCOUNTRYCODE" => 'US',
:"PAYMENTREQUEST_{n}_SHIPTOZIP" => '60453'
}
)
end
def paypal_request
Paypal::Express::Request.new(
:username => PAYPAL_CONFIG[:username],
:password => PAYPAL_CONFIG[:password],
:signature => PAYPAL_CONFIG[:signature]
)
end
end
地址是無效的,因爲沒有Oak Lawns
,注意額外的s
。
我得到的錯誤是:
Shipping Address Invalid City State Postal Code
這些都是根據調試器發送的PARAMS:
ADDROVERRIDE=1
&ALLOWNOTE=0
&CANCELURL=http%3A%2F%2Flocalhost%3A3000%2Fdone
&METHOD=SetExpressCheckout
&NOSHIPPING=1
&PAYMENTREQUEST_0_AMT=1.00
&PAYMENTREQUEST_0_DESC=Some+description
&PAYMENTREQUEST_0_SHIPPINGAMT=0.00
&PAYMENTREQUEST_0_SHIPTOCITY=Oak+Lawns
&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=US
&PAYMENTREQUEST_0_SHIPTONAME=Donna+W.+Brogan
&PAYMENTREQUEST_0_SHIPTOSTATE=IL
&PAYMENTREQUEST_0_SHIPTOSTREET2=
&PAYMENTREQUEST_0_SHIPTOSTREET=4223+Flinderation+Road
&PAYMENTREQUEST_0_SHIPTOZIP=60453
&PAYMENTREQUEST_0_TAXAMT=0.00
&REQCONFIRMSHIPPING=0
&RETURNURL=http%3A%2F%2Flocalhost%3A3000%2Fdone
,如果我改變了城市Oak Lawn
這將很好地工作這是一個有效的送貨地址。我爲此使用https://github.com/nov/paypal-express寶石。
我有點知道,但問題是,我可以提供一個無效的地址?如果可能的話,我該怎麼做? – amree
對於美國地址,沒有。如果您提供的美國地址無效,則使用「address_override」,流程將首先打破錯誤。如果沒有「address_override」,則無效地址將被剝離並顯示買方的賬戶存儲地址 –