PHP Library for Convio Open API

Options

Hi Everyone,

My name is Nick Bartkowiak and I am a support engineer at Convio specializing in our Open API. I'm hear to introduce myself and as my first order of business, provide you with this simple PHP interface for our API, which I have written. This should provide an easy way for your PHP applications to configure the API, make requests, and handle responses. It is largely untested and certainly not officially supported by Convio, but I will do my best to answer an questions you have about it and help with use cases.

You'll find two files in contained in the zip archive:

ConvioOpenApi.php

example.php

It's all very simple really, ConvioOpenApi.php is the library object itself, which you will need to include to make calls. It is reasonably well documented with comments, so make sure to read all of them. example.php simply gives a direct example of how to properly configure the API and make a simple authenticated call to get a constitutent's info.

Please play around with it and let me know what you think!

Nick

Tagged:

Comments

  • Had a little trouble with the attachment, so I have uploaded it as a document here:

    http://community.customer.convio.com/docs/DOC-2467

  • Nick Bartkowiak:

    Had a little trouble with the attachment, so I have uploaded it as a document here:

    http://community.customer.convio.com/docs/DOC-2467

    Nick,

    I'm trying to work on a donation form on a PHP based page.

    I'm struggling to get things working.



    The donation requires variaables like billing.address.state which have periods/dots and PHP and Zend Framework strip out periods and conver them to underscores in the POST data. Not sure how to get around this issue. Anyone on your side know of a solution in PHP for Donations? Thanks,

    Josh

  • Josh Bowes:

    Nick,

    I'm trying to work on a donation form on a PHP based page.

    I'm struggling to get things working.



    The donation requires variaables like billing.address.state which have periods/dots and PHP and Zend Framework strip out periods and conver them to underscores in the POST data. Not sure how to get around this issue. Anyone on your side know of a solution in PHP for Donations? Thanks,

    Josh

    Hi Josh,

    That's an interesting issue. I've never used the Zend framework (although I do use their PHP coding standard) so I wonder if they reserver dot (.) delimiters for some specific purpose. There shouldn't be anything in raw PHP or this library that would turn dots (.) to underscores (_) in the POST data. Do you have cURL installed? cURL definitely doesn't do any conversion like that and that's the PHP extension that this library uses to make its POST calls. If cURL is not installed, it defaults to fopen, which should also not be doing any conversions like that.

    My bet is that its something specific in the Zend framework. Have you consulted their documentaion?

    Nick

  • Nick Bartkowiak:

    Hi Josh,

    That's an interesting issue. I've never used the Zend framework (although I do use their PHP coding standard) so I wonder if they reserver dot (.) delimiters for some specific purpose. There shouldn't be anything in raw PHP or this library that would turn dots (.) to underscores (_) in the POST data. Do you have cURL installed? cURL definitely doesn't do any conversion like that and that's the PHP extension that this library uses to make its POST calls. If cURL is not installed, it defaults to fopen, which should also not be doing any conversions like that.

    My bet is that its something specific in the Zend framework. Have you consulted their documentaion?

    Nick

    Nick,

    Thanks for the reply. Unfortunately it's not specific to Zend Framework but instead PHP.

    It's described here:

    http://bugs.php.net/bug.php?id=580

    "PHP automatically converts periods into underscores in GET, POST, and Cookie data. A section explaining this has been added to the PHP3 manual"



    Perhaps it will work with cURL? I'm not too familiar with cURL but what I'm trying to do is create a custom donation form using this API:
    http://open.convio.com/api/apidoc/reference/methods/donate_method.html

    though I don't see a mention of cURL in the API documentation, perhaps I'm looking in the wrong spot.

    If you have any suggestions, they would be greatly appreciated.

    Thank you!


    Josh

  • Josh Bowes:

    Nick,

    Thanks for the reply. Unfortunately it's not specific to Zend Framework but instead PHP.

    It's described here:

    http://bugs.php.net/bug.php?id=580

    "PHP automatically converts periods into underscores in GET, POST, and Cookie data. A section explaining this has been added to the PHP3 manual"



    Perhaps it will work with cURL? I'm not too familiar with cURL but what I'm trying to do is create a custom donation form using this API:
    http://open.convio.com/api/apidoc/reference/methods/donate_method.html

    though I don't see a mention of cURL in the API documentation, perhaps I'm looking in the wrong spot.

    If you have any suggestions, they would be greatly appreciated.

    Thank you!


    Josh

    Hmm, well that bug entry is nearly 11 1/2 years old and it talks about the PHP3 manual and we are on precipice of PHP6, but you are correct about it not being a Zend specific issue. That's an interesting choice for PHP and one I was unaware of. I'll have to play with it and see what exactly the options are.

    cURL is just a library for transferring files via the URL syntax. It's generally a command line tool, but PHP has a nice layer for it (php-curl). It's my preferred way of making HTTP calls via PHP. You won't find it mentioned in the Convio documentation, because the library which you or I use to execute the HTTP call to Convio from PHP is irrelevant.

    I would definitely try to get cURL working and see if that makes any difference to the way PHP formats the request. I'll see if I can't dig up any workaround for you in any case.

    Also, just as an architectural note, the donation API was designed to be a client called data point, not a server called data point. Most of the integrations with it have been done by flat HTML forms actually POSTing directly to it. I'm interested in your reasons for using this PHP library to POST to the donation form.

    Nick

  • Nick Bartkowiak:

    Hmm, well that bug entry is nearly 11 1/2 years old and it talks about the PHP3 manual and we are on precipice of PHP6, but you are correct about it not being a Zend specific issue. That's an interesting choice for PHP and one I was unaware of. I'll have to play with it and see what exactly the options are.

    cURL is just a library for transferring files via the URL syntax. It's generally a command line tool, but PHP has a nice layer for it (php-curl). It's my preferred way of making HTTP calls via PHP. You won't find it mentioned in the Convio documentation, because the library which you or I use to execute the HTTP call to Convio from PHP is irrelevant.

    I would definitely try to get cURL working and see if that makes any difference to the way PHP formats the request. I'll see if I can't dig up any workaround for you in any case.

    Also, just as an architectural note, the donation API was designed to be a client called data point, not a server called data point. Most of the integrations with it have been done by flat HTML forms actually POSTing directly to it. I'm interested in your reasons for using this PHP library to POST to the donation form.

    Nick

    Nick,

    I appreciate the fast replies - thanks again for that.

    I didn't notice how dated that php bug post was. However, it still seems to be the case that PHP removes dots/periods, unfortunately.

    I think what I will try to do is modify my form's action to post to a processing function in my DonationController instead of posting directly to the secure3.convio.../Donation API URL. In this process function I'll use CURL to send the POST to the secure3.convio URL.

    If you have any other ideas, let me know. I'll update when I make further progress.

    Thanks again,

    Josh

  • Nick Bartkowiak:

    Had a little trouble with the attachment, so I have uploaded it as a document here:

    http://community.customer.convio.com/docs/DOC-2467

    thanks for posting this, but when testing this on my server i'm getting a 302 error.

    any idea what could be causing this?

  • I think I am hitting this same error with dots in parameter names. Trying to use your API for a custom donation form, I get the error "Please enter a billing address before proceeding".

    I think this is because of "billing.address.street1" and the other variables like it.

    I'm not doing a straght html submit, because I want to avoid the confirmation page. (I think donating should be a one-step process).

    Any chance of a fix, or some expample working code to do donations?

Categories