-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feature(payments-plugin): PayPal two-step flow implementation #3099
base: minor
Are you sure you want to change the base?
feature(payments-plugin): PayPal two-step flow implementation #3099
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
.vscode/launch.json
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not quite sure if most of the maintainers use WebStorm, but this makes it way easier to execute a specific test file in VSCode.
Also had to make some changes to the get-package-dir
to make it work not only for the e2e within the payments-plugin
.
}); | ||
|
||
// eslint-disable-next-line no-console | ||
console.log('Auth Token: ', shopClient.getAuthToken()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This token is printed, so we can enter it in the Web UI of the paypal plugin. I would be open to setting this automatically in the Vendure REST Endpoint, but I wasn't quite sure how.
} | ||
|
||
// @ts-ignore | ||
function html(strings, ...values) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well. I know we shouldn't integrate code only for syntax highlighting, but as this isn't code of the library itself and only exists for testing purposes, one could argue that it's still okay.
Especially as it doesn't require additional dependencies.
packages/payments-plugin/src/paypal/paypal-authorization.service.ts
Outdated
Show resolved
Hide resolved
packages/payments-plugin/src/paypal/paypal-authorization.service.ts
Outdated
Show resolved
Hide resolved
I still have to implement the idempotency headers supported by the PayPal Api, even though it already works without them. This could also be done is a future PR. |
if (!sessionOrder) { | ||
throw new IllegalOperationError('Session has no active order'); | ||
} | ||
if (sessionOrder.state !== 'ArrangingPayment') { | ||
throw new IllegalOperationError('Order must be in arranging payment state'); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think these could be internationalized with existing error message for example there are:
"NO_ACTIVE_ORDER_ERROR": "There is no active Order associated with the current session",
and
"ORDER_MODIFICATION_ERROR": "Order contents may only be modified when in the \"AddingItems\" state",
"ORDER_PAYMENT_STATE_ERROR": "A Payment may only be added when Order is in \"ArrangingPayment\" state",
"ORDER_STATE_TRANSITION_ERROR": "Cannot transition Order from \"{ fromState }\" to \"{ toState }\"",
Might be good to take a second pass over all thrown errors and see what can be internationalized and reused.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Really good feeback, thank you :) Will definetly do that!
a46fc50
to
3674cc2
Compare
3674cc2
to
cda6f72
Compare
Renamed the commit messages to fit other scopes and rebased on minor branch. |
058e1e3
to
dc6eaeb
Compare
+ Added types for PayPal REST Api + Added GraphQL code for PayPal Payment provider + Added PayPal handler + Added PayPal service for REST requests + Added PayPal helper for order mutations and validations
…ders * Switched to args based configuration instead of VendureConfig * Created new types for PayPalSdkPlugin to debug server * Some cleanup of not used imports
…using the native fetch api
… of the PayPal payments plugin
…sic paypal payments
* Provided better error message in various cases * Better overview of mocked data using fixtures file * Integrating logger with logger ctx of the plugin
+ Added transactionId to refunds
+ Added unit tests for paypal order helper
- Removed unused method in helpers
d32174a
to
0bc281c
Compare
…nt for assertions
Hey @michaelbromley thank you for the work you have done for this great FOSS project. I just wanted to ask if this has any chance of getting merged in the future. I still have to add documentation, will do that after a review. I don't want to rush you, just want to know if it's even possible that this gets merged :D |
Description
This PR introduces a PayPal payments plugin based on the PayPal Orders Api with a 2 step flow as specified in the Vendure documentation.
The main purpose of this plugin is to offer the user a solution where PayPal can be used directly without a step in between.
Documentation will be added by me before this plugin is merged. Just want to make sure I don't have to change it after review feedback of the implementation.
Breaking changes
I am not able to determine a breaking change. The implemented features represent new functionality and should have no effect on existing implementations.
Overview
Screenshots
Checklist
📌 Always:
👍 Most of the time: