repurchase detection
- check that the old transaction is not refunded - if the old purchase was deleted fallback to no-repurchase detected
This commit is contained in:
parent
742b00028e
commit
d759f08225
@ -539,7 +539,7 @@ async function processDownloadProposal(
|
||||
}
|
||||
// FIXME: Adjust this to account for refunds, don't count as repurchase
|
||||
// if original order is refunded.
|
||||
if (otherPurchase) {
|
||||
if (otherPurchase && otherPurchase.refundAmountAwaiting === undefined) {
|
||||
logger.warn("repurchase detected");
|
||||
p.purchaseStatus = PurchaseStatus.RepurchaseDetected;
|
||||
p.repurchaseProposalId = otherPurchase.proposalId;
|
||||
@ -976,17 +976,16 @@ export async function checkPaymentByProposalId(
|
||||
}
|
||||
if (proposal.purchaseStatus === PurchaseStatus.RepurchaseDetected) {
|
||||
const existingProposalId = proposal.repurchaseProposalId;
|
||||
if (!existingProposalId) {
|
||||
throw Error("invalid proposal state");
|
||||
}
|
||||
logger.trace("using existing purchase for same product");
|
||||
proposal = await ws.db
|
||||
.mktx((x) => [x.purchases])
|
||||
.runReadOnly(async (tx) => {
|
||||
return tx.purchases.get(existingProposalId);
|
||||
});
|
||||
if (!proposal) {
|
||||
throw Error("existing proposal is in wrong state");
|
||||
if (existingProposalId) {
|
||||
logger.trace("using existing purchase for same product");
|
||||
const oldProposal = await ws.db
|
||||
.mktx((x) => [x.purchases])
|
||||
.runReadOnly(async (tx) => {
|
||||
return tx.purchases.get(existingProposalId);
|
||||
});
|
||||
if (oldProposal) {
|
||||
proposal = oldProposal;
|
||||
}
|
||||
}
|
||||
}
|
||||
const d = await expectProposalDownload(ws, proposal);
|
||||
|
@ -1497,7 +1497,7 @@ export function PurchaseDetails({
|
||||
{Amounts.isNonZero(price.fee) && (
|
||||
<tr>
|
||||
<td>
|
||||
<i18n.Translate>Transaction fees</i18n.Translate>
|
||||
<i18n.Translate>Fees</i18n.Translate>
|
||||
</td>
|
||||
<td>
|
||||
<Amount value={price.fee} />
|
||||
|
Loading…
Reference in New Issue
Block a user