本文整理汇总了C++中OTPseudonym::GetNextTransactionNum方法的典型用法代码示例。如果您正苦于以下问题:C++ OTPseudonym::GetNextTransactionNum方法的具体用法?C++ OTPseudonym::GetNextTransactionNum怎么用?C++ OTPseudonym::GetNextTransactionNum使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OTPseudonym
的用法示例。
在下文中一共展示了OTPseudonym::GetNextTransactionNum方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Confirm
// THIS FUNCTION IS CALLED BY THE CUSTOMER
//
// (Transaction number and closing number are retrieved from Nym at this time.)
bool OTAgreement::Confirm(OTPseudonym & MERCHANT_NYM, OTPseudonym & PAYER_NYM)
{
// ----------------------------------------------------------------------------
OTIdentifier id_MERCHANT_NYM, id_PAYER_NYM;
MERCHANT_NYM.GetIdentifier(id_MERCHANT_NYM);
PAYER_NYM.GetIdentifier(id_PAYER_NYM);
if (GetRecipientUserID() == GetSenderUserID())
{
OTLog::Output(0, "OTAgreement::Confirm: Error: Sender and recipient have the same Nym ID (not allowed.)\n");
return false;
}
else if (GetRecipientUserID() != id_MERCHANT_NYM)
{
OTLog::Output(0, "OTAgreement::Confirm: Merchant has wrong NymID (should be same as RecipientUserID.)\n");
return false;
}
else if (GetSenderUserID() != id_PAYER_NYM)
{
OTLog::Output(0, "OTAgreement::Confirm: Payer has wrong NymID (should be same as SenderUserID.)\n");
return false;
}
else if (PAYER_NYM.GetTransactionNumCount(GetServerID()) < 2) // Need opening and closing numbers (that's 2)...
{
OTLog::Output(0, "OTAgreement::Confirm: Failure. You need at least 2 transaction numbers available to do this.\n");
return false;
}
else if (GetRecipientCountClosingNumbers() < 2)
{
OTLog::Output(0, "OTAgreement::Confirm: Failure. (The merchant was supposed to attach 2 transaction numbers.)\n");
return false;
}
// ----------------------------------------------------------------------------
// This is the single reason why MERCHANT_NYM was even passed in here!
// Supposedly merchant has already signed. Let's verify this!!
//
if (false == this->VerifySignature(MERCHANT_NYM))
{
OTLog::Output(0, "OTAgreement::Confirm: Merchant's signature failed to verify.\n");
return false;
}
// ----------------------------------------------------------------------------
// Now that we KNOW the merchant signed it... SAVE MERCHANT's COPY.
// Let's save a copy of the one the merchant signed, before changing it and re-signing it,
// (to add my own transaction numbers...)
//
OTString strTemp;
this->SaveContractRaw(strTemp);
this->SetMerchantSignedCopy(strTemp);
// *******************************************************************
// The payer has to submit TWO transaction numbers in order to activate this agreement...
//
OTString strServerID(GetServerID());
long lTransactionNumber=0, lClosingTransactionNo=0;
if (false == PAYER_NYM.GetNextTransactionNum(PAYER_NYM, strServerID, lTransactionNumber))
{
OTLog::Error("OTAgreement::Confirm: Error: Strangely unable to get a transaction number.\n");
return false;
}
else if (false == PAYER_NYM.GetNextTransactionNum(PAYER_NYM, strServerID, lClosingTransactionNo))
{
OTLog::Error("OTAgreement::Confirm: Error: Strangely unable to get a closing transaction number.\n");
PAYER_NYM.AddTransactionNum(PAYER_NYM, strServerID, lTransactionNumber, true); // bSave=true
// (Since the first one was successful, we just put it back before returning.)
return false;
}
// At this point we now HAVE 2 transaction numbers (for payer / sender)...
// We can't return without USING THEM or PUTTING THEM BACK.
//
// ---------------------------------------------------------
this->SetTransactionNum(lTransactionNumber); // Set the Transaction Number
this->AddClosingTransactionNo(lClosingTransactionNo); // and the Closing Number (both for sender)...
// -------------------------------------------
// CREATION DATE was set in the Merchant's proposal, and it's RESET here in the Confirm.
// This way, (since we still have the original proposal) we can see BOTH times.
//
time_t CURRENT_TIME = time(NULL);
// Set the Creation Date.
SetCreationDate(CURRENT_TIME);
// -------------------------------------------
OTLog::Output(4, "OTAgreement::Confirm(): Success!\n");
return true;
}
示例2: SetProposal
// THIS FUNCTION IS CALLED BY THE MERCHANT
//
// (lMerchantTransactionNumber, lMerchantClosingNumber are set internally in this call, from MERCHANT_NYM.)
bool OTAgreement::SetProposal(OTPseudonym & MERCHANT_NYM, const OTString & strConsideration,
const time_t VALID_FROM/*=0*/, const time_t VALID_TO/*=0*/)
{
// ----------------------------------------------------------------------------
OTIdentifier id_MERCHANT_NYM;
MERCHANT_NYM.GetIdentifier(id_MERCHANT_NYM);
if (GetRecipientUserID() != id_MERCHANT_NYM)
{
OTLog::Output(0, "OTAgreement::SetProposal: Merchant has wrong NymID (should be same as RecipientUserID.)\n");
return false;
}
else if (GetRecipientUserID() == GetSenderUserID())
{
OTLog::Output(0, "OTAgreement::SetProposal: Error: Sender and recipient have the same Nym ID (not allowed.)\n");
return false;
}
else if (MERCHANT_NYM.GetTransactionNumCount(GetServerID()) < 2) // Need opening and closing numbers (that's 2)...
{
OTLog::Output(0, "OTAgreement::SetProposal: Failure. You need at least 2 transaction numbers available to do this.\n");
return false;
}
// -------------------------------------------
// Set the CREATION DATE
//
const time_t CURRENT_TIME = time(NULL);
// Set the Creation Date.
SetCreationDate(CURRENT_TIME);
// -----------------------------------------
// Putting this above here so I don't have to put the transaction numbers back if this fails:
// -------------------------------------------
// VALID_FROM
//
// The default "valid from" time is NOW.
if (0 >= VALID_FROM) // if it's 0 or less, set to current time.
SetValidFrom(CURRENT_TIME);
else // Otherwise use whatever was passed in.
SetValidFrom(VALID_FROM);
// -------------------------------------------
// VALID_TO
//
// The default "valid to" time is 0 (which means no expiration date / cancel anytime.)
if (0 == VALID_TO) // VALID_TO is 0
{
SetValidTo(VALID_TO); // Keep it at zero then, so it won't expire.
}
else if (0 < VALID_TO) // VALID_TO is ABOVE zero...
{
if (VALID_TO < VALID_FROM) // If Valid-To date is EARLIER than Valid-From date...
{
long lValidTo = VALID_TO, lValidFrom = VALID_FROM;
OTLog::vError("OTAgreement::SetProposal: VALID_TO (%ld) is earlier than VALID_FROM (%ld)\n",
lValidTo, lValidFrom);
return false;
}
SetValidTo(VALID_TO); // Set it to whatever it is, since it is now validated as higher than Valid-From.
}
else // VALID_TO is a NEGATIVE number... Error.
{
long lValidTo = VALID_TO;
OTLog::vError("Negative value for valid_to in SetAgreement: %ld\n", lValidTo);
return false;
}
// ----------------------------------------------------------------------------
// Since we'll be needing 2 transaction numbers to do this, let's grab 'em...
//
OTString strServerID(GetServerID());
long lTransactionNumber=0, lClosingTransactionNo=0;
if (MERCHANT_NYM.GetTransactionNumCount(GetServerID()) < 2) // Need opening and closing numbers (that's 2)...
{
OTLog::Output(0, "OTAgreement::SetProposal: Failure. You need at least 2 transaction numbers available to do this.\n");
return false;
}
else if (false == MERCHANT_NYM.GetNextTransactionNum(MERCHANT_NYM, strServerID, lTransactionNumber))
{
OTLog::Error("OTAgreement::SetProposal: Error: Strangely unable to get a transaction number.\n");
return false;
}
else if (false == MERCHANT_NYM.GetNextTransactionNum(MERCHANT_NYM, strServerID, lClosingTransactionNo))
{
OTLog::Error("OTAgreement::SetProposal: Error: Strangely unable to get a closing transaction number.\n");
MERCHANT_NYM.AddTransactionNum(MERCHANT_NYM, strServerID, lTransactionNumber, true); // bSave=true
// (Since the first one was successful, we just put it back before returning.)
return false;
}
// At this point we now have 2 transaction numbers...
// We can't return without either USING THEM, or PUTTING THEM BACK.
//
//.........这里部分代码省略.........