sCampaign->GetPaymentMethod(PaymentMethod::PAYPAL); } catch (NotFoundException $e) { throw new RouterException("No such payment method found."); } if(strtolower($sPaymentRequest->sCurrency) == "btc") { $sCurrency = urlencode("USD"); $sAmount = round(Currency::Convert("usd", "btc", $sPaymentRequest->sAmount), 2); } else { $sCurrency = urlencode(strtoupper($sPaymentRequest->sCurrency)); $sAmount = urlencode($sPaymentRequest->sAmount); } $sQuotedRecipient = urlencode($sPaymentMethod->sAddress); $sQuotedName = urlencode("{$sPaymentRequest->sCampaign->sName} (via ReDonate.net)"); $sQuotedNumber = urlencode("{$sPaymentRequest->sId}"); $sQuotedReturnUrl = urlencode("http://redonate.net/pay/{$sPaymentRequest->sSubscription->sEmailAddress}/{$sPaymentRequest->sId}/{$sPaymentRequest->sKey}/paypal/done"); if(filter_var($sPaymentMethod->sAddress, FILTER_VALIDATE_EMAIL)) { $target = "https://www.paypal.com/cgi-bin/webscr?business={$sQuotedRecipient}&cmd=_donations&item_name={$sQuotedName}&item_number={$sQuotedNumber}¤cy_code={$sCurrency}&amount={$sAmount}&return={$sQuotedReturnUrl}"; } else { /* This is most likely a hosted button ID. We can only provide limited information in this case - we can really only set the item description. * Not sure if setting the return URL will work, but we might as well try. */ $target = "https://www.paypal.com/cgi-bin/webscr?hosted_button_id={$sQuotedRecipient}&cmd=_s-xclick&item_name={$sQuotedName}&return={$sQuotedReturnUrl}"; } redirect($target);