public function createBitPayInvoice($invoiceList, $amount) { if ($invoiceList != '' && !empty($amount)) { $storageEngine = new Bitpay\Storage\FilesystemStorage(); if (_BIT_PAY_PRODUCTION_) { $privateKey = $storageEngine->load('/tmp/bitpay.pri'); $publicKey = $storageEngine->load('/tmp/bitpay.pub'); } else { $privateKey = $storageEngine->load('/tmp/bitpaydev.pri'); $publicKey = $storageEngine->load('/tmp/bitpaydev.pub'); } $client = new Bitpay\Client\Client(); if (_BIT_PAY_PRODUCTION_) { $network = new Bitpay\Network\Livenet(); } else { $network = new Bitpay\Network\Testnet(); } $adapter = new Bitpay\Client\Adapter\CurlAdapter(); $client->setPrivateKey($privateKey); $client->setPublicKey($publicKey); $client->setNetwork($network); $client->setAdapter($adapter); $token = new Bitpay\Token(); if (_BIT_PAY_PRODUCTION_) { $token->setToken(_BIT_PAY_TOKEN_LIVE_NET_); } else { $token->setToken(_BIT_PAY_TOKEN_TEST_NET_); } $client->setToken($token); $item = new Bitpay\Item(); $item->setCode($invoiceList); $item->setDescription(''); $item->setPrice($amount); $invoice = new Bitpay\Invoice(); $invoice->setItem($item); $invoice->setPosData('{"invoiceList": "' . $invoiceList . '", "amount": "' . $amount . '", "userID": ' . $this->userID . '}'); $invoice->setNotificationUrl(_DOMAIN_API_HOST_ . '/bit-pay-ipn/'); $invoice->setCurrency(new Bitpay\Currency('USD')); try { $client->createInvoice($invoice); } catch (\Exception $e) { // todo: record failure somewhere? and turn off bitPay until problem is fixed //PaymentSystemData::turnOffBitPay(); cant turn it off unless we open up the IPN Need to decide. $error = array('Request' => $client->getRequest(), 'Response' => $client->getResponse()); file_put_contents('bitPayError.txt', print_r($error, true)); } return $invoice->getUrl(); } return false; }