Jump to content

ZenPayPal for ZenPhoto


fspector

Recommended Posts

I really want to enable two seperate prices for each product and each product/image has a different price. Is this possible? Here is the code from the page

<?php

/**

* zenPaypal -- PayPal ordering support

*

* Provides a PayPal ordering form for image print ordering.

*

* Plugin option 'zenPaypal_userid' allows setting the PayPal user email.

* Plugin option 'zenPaypal_pricelist' provides the default pricelist.

* Plugin option 'zenPaypal_checkout_currency'

* Plugin option 'zenPaypal_checkout_ship_cost'

* Price lists can also be passed as a parameter to the zenPaypal() function. See also

* zenPaypalPricelistFromString() for parsing a string into the pricelist array. This could be used,

* for instance, by storing a pricelist string in the 'customdata' field of your images and then parsing and

* passing it in the zenPaypal() call. This would give you individual pricing by image.

*

* @author Ebrahim Ezzy (Nimbuz) adapted as a plugin by Stephen Billard (sbillard)

* @version 1.0.1

* @package plugins

*/

 

$plugin_description =  "<a href =\"http://blog.qelix.com/2008/04/07/paypal-integraion-for-zenphoto-zenpaypal/\">".

"zenPayPal</a> -- ".gettext("Paypal Integration for Zenphoto.");

$plugin_author = gettext('Ebrahim Ezzy (Nimbuz) adapted as a plugin by Stephen Billard (sbillard) Customized by Excalibur Consulting');

$plugin_version = '1.0.1';

$plugin_URL = "http://www.zenphoto.org/documentation/plugins/_plugins---zenPaypal.php.html";

$option_interface = new zenPaypalOptions();

addPluginScript('<link rel="stylesheet" href="'.FULLWEBPATH."/".ZENFOLDER.'/plugins/zenPaypal/zenPaypal.css" type="text/css" />');

 

/**

* Plugin option handling class

*

*/

class zenPaypalOptions {

 

function zenPaypalOptions() {

 

$pricelist = array("4x6:".gettext("Matte") => '5.75', "4x6:".gettext("Glossy") => '10.00', "4x6:".gettext("Paper") => '8.45',

"8x10:".gettext("Matte") => '15.00', "8x10:".gettext("Glossy") => '20.00', "8x10:".gettext("Paper") => '8.60',

"11x14:".gettext("Matte") => '25.65', "11x14:".gettext("Glossy") => '26.75', "11x14:".gettext("Paper") => '15.35', );

setOptionDefault('zenPaypal_userid', "");

$pricelistoption = '';

foreach ($pricelist as $item => $price) {

$pricelistoption .= $item.'='.$price.' ';

}

setOptionDefault('zenPaypal_pricelist', $pricelistoption);

setOptionDefault('zenPaypal_currency', 'USD');

setOptionDefault('zenPaypal_ship_cost', 0);

}

 

 

function getOptionsSupported() {

return array( gettext('PayPal User ID') => array('key' => 'zenPaypal_userid', 'type' => 0,

'desc' => gettext("Your PayPal User ID.")),

gettext('Currency') => array('key' => 'zenPaypal_currency', 'type' => 0,

'desc' => gettext("The currency for your transactions.")),

gettext('Shipping cost') => array('key' => 'zenPaypal_ship_cost', 'type' => 0,

'desc' => gettext("What you charge for shipping.")),

gettext('Price list') => array('key' => 'zenPaypal_pricelist', 'type' => 3, 'multilingual' => 1,

'desc' => gettext("Your pricelist by size and media. The format of this option is <em>price elements</em> separated by spaces.<br/>".

"A <em>price element</em> has the form: <em>size</em>:<em>media</em>=<em>price</em><br/>".

"example: <code>4x6:Matte=5.75 8x10:Glossy=20.00 11x14:Paper=15.35</code>."))

);

}

function handleOption($option, $currentValue) {

}

}

 

/**

* Parses a price list element string and returns a pricelist array

*

* @param string $prices A text string of price list elements in the form <size>:<media>=<price> <size>:<media>=<price> ...

* @return array

*/

function zenPaypalPricelistFromString($prices) {

$pricelist = array();

$pricelistelements = explode(' ', $prices);

foreach ($pricelistelements as $element) {

if (!empty($element)) {

$elementparts = explode('=', $element);

$pricelist[$elementparts[0]] = $elementparts[1];

}

}

return $pricelist;

}

 

/**

* Places a Paypal button on your form

*

* @param array $pricelist optional array of specific pricing for the image.

* @param bool $pricelistlink set to true to include link for exposing pricelist

* @param string $text The text to place for the link (defaults to "Price List")

* @param string $textTag HTML tag for the link text. E.g. h3, ... 

* @param string $idtag the division ID for the price list. (NB: a div named $id appended with "_data" is

*/

