Example #1
0
    /**
     * Starts a new purchase
     *
     * @param DB $db a connection to the database
     * @param Amount $price required to start a new ticket.
     */
    public static function create(Config $cfg, DB $db, BitcoinAddress $address)
    {
        $prepared = $db->prepare('
			INSERT INTO `purchases` (
				`customer_address`,
				`bitcoin_price`,
				`cur_code`
			) VALUES (
				:customer_address,
				:bitcoin_price,
				:cur_code
			)
		');
        $cur = $cfg->getCurrencyCode();
        $result = $prepared->execute(array(':customer_address' => $address->get(), ':bitcoin_price' => $cfg->getPricingProvider()->getPrice()->get(), ':cur_code' => $cur));
        if ($result === false) {
            throw new Exception("Unable to create new purchase ticket.");
        }
        return self::load($cfg, $db, $db->lastInsertId());
    }
 private function setProviderCreditReversalDetails($parameters, $providerCreditInfo)
 {
     $providerIndex = 0;
     $providerString = 'ProviderCreditReversalList.member.';
     $fieldMappings = array('provider_id' => 'ProviderId', 'credit_reversal_amount' => 'CreditReversalAmount.Amount', 'currency_code' => 'CreditReversalAmount.CurrencyCode');
     foreach ($providerCreditInfo as $key => $value) {
         $value = array_change_key_case($value, CASE_LOWER);
         $providerIndex = $providerIndex + 1;
         foreach ($value as $param => $val) {
             if (array_key_exists($param, $fieldMappings) && trim($val) != '') {
                 $parameters[$providerString . $providerIndex . '.' . $fieldMappings[$param]] = $val;
             }
         }
         // If currency code is not entered take it from the config array
         if (empty($parameters[$providerString . $providerIndex . '.' . $fieldMappings['currency_code']])) {
             $parameters[$providerString . $providerIndex . '.' . $fieldMappings['currency_code']] = strtoupper($this->config->getCurrencyCode());
         }
     }
     return $parameters;
 }