{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-epc/epc.sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["json-schema","admonition"]},"type":"markdown"},"seo":{"title":"Test: Receive PayShap","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":["openapi"],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"test-receive-payshap"},"children":["Test: Receive PayShap"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In order to ensure that you have implemented the functionality to ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/epc/public/payshap-receive-payment"},"children":["receive a PayShap payment"]}," correctly, you must be able to show the following:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["All the API operations implemented return the expected responses depending on the scenario (for example, the correct error response is returned in the case of an error scenario)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You are able to resolve an inbound proxy request and correctly return a proxy resolution response."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If you participate in payment authorisation during the clearing phase - you are able to receive a payment authorisation request and correctly return an authorisation response."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You are able to receive a completion message after successful clearing."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Electrum provides a downloadable test pack with step-by-step instructions for performing each test, message flow diagrams, and a list of the expected outcomes for each test. There is space on the spreadsheet where you can record your test outcomes and any other comments or observations."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each test scenario has an associated ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TestID"]}," that must be included in the request message. The testing platform's response to the simulated transaction request is based on the Test ID."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The testing procedure is shown below."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1-download-the-test-pack"},"children":["Step 1: Download the Test Pack"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Download the test pack. The ‘Receive a Payshap Payment’ test pack can be found ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/assets/corporateclienttestpack_electrum_payshapinbound_v2_2_1.8df1bb7c60526a55954b855d3967bf10a200ec677e2a62486683b28dd8a72d6c.c5493cba.xlsx"},"children":["here"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2-perform-the-api-integration-tests"},"children":["Step 2: Perform the API Integration Tests"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Carry out each test case as specified in the test pack.",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["To execute a given test case, use the process described below to ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/epc/public/test-receive-payshap#initiate-a-test"},"children":["initiate"]}," the test with the EPC Testing Platform. Each test case is identified with a unique test code that is used by the EPC Testing Platform to simulate a specific success or failure scenario. Populate the required fields of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InitiationRequest"]}," as specified in the test pack. You will receive an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InitiationResponse"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Electrum Testing Platform then initiates an inbound flow, using normal EPC API operations, by sending you a simulated incoming ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IdentifierDeterminationRequest"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The rest of the payment processing proceeds as you and Electrum send request and response messages to each other using the normal EPC API operations."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The test pack specifies the expected outcome for each transaction."," "," "]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Record the outcome of each test in the space provided.",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["To determine the outcome of a test case, use the process described below to ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/epc/public/test-receive-payshap#request-the-result-of-a-test-from-the-testing-platform"},"children":["request the test result"]}," from the EPC Testing Platform."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use the ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Pass/Fail"]}," column to record whether the expected outcome was achieved in each case. (Note: if you are testing a failure scenario, and the system correctly sends the expected error messages, then the test itself is a success and it is a ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Pass"]},".)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Make note of any interesting or relevant observations in the ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Comments/Notes"]}," column."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Make special note of any specific problems or issues you experienced during testing in the ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Issue Log"]}," columns."," "," "]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Include any raw test data on the test pack spreadsheet."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"initiate-a-test"},"children":["Initiate a Test"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can test any of the scenarios described in the test pack by following these steps:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Send an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InitiationRequest"]}," to the testing platform endpoint (that was provided during onboarding) conforming to the schema below:"]}]},{"$$mdtype":"Tag","name":"JsonSchema","attributes":{"schema":{"$ref":"../../openapi/epc-cicd/bpp-testing-platform-api.yaml#/components/schemas/InitiationRequest"},"options":{},"schemaResolved":{"openapi":"3.1.0","components":{"schemas":{"__root":{"$ref":"#/components/schemas/InitiationRequest"},"InitiationDetails":{"type":"object","required":["domain","proxy"],"properties":{"domain":{"type":"string","description":"A BankservAfrica-specific field requirement that associates this institution with a specific \"domain\"\n- which is essentially a type of namespace.\n\nThis value should correspond to the the Corporate Client who is initiating the request's domain\n"},"proxy":{"type":"string","description":"The value for which the proxy resolution will be performed\n"},"proxyType":{"type":"string","description":"The type of proxy, such as MBNO (mobile number) or CUST (custom). Initiations will default to `MBNO` if this\nis not set.\n","enum":["MBNO","CUST"]},"amount":{"type":"number","format":"double","minimum":0,"description":"The payment amount in the denomination of the indicated currency, in the\nformat '<major units>.<minor units> with the number of minor units (fractional digits)\ncompliant with the number of decimal places published in ISO 4217.\n"},"creditorReference":{"type":"string","description":"The reference for the creditor\n"}}},"InitiationRequest":{"type":"object","required":["testId","initiationDetails"],"properties":{"testId":{"type":"string"},"initiationDetails":{"$ref":"#/components/schemas/InitiationDetails"}}}}}},"schemaResolvedErrors":[]},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"KEY PARAMETERS"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following parameters must be included in the request:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test ID: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["testId"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Domain – the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["domain"]}," value agreed with your sponsor bank: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiationDetails.domain"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Proxy – any value that would lead to a your system returning either a successful or failed proxy resolution, depending on the test scenario: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiationDetails.proxy"]},"."]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Contact Electrum if you have not yet received the development environment endpoint that you will need in order to carry out testing."]}]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":2},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In a response to an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InitiationRequest"]},", the testing platform returns an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InitiationResponse"]}," message. This message includes the UETR of the transaction initiated to simulate the requested test. You can use the UETR to request the result of the test via a separate API call to the testing platform."]}]},{"$$mdtype":"Tag","name":"JsonSchema","attributes":{"schema":{"$ref":"../../openapi/epc-cicd/bpp-testing-platform-api.yaml#/components/schemas/InitiationResponse"},"options":{},"schemaResolved":{"openapi":"3.1.0","components":{"schemas":{"__root":{"$ref":"#/components/schemas/InitiationResponse"},"InitiationResponse":{"type":"object","properties":{"uetr":{"description":"The UETR/UUID for the newly initiated transaction","type":"string","format":"uuid"}}}}}},"schemaResolvedErrors":[]},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Now that the test has been initiated:"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You will receive a simulated ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IdentifierDeterminationRequest"]},". Send a response to the development environment endpoint. The rest of the payment processing proceeds as you and Electrum send request and response messages to each other using the normal EPC API operations."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-the-result-of-a-test-from-the-testing-platform"},"children":["Request the Result of a Test From the Testing Platform"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the testing platform to accept messages that you send, you need to include the appropriate credentials (username and password). These credentials will be supplied to you during your onboarding process."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the testing API to request the outcome from the simulator by sending a message to the testing platform endpoint (that was provided during onboarding) conforming to the schema below."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Send a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TestQuery"]}," request to the testing platform conforming to the schema below."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}," call to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/tests{uetr}"]}," endpoint."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"KEY PARAMETER"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["uetr"]}," field contains the UETR of the transaction that was processed during the test."]}]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":2},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In response to a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TestQuery"]}," request, the testing platform will return a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["QueryResponse"]}," message. This response will include a list of all state events generated by the EPC processing engine during the course of transaction processing."]}]},{"$$mdtype":"Tag","name":"JsonSchema","attributes":{"schema":{"$ref":"../../openapi/epc-cicd/bpp-testing-platform-api.yaml#/components/schemas/QueryResponse"},"options":{},"schemaResolved":{"openapi":"3.1.0","components":{"schemas":{"__root":{"$ref":"#/components/schemas/QueryResponse"},"QueryResponse":{"type":"object","required":["states"],"properties":{"states":{"type":"array","items":{"type":"string"}}}}}}},"schemaResolvedErrors":[]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3-send-proof-of-testing-to-electrum"},"children":["Step 3: Send Proof of Testing to Electrum"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once you have completed all necessary tests, email your completed test pack to Electrum."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-4-ecosystem-pre-production-testing"},"children":["Step 4: Ecosystem (Pre-Production) Testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once you have successfully completed conformance testing, you can move onto ecosystem, or pre-production, testing. This involves full end-to-end testing between all participants including yourself, Electrum, the sponsor bank, and BankservAfrica in a pre-production environment."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Download the ecosystem/pre-production test pack ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/assets/ecosystemtestpack_electrum_payshapinbound_v2_0_1.27dcb19ab735342ed98dafd4aa702d0df2125cdbf507c7ab360d3122d502a788.c5493cba.xlsx"},"children":["here"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Carry out testing as described in steps 2 and 3 above. Send request messages to the Electrum pre-production enviroment using the endpoint that Electrum has supplied you with."]}]},"headings":[{"value":"Test: Receive PayShap","id":"test-receive-payshap","depth":1},{"value":"Step 1: Download the Test Pack","id":"step-1-download-the-test-pack","depth":2},{"value":"Step 2: Perform the API Integration Tests","id":"step-2-perform-the-api-integration-tests","depth":2},{"value":"Initiate a Test","id":"initiate-a-test","depth":3},{"value":"Request the Result of a Test From the Testing Platform","id":"request-the-result-of-a-test-from-the-testing-platform","depth":3},{"value":"Step 3: Send Proof of Testing to Electrum","id":"step-3-send-proof-of-testing-to-electrum","depth":2},{"value":"Step 4: Ecosystem (Pre-Production) Testing","id":"step-4-ecosystem-pre-production-testing","depth":2}],"frontmatter":{"seo":{"title":"Test: Receive PayShap"}},"lastModified":"2025-10-01T07:53:31.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/epc/public/test-receive-payshap","userData":{"isAuthenticated":false,"teams":["anonymous"]}}