function zenPaypal($pricelist=NULL, $pricelistlink=false, $text=NULL, $textTag="l1", $idtag="zenPaypalPricelist") {

if (!is_array($pricelist)) {

$pricelist = zenPaypalPricelistFromString(getOption('zenPaypal_pricelist'));

}

?>

<script language="javascript">

 

function paypalCalculateOrder(myform) {

<?php

$sizes = array();

$media = array();

foreach ($pricelist as $key=>$price) {

$itemparts = explode(':', $key);

$media[] = $itemparts[1];

$sizes[] = $itemparts[0];

echo 'if (myform.os0.value == "'.$itemparts[0].'" && myform.os1.value == "'.$itemparts[1].'") {'."\n";

echo 'myform.amount.value = '.$price.';'."\n";

echo 'myform.item_name.value = "'.getImageTitle().' - Photo Size '.$itemparts[0].' - '.$itemparts[1].'";'."\n";

echo '}'."\n";

}

?>       

}

</script>

 

<?php

$locale = getOption('locale');

if (empty($locale)) { $locale = 'en_US'; }

?>

 

<div id="BuyNow">

<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post" name="myform">

<input type="hidden" name="on0" value="Size"> <label>Size</label>

<select name="os0">

<?php

$media = array_unique($media);

$sizes = array_unique($sizes);

foreach ($sizes as $size) {

echo '<option value="'.$size.'" selected>'.$size."\n";

}

?>

</select>

<input type="hidden" name="on1" value="Color"> <label><?php echo gettext("Stock"); ?></label>

<select name="os1">

<?php

foreach ($media as $paper) {

echo '<option value="'.$paper.'" selected>'.$paper."\n";

}

?>

</select>

<input type="image" src="https://www.paypal.com/<?php echo $locale ?>/i/btn/x-click-butcc.gif" border="0"

name="submit" onClick="paypalCalculateOrder(this.form)"

alt=<?php gettext("Make payments with PayPal - it's fast, free and secure!"); ?>

class="buynow_button">

<input type="hidden" name="cmd" value="_xclick">

<input type="hidden" name="business" value="<?php echo getOption('zenPaypal_userid'); ?>">

<input type="hidden" name="item_name" value="Options Change Amount">

<input type="hidden" name="amount" value="1.00">

<input type="hidden" name="shipping" value="<?php echo getOption('zenPaypal_ship_cost'); ?>">

<input type="hidden" name="no_note" value="1">

<input type="hidden" name="currency_code" value="<?php echo getOption('zenPaypal_currency'); ?>">

<input type="hidden" name="return" value="<?php echo 'http://'. $_SERVER['SERVER_NAME']. htmlspecialchars(getNextImageURL());?>">

<input type="hidden" name="cancel_return" value="<?php echo 'http://'. $_SERVER['SERVER_NAME'].htmlspecialchars(getImageLinkURL());?>">

</form>

<?php

if ($pricelistlink) {

zenPaypalPrintPricelist($pricelistlink, $text, $textTag, $idtag);

}

?>

</div>

<?php

}

 

/**

* Prints a link that will expose the zenPaypal Price list table

*

* @param array $pricelist the zenPaypal price list

* @param string $text The text to place for the link (defaults to "Price List")

* @param string $textTag HTML tag for the link text. E.g. h3, ... 

* @param string $id the division ID for the price list. (NB: a div named $id appended with "_data" is

* created for the hidden table.

*

*/

function zenPaypalPrintPricelist($pricelist=NULL, $text=NULL, $textTag="l1", $id="zenPaypalPricelist"){

if (!is_array($pricelist)) {

$pricelist = zenPaypalPricelistFromString(getOption('zenPaypal_pricelist'));

}

if (is_null($text)) $text = gettext("Price List");

$dataid = $id . '_data';

if (!empty($textTag)) {

$textTagStart = '<'.$textTag.'>';

$textTagEnd = '</'.$textTag.'>';

}

echo '<div id="' .$id. '">'."\n".$textTagStart.'<a href="javascript: toggle('. "'" .$dataid."'".');">'.$text."</a>".$textTagEnd."\n</div>";

echo '<div id="' .$dataid. '" style="display: none;">'."\n";

echo '<table>'."\n";

echo '<table>'."\n";

echo '<tr>'."\n";

echo '<th>'.gettext("size").'</th>'."\n";

echo '<th>'.gettext("media").'</th>'."\n";

echo '<th>'.gettext("price").'</th>'."\n";

echo '</tr>'."\n";

$sizes = array();

$media = array();

foreach ($pricelist as $key=>$price) {

$itemparts = explode(':', $key);

echo '<tr>'."\n";

echo '<td class="size">'.$itemparts[0].'</td>'."\n";

echo '<td class="media">'.$itemparts[1].'</td>'."\n";

echo '<td class="price">'.$price.'</td>'."\n";

echo '</tr>'."\n";

}

echo '</table>'."\n";

echo '</div>'."\n";

echo "</div>\n";

}

 

?>

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.