refund/void/credit (and auth/capture) are unimplemented stubs that silently return CANCELED
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 33/100
Línea de trabajo
Stubs live in src/main/java/org/killbill/billing/plugin/gocardless/GoCardlessPaymentPluginApi.java (authorize L72, capture L82, void L219, credit L230, refund L241). Read purchasePayment first to see how the GoCardless payment id is stored (first payment reference plus paymentId plugin property); refund and credit then use the pinned SDK's RefundService, void the pending_submission cancel action. authorize/capture should raise PaymentPluginApiException rather than return CANCELED. See #43 for asynchronous refund state and the existing tests for expectations.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
Five of the seven PaymentPluginApi transaction methods are stubs. They ignore their arguments, never call GoCardless, and unconditionally return PaymentPluginStatus.CANCELED:
| Method | Line |
|---|---|
authorizePayment |
L72 |
capturePayment |
L82 |
voidPayment |
L219 |
creditPayment |
L230 |
refundPayment |
L241 |
Only purchasePayment talks to the gateway.
Why this matters
Refunds are the significant gap. GoCardless supports refunds against a collected payment (POST /refunds), and the pinned SDK already exposes RefundService. Today a refund issued in Kill Bill silently reports CANCELED while no money moves — the operator gets no error telling them the operation was not performed, and Kill Bill and GoCardless diverge. Any real deployment needs refunds.
Credit maps naturally onto the same RefundService, or onto a payout depending on the semantics wanted.
Void has no meaningful equivalent once a collection is submitted, but a GoCardless payment in pending_submission can be cancelled (POST /payments/:id/actions/cancel), which is the closest analogue and is worth wiring up.
Auth/capture genuinely does not exist in bank debit schemes — there is no authorization hold. These two should stay unimplemented, but should say so explicitly.
Proposed work
- Implement
refundPaymentagainstRefundService, resolving the GoCardless payment id from the transaction (it is already stored —purchasePaymentwrites it as the first payment reference and as apaymentIdplugin property). - Implement
creditPayment, deciding explicitly whether it maps to a refund or a payout. - Implement
voidPaymentas a payment cancellation, valid only while the payment has not yet been submitted; return a clean error otherwise. - For
authorizePayment/capturePayment, throwPaymentPluginApiExceptionstating the operation is not supported by bank debit schemes, rather than silently returningCANCELED.
Point 4 applies to all of them: a stub that reports CANCELED is indistinguishable from a genuine gateway-side cancellation. Unsupported operations should be loud.
Note that refund state is asynchronous too, so this overlaps with #43 — a refund is not final when the API call returns.
- Lenguaje dominante
- Java
- Estrellas
- 4
- Forks
- 7
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de killbill/killbill-gocardless-plugin
-
Migrate from deprecated Redirect Flows to Billing Requests (blocked on gocardless-pro SDK upgrade)Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 18/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 18/100
-
Webhooks not implemented: processNotification is a stub, async scheme events are never recordedAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
Todos los issues de killbill/killbill-gocardless-plugin
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
wultra/powerauth-tests#980 ·
-
account bug communication lecture
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
line/centraldogma#1397 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
cryptomator/hub#515 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
vert-x3/vertx-mail-client#268 ·