if the order is not found, marked the payment as failed
This commit is contained in:
parent
8d59e71724
commit
da5b42025a
@ -1135,9 +1135,9 @@ export function selectForced(
|
|||||||
|
|
||||||
export type SelectPayCoinsResult =
|
export type SelectPayCoinsResult =
|
||||||
| {
|
| {
|
||||||
type: "failure";
|
type: "failure";
|
||||||
insufficientBalanceDetails: PayMerchantInsufficientBalanceDetails;
|
insufficientBalanceDetails: PayMerchantInsufficientBalanceDetails;
|
||||||
}
|
}
|
||||||
| { type: "success"; coinSel: PayCoinSelection };
|
| { type: "success"; coinSel: PayCoinSelection };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1623,7 +1623,7 @@ export async function runPayForConfirmPay(
|
|||||||
const numRetry = opRetry?.retryInfo.retryCounter ?? 0;
|
const numRetry = opRetry?.retryInfo.retryCounter ?? 0;
|
||||||
if (
|
if (
|
||||||
res.errorDetail.code ===
|
res.errorDetail.code ===
|
||||||
TalerErrorCode.WALLET_PAY_MERCHANT_SERVER_ERROR &&
|
TalerErrorCode.WALLET_PAY_MERCHANT_SERVER_ERROR &&
|
||||||
numRetry < maxRetry
|
numRetry < maxRetry
|
||||||
) {
|
) {
|
||||||
// Pretend the operation is pending instead of reporting
|
// Pretend the operation is pending instead of reporting
|
||||||
@ -1942,50 +1942,6 @@ export async function processPurchasePay(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resp.status === HttpStatusCode.BadRequest) {
|
|
||||||
const errDetails = await readUnexpectedResponseDetails(resp);
|
|
||||||
logger.warn("unexpected 400 response for /pay");
|
|
||||||
logger.warn(j2s(errDetails));
|
|
||||||
await ws.db
|
|
||||||
.mktx((x) => [x.purchases])
|
|
||||||
.runReadWrite(async (tx) => {
|
|
||||||
const purch = await tx.purchases.get(proposalId);
|
|
||||||
if (!purch) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// FIXME: Should be some "PayPermanentlyFailed" and error info should be stored
|
|
||||||
purch.purchaseStatus = PurchaseStatus.PaymentAbortFinished;
|
|
||||||
await tx.purchases.put(purch);
|
|
||||||
});
|
|
||||||
throw makePendingOperationFailedError(
|
|
||||||
errDetails,
|
|
||||||
TransactionType.Payment,
|
|
||||||
proposalId,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (resp.status === HttpStatusCode.Gone) {
|
|
||||||
const errDetails = await readUnexpectedResponseDetails(resp);
|
|
||||||
logger.warn("unexpected 410 response for /pay");
|
|
||||||
logger.warn(j2s(errDetails));
|
|
||||||
await ws.db
|
|
||||||
.mktx((x) => [x.purchases])
|
|
||||||
.runReadWrite(async (tx) => {
|
|
||||||
const purch = await tx.purchases.get(proposalId);
|
|
||||||
if (!purch) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// FIXME: Should be some "PayPermanentlyFailed" and error info should be stored
|
|
||||||
purch.purchaseStatus = PurchaseStatus.PaymentAbortFinished;
|
|
||||||
await tx.purchases.put(purch);
|
|
||||||
});
|
|
||||||
throw makePendingOperationFailedError(
|
|
||||||
errDetails,
|
|
||||||
TransactionType.Payment,
|
|
||||||
proposalId,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (resp.status === HttpStatusCode.Conflict) {
|
if (resp.status === HttpStatusCode.Conflict) {
|
||||||
const err = await readTalerErrorResponse(resp);
|
const err = await readTalerErrorResponse(resp);
|
||||||
if (
|
if (
|
||||||
@ -2012,6 +1968,29 @@ export async function processPurchasePay(
|
|||||||
result: undefined,
|
result: undefined,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (resp.status >= 400 && resp.status <= 499) {
|
||||||
|
const errDetails = await readUnexpectedResponseDetails(resp);
|
||||||
|
logger.warn(`server returned ${resp.status} response for /pay`);
|
||||||
|
logger.warn(j2s(errDetails));
|
||||||
|
await ws.db
|
||||||
|
.mktx((x) => [x.purchases])
|
||||||
|
.runReadWrite(async (tx) => {
|
||||||
|
const purch = await tx.purchases.get(proposalId);
|
||||||
|
if (!purch) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// FIXME: Should be some "PayPermanentlyFailed" and error info should be stored
|
||||||
|
purch.purchaseStatus = PurchaseStatus.PaymentAbortFinished;
|
||||||
|
await tx.purchases.put(purch);
|
||||||
|
});
|
||||||
|
throw makePendingOperationFailedError(
|
||||||
|
errDetails,
|
||||||
|
TransactionType.Payment,
|
||||||
|
proposalId,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const merchantResp = await readSuccessResponseJsonOrThrow(
|
const merchantResp = await readSuccessResponseJsonOrThrow(
|
||||||
|
Loading…
Reference in New Issue
Block a user