Example #1
0
CString CAmiko::addPaymentRequest(const CString &receipt, uint64_t amount)
{
	//TODO: check number of existing incoming payments.
	//If it's too large, raise an exception.

	CString ID = getSecureRandom(32).hexDump();

	CTransaction t = CTransaction(receipt, amount);
	t.m_nonce = getSecureRandom(TRANSACTION_NONCE_LENGTH);

	{
		CMutexLocker lock(m_Settings);
		t.m_meetingPoint = CRIPEMD160(
			CSHA256(m_Settings.m_Value.m_MeetingPointPubKey).toBinBuffer()
			);
	}

	t.calculateTokenAndHash();

	{
		CMutexLocker lock(m_IncomingPayments);
		m_IncomingPayments.m_Value[ID] = t;
	}

	CMutexLocker lock(m_Settings);
	return m_Settings.m_Value.getPaymentURL(ID);
}