Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
W tym rozdziale dowiesz się jak obsłużyć zwroty transakcji oraz jak korzystać z Portalu Merchanta.
Zwroty transakcji mogą być zlecane przez Merchanta poprzez API, w tym celu należy przygotować obsługę metod opisanych w Zwroty i transakcje - API. Drugim sposobem wykonania zwrotu jest ręcznie zlecenie poprzez Portal Merchanta.
Info |
---|
Funkcjonalność wykonywania zwrotów nie jest dostępna w godzinach 00:00 - 06:00 , ze względu na wykonywanie w tym czasie procesu rozliczeń/wypłat na konto Merchanta. |
Na tej stronie
Table of Contents |
---|
Zwroty i transakcje - API
Aplikacja Merchant API która jest częścią systemu InPost Pay dostarcza następujące usługi:
Status colour Blue title GET /v1/izi/transaction
Pozwalająca na pobranie listy transakcji dla zautoryzowanego Merchanta. Pełen opis pól dotyczących
transakcji oraz filtrów przy pomocy których można ograniczyć zwracany rezultat, znajduje się poniżej.Status colour Green title POST /v1/izi/transaction/{transaction_id}/refund
Pozwalająca na zlecenie pełnego lub częściowego zwrotu dla wybranej transakcji,
przeprowadzonej w jednym ze sklepów zautoryzowanego Merchanta. W przypadku tej usługi, przeprowadzana jest dodatkowa
weryfikacja zlecenia poprzez weryfikację sygnatury wiadomości.
Info |
---|
Do wygenerowania sygnatury należy użyć secret'u. Aby go otrzymać można go wygenerować samodzielnie w serwisie merchant.inpost.pl lub skontaktować się ze wsparciem dostępnym pod adresem integracjapay@inpost.pl |
Info |
---|
Nie jest to ten sam client_secret, wykorzystywany w celu otrzymania access_token'u. Pełen opis jak poprawnie wygenerować sygnaturę wiadomości znajduje się poniżej. |
Lista metod:
Status colour Blue title GET /v1/izi/transaction
- Lista transakcjiStatus colour Green title POST /v1/izi/transaction/{transaction_id}/refund
- Zlecenie zwrotu
Autoryzacja
Autentykacja jest wymagana i jest ona przeprowadzana tak samo jak w przypadku integracji z InPost Pay (Basket App). Należy pobrać access_token przy
pomocy posiadanego client_id oraz client_secret, a następnie przekazać go jako Bearer Token w nagłówku Authorization.
Dostępne środowiska:
Sandbox: https://sandbox-api.inpost.pl
Produkcja: https://api.inpost.pl
Specyfikacja REST API
Confluence open api |
---|
openapi: 3.0.1 info: title: InPost IZI Merchant Transaction API description: Merchant Transaction REST API license: name: Integration API version: 1.0.0 servers: - url: https://sandbox-api.inpost.pl description: Sandbox - url: https://api.inpost.pl description: Produkcja security: - JWT: - read - write paths: /v1/izi/transaction: get: tags: - Merchant Transaction description: Get a list of transactions operationId: getTransactions parameters: - name: page in: query required: false schema: minimum: 0 type: integer format: int32 default: 0 description: Zero-based page index. - name: per_page in: query required: false schema: minimum: 1 type: integer format: int32 default: 20 description: Number of items to be returned per page. - name: sort_by in: query required: false schema: type: string enum: - created_date - amount - status - payment_method - order_id description: Name of a field which defines sorting criteria. - name: sort_direction in: query required: false schema: type: string enum: - ASC - DESC default: ASC description: Specifies either ascending or descending sort. - name: order_id in: query required: false schema: type: string description: Order ID consists of "order ID by merchant"&"|"&"order ID by InPost Pay".Same value can be shared between multiple transactions. Relates to physical order. example: "12345678|d30ef4c8-3e3e-3456-bb76-67y543ed66" - name: transaction_id in: query required: false schema: type: string format: uuid description: Unique transaction ID assigned by the payment service provider. - name: merchant_pos_id in: query required: false schema: type: string description: Point of Sale ID assigned by the payment service provider. - name: amount_from in: query required: false schema: minimum: 0 type: number description: Transaction amount criteria which will return transactions with amount greater than or equal to the specified amount. - name: amount_to in: query required: false schema: minimum: 0 type: number description: Transaction amount criteria which will return transactions with amount less than or equal to the specified amount. - name: currency in: query required: false schema: type: string description: Currency Code in [**ISO 4217**](https://www.iso.org/iso-4217-currency-codes.html) format. - name: date_from in: query required: false schema: type: string format: date description: Transaction creation date criteria which will return transactions created on or after specified date. - name: date_to in: query required: false schema: type: string format: date description: Transaction creation date criteria which will return transactions created on or before specified date. - name: paymentMethod in: query required: false schema: uniqueItems: true type: array items: type: string enum: - CARD - CARD_TOKEN - GOOGLE_PAY - APPLE_PAY - BLIK_CODE - BLIK_TOKEN - PAY_BY_LINK - SHOPPING_LIMIT - DEFERRED_PAYMENT - PIS description: Payment method used to complete transaction - name: status in: query required: false schema: uniqueItems: true type: array items: type: string enum: - PENDING - AUTHORIZED - CARD_VERIFIED - CAPTURED - REFUNDED - PARTIALLY_REFUNDED - CANCELLED - DECLINED description: Current transaction status responses: '200': description: OK content: application/json: examples: json-response: value: {"items":[{"transaction_id":"72ae5e36-80ce-4307-9d9f-fea6a289e151","merchant_pos_id":"V0123456789","external_transaction_id":"09c6ed97-00dd-4c37-8115-be6beb46f136","description":"Transaction Description","status":"CAPTURED","created_date":"2023-01-30T14:27:03.37883Z","amount":57.29,"currency":"PLN","payment_method":"BLIK_CODE","order_id":"343","operations":[{"external_operation_id":"5fbdabf0-0728-44bb-9f2a-3145eedcef97","type":"CAPTURE","status":"SUCCESS","amount":57.29,"currency":"PLN","operation_date":"2023-01-30T14:27:12.190391Z"},{"external_operation_id":null,"type":"AUTHORIZATION","status":"SUCCESS","amount":57.29,"currency":"PLN","operation_date":"2023-01-30T14:27:03.460984Z"}]}],"page":0,"per_page":1,"count":88} schema: $ref: '#/components/schemas/GetTransactionsResponse' '400': description: | Bad Request. Possible errors: * **validation_failed** - Data sent to the server was invalid. Check details for more information * **required** - Value is required * **invalid** - Provided value is invalid. Please refer to documentation * **too_short** - Provided value is too short * **too_long** - Provided value is too long * **too_small** - Provided value is too small * **too_large** - Provided value is too large * **invalid_format** - Provided value has invalid format * **bad_request** - Bad Request content: application/json: examples: json-response: value: {"status":400,"error":"validation_failed","message":"Data sent to the server was invalid. Check details for more information","details":{"amount_to":["invalid_format"]}} schema: $ref: '#/components/schemas/ErrorResponse' '404': description: | Not Found. Possible errors: * **merchant_not_found** - Merchant was not found * **not_found** - Not Found content: application/json: examples: json-response: value: {"status":404,"error":"merchant_not_found","message":"Merchant was not found","details":{"merchant_id":["00001"]}} schema: $ref: '#/components/schemas/ErrorResponse' '500': description: | Internval Server Error. Possible errors: * **server_error** - Unexpected error occurred during request processing * **internal_server_error** - Interval Server Error content: application/json: examples: json-response: value: {"status":500,"error":"server_error","message":"Unexpected error occurred during request processing","details":{}} schema: $ref: '#/components/schemas/ErrorResponse' /v1/izi/transaction/{transaction_id}/refund: post: tags: - Merchant Transaction description: Order a refund for a given transaction operationId: orderRefund parameters: - name: X-Command-ID in: header required: true schema: type: string format: uuid description: Unique id needed to perform idempotency check. - name: transaction_id in: path required: true schema: type: string format: uuid description: Unique transaction ID assigned by the payment service provider. requestBody: content: application/json: examples: json-request: value: '{"signature":"2ae979eab57f72a979e3be3d79952876c981f6a918b4fe905479b6bfa5baf1ae604a73ae117a9abf1c91d1bb648115c5e608aeef32003c98618671e66cf22fe1","refund_amount":1.23,"external_refund_id":"0b374857-2096-46e0-a9d6-26f313073d32","additional_business_data":{"additional_data":"value"}}' schema: $ref: '#/components/schemas/OrderRefundRequest' required: true responses: '200': description: OK content: application/json: examples: json-response: value: {"external_refund_id":"0b374857-2096-46e0-a9d6-26f313073d32","refund_amount":1.23,"status":"PENDING","description":"refund description"} schema: $ref: '#/components/schemas/OrderRefundResponse' '400': description: | Bad Request. Possible errors: * **validation_failed** - Data sent to the server was invalid. Check details for more information * **required** - Value is required * **invalid** - Provided value is invalid. Please refer to documentation * **too_short** - Provided value is too short * **too_long** - Provided value is too long * **too_small** - Provided value is too small * **too_large** - Provided value is too large * **invalid_format** - Provided value has invalid format * **invalid_signature** - Provided signature does not match expected signature * **unsupported_signature_algorithm** - Requested Signature Algorithm is not supported. Please refer to documentation to get a full list of supported algorithms. * **bad_request** - Bad Request content: application/json: examples: json-response: value: {"status":400,"error":"validation_failed","message":"Data sent to the server was invalid. Check details for more information","details":{"refund_amount":["invalid_format"]}} schema: $ref: '#/components/schemas/ErrorResponse' '403': description: | Forbidden. Possible errors: * **forbidden** - You are not allowed to access requested resource content: application/json: examples: json-response: value: {"status":403,"error":"forbidden","message":"You are not allowed to access requested resource","details":{}} schema: $ref: '#/components/schemas/ErrorResponse' '404': description: | Not Found. Possible errors: * **resource_not_found** - Resource you are looking for was not found * **merchant_not_found** - Merchant was not found * **merchant_secret_not_found** - Merchant Secret was not found * **not_found** - Not Found content: application/json: examples: json-response: value: {"status":404,"error":"merchant_not_found","message":"Merchant was not found","details":{"merchant_id":["00001"]}} schema: $ref: '#/components/schemas/ErrorResponse' '409': description: | Conflict. Possible errors: * **command_already_performed** - Command has already been performed content: application/json: examples: json-response: value: {"status":409,"error":"command_already_performed","message":"Command has already been performed","details":{"commandId":["5d247a70-ef37-4dab-9d41-135f91395ec8"]}} schema: $ref: '#/components/schemas/ErrorResponse' '422': description: | Conflict. Possible errors: * **refund_amount_exceeded** - Requested refund amount exceeds remaining transaction amount * **insufficient_balance** - Merchant account has insufficient balance * **unavailable_balance** - Merchant account balance is currently unavailable * **cannot_refund_transaction** - Requested transaction cannot be refunded * **full_refund_unavailable** - Transaction cannot be fully refunded because it has already been partially refunded. Please provide refund amount content: application/json: examples: json-response: value: {"status":422,"error":"refund_amount_exceeded","message":"Requested refund amount exceeds remaining transaction amount","details":{}} schema: $ref: '#/components/schemas/ErrorResponse' '500': description: | Internval Server Error. Possible errors: * **server_error** - Unexpected error occurred during request processing * **internal_server_error** - Interval Server Error content: application/json: examples: json-response: value: {"status":500,"error":"server_error","message":"Unexpected error occurred during request processing","details":{}} schema: $ref: '#/components/schemas/ErrorResponse' components: schemas: GetTransactionsResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/Transaction' description: List of returned transactions satisfying requested criteria page: type: integer format: int32 description: Returned page number per_page: type: integer format: int32 description: Number of items returned count: type: integer format: int64 description: Count of all items satisfying requested criteria required: - items - page - per_page - count Transaction: type: object properties: transaction_id: type: string description: Unique transaction ID assigned by the payment service provider. merchant_pos_id: type: string description: Point of Sale ID assigned by the payment service provider. external_transaction_id: type: string nullable: true description: Unique transaction ID assigned by merchant. description: type: string nullable: true description: Message describing transaction status: type: string enum: - PENDING - AUTHORIZED - CARD_VERIFIED - CAPTURED - REFUNDED - PARTIALLY_REFUNDED - CANCELLED - DECLINED description: Current transaction status created_date: type: string format: date-time description: Transaction creation date amount: type: number description: Original transaction amount currency: type: string description: Currency Code in [**ISO 4217**](https://www.iso.org/iso-4217-currency-codes.html) format. payment_method: type: string enum: - CARD - CARD_TOKEN - GOOGLE_PAY - APPLE_PAY - BLIK_CODE - BLIK_TOKEN - PAY_BY_LINK - SHOPPING_LIMIT - DEFERRED_PAYMENT - PIS description: Payment method used to complete transaction order_id: type: string nullable: true description: Order ID consists of "order ID by merchant"&"|"&"order ID by InPost Pay".Same value can be shared between multiple transactions. Relates to physical order. example: "12345678|d30ef4c8-3e3e-3456-bb76-67y543ed66" operations: type: array items: $ref: '#/components/schemas/Operation' description: List of operations related to the given transaction required: - transaction_id - merchant_pos_id - external_transaction_id - description - status - created_date - amount - currency - payment_method - order_id - operations Operation: type: object properties: external_operation_id: type: string nullable: true description: Operation ID provided by merchant. type: type: string enum: - CAPTURE - REFUND - REVERSAL - AUTHORIZATION - AUTHENTICATION - CARD_VERIFICATION description: Operation type status: type: string enum: - PENDING - SUCCESS - FAILED description: Current operation status amount: type: number description: Operation amount currency: type: string description: Operation currency code in [**ISO 4217**](https://www.iso.org/iso-4217-currency-codes.html) format. operation_date: type: string format: date-time description: Timestamp defining when given operation happened required: - external_operation_id - type - status - amount - currency - operation_date OrderRefundRequest: type: object properties: external_refund_id: maxLength: 250 minLength: 0 type: string nullable: true description: Refund Order ID assigned by merchant. refund_amount: minimum: 0.01 exclusiveMinimum: false type: number nullable: true description: Amount to be refunded. If none is specified, full refund will be requested. additional_business_data: type: object additionalProperties: type: string description: Additional data related to the refund order. signature: maxLength: 140 minLength: 32 type: string description: | Message signature required to verify genuinity of the request. Calculated by concatenating **X-Command-ID** header value, path variable **transaction_id**, all request body field values (ignoring signature field) in alphanumerical order and a merchant secret (If any of the values is null, then it should be treated as an empty string). Final signature is a lowercase hexadecimal digest of a hash function applied to the concatenated message. Supported hash functions are: SHA-512 Default hash function: SHA-512 If a non-default hash function is used, then the signature must be prefixed by its ID and '_' character Example 1: Merchant Secret: 0051db3a-b9ea-4351-bfeb-bcbe1adcc045 X-Command-ID: f3daf649-30bd-4578-a3bc-89ee822e2887 transaction_id: c50c3756-7ca1-431d-8b4e-4fc322b18548 request_body: { "signature": "TBD", "refund_amount": 1.23, "external_refund_id": "0b374857-2096-46e0-a9d6-26f313073d32", "additional_business_data": { "key1": "value1", "key2": "value2" } } Intermediate signature: f3daf649-30bd-4578-a3bc-89ee822e2887c50c3756-7ca1-431d-8b4e-4fc322b18548key1value1key2value20b374857-2096-46e0-a9d6-26f313073d321.230051db3a-b9ea-4351-bfeb-bcbe1adcc045 Valid Signatures: a5cf845e2a8361a4422f54485e423df60b0209c0b039ea8cad8a0cceb67ca5bdd51a3fa8634e3a2e9ecdb61279b1875d2b83fcf64ab1f93d4336116a13558b8a SHA-512_a5cf845e2a8361a4422f54485e423df60b0209c0b039ea8cad8a0cceb67ca5bdd51a3fa8634e3a2e9ecdb61279b1875d2b83fcf64ab1f93d4336116a13558b8a Example 2: Merchant Secret: 0051db3a-b9ea-4351-bfeb-bcbe1adcc045 X-Command-ID: f3daf649-30bd-4578-a3bc-89ee822e2887 transaction_id: c50c3756-7ca1-431d-8b4e-4fc322b18548 request_body: { "signature": "TBD", "refund_amount": null, "external_refund_id": null } Intermediate signature: f3daf649-30bd-4578-a3bc-89ee822e2887c50c3756-7ca1-431d-8b4e-4fc322b185480051db3a-b9ea-4351-bfeb-bcbe1adcc045 Valid Signatures: 3d0eab2e4b972655c24c3df583967484820920daf5771f4638def264c86a9c66646d38b455c0d753414cda22ec94ff88dc5d2163ea5a98aca3b34eea04897b9d SHA-512_3d0eab2e4b972655c24c3df583967484820920daf5771f4638def264c86a9c66646d38b455c0d753414cda22ec94ff88dc5d2163ea5a98aca3b34eea04897b9d required: - signature OrderRefundResponse: type: object properties: external_refund_id: type: string description: Refund ID assigned by the merchant. nullable: true refund_amount: type: number description: Amount that has been ordered to be refunded status: type: string enum: - PENDING - SUCCESS - FAILED description: Current refund status description: type: string nullable: true description: Refund order description required: - external_refund_id - refund_amount - status - description ErrorResponse: type: object properties: status: type: integer format: int32 description: HTTP status code error: type: string description: Error code identifying the type of error message: type: string description: Message describing occurred error details: type: object description: Details object possibly containing information related to the occurred error. Please see specific API docs for examples required: - status - error - message - details securitySchemes: JWT: type: http scheme: bearer bearerFormat: JWT |
Panel Merchanta
Portal Merchanta, to portal umożliwiający:
Oglądanie szczegółów poszczególnych transakcji
Realizację zwrotów
Wyszukiwanie rozliczeń
Podgląd podpisanych dokumentów.
Na samym dole strony znajdziesz instrukcje korzystania z Portalu Merchanta.
Link do panelu Merchanta (zwroty i transakcje): https://malaysia.prod.0000wpo12a.vodeno.online/centaur-web/
Link do panelu administratora (nadawanie uprawnień): https://malaysia.prod.0000wpo12a.vodeno.online/
Instrukcja obsługi panelu Merchanta
Instrukcja użytkownika
View file | ||
---|---|---|
|
Przykładowy raport rozliczeniowy
View file | ||
---|---|---|
|