6

I'm trying to dynamically update a PayPal hosted button but getting an error that

The button type specified is invalid.

I used the PPHttpPost function (which is probably fine), taken from here: https://www.x.com/paypal-apis-dodirectpayment-php-5.3/nvp, I just removed all the nvp variables except API signature, password etc.

This is my code to use the ButtonManager:

// Set request-specific fields.

 $nvpStr =  "&HOSTEDBUTTONID=buynow&BUTTONCODE=HOSTED&AMT=330.66&BUTTONTYPE=BUYNOW";

// Execute the API operation; see the PPHttpPost function above.
$httpParsedResponseAr = PPHttpPost('BMUpdateButton', $nvpStr);

var_dump($httpParsedResponseAr);

?>

What am I doing wrong?

Edit

When I remove HOSTEDBUTTONID from the request string and output the full NVP string, I get this (replaced some characters with underscore for privacy):

METHOD=BMUpdateButton&VERSION=98.0&PWD=1362320204&USER=___._1362320167_biz_api1.gmail.com&SIGNATURE=________________&BUTTONCODE=HOSTED&AMT=330.66
user961627
  • 12,379
  • 42
  • 136
  • 210
  • Remove HOSTEDBUTTONID - this is part of the response, but shouldn't be included in your request. Can you also print $nvpStr? – Robert Mar 09 '13 at 12:09
  • I've edited the question to add the full printed out NVP string at the end. – user961627 Mar 10 '13 at 07:20

1 Answers1

6

After running into the same issue, I have figured the issue out.

Along with:

"BUTTONTYPE" => "BUYNOW"

You need:

"BUTTONSUBTYPE" => "PRODUCTS"

I know it says optional in the API docs, but it's really required.

The sub type will either be PRODUCTS or SERVICES.

user2067005
  • 859
  • 7
  • 15