Trustly Instant Bank Deposit - Pay & Play Flow
The following method IDs are covered in this section:
ID | Name | Credit/Debit State |
---|---|---|
162 | TrustlyInstantBankDeposit | DepositedByProvider |
Payment method interaction type: Redirection to External Payment Provider and notification (see Interaction Types).
Redirect Integration
Currently not supported.
Backend2BackendIntegration
On the Pay N Play flow a payment is initiated without userdata such as Firstname and Lastname.
The merchant needs to send ShouldRequestKYC = true.
The following parameters can be provided in initiatePaymentRequest.specificPaymentData:
key (value type, account type, required) | value |
---|---|
MerchantNotificationUrl (string, required) | The URL where the user will be redirected after payment execution with payment execution result |
UrlTarget (string, optional) | The html target/framename of the SuccessUrl. Used for updating iframe. Only _top, _self or _parent are supported. |
ShouldRequestKYC (string, mandatory for the Pay & Play Flow) | The merchant needs to send this parameter for the Pay & Play flow. |
User Data
For the TrustlyInstantBankDeposit in the Trustly Pay N Play (Pure) flow the merchant should send a fixed userID when the payment is initiated.
The use case is the Trustly deposit being used to register a user to the merchant´s site. When registering (or using the registration flow mistakenly to login) the user is anonymous as the payment is initiated.
Fixed userID
A fixed userID for the registrating anonymous user will be created by PXP and should be used on all initial payments in both TEST1 and LIVE.
ExternalID (payerID) and username: PNP_InitialUser
details: country (ie. SE)
After a permanent user is associated on the first payment by the merchant passing the final userID (payerID) in the handlePaymentStateChangedNotificationResponse (see sample below), the merchant will have to send all the actual user details (FirstName, LastName, etc.) of the permanent user when initiating the next payment. When the merchant fails to do so, the payment will fail as the required user details are not present.
User data for the permanent user
Please pass the user details for the permanent user on the next payment - on a TrustlyInstantBankDeposit or a TrustlyInstantBankWithdrawal.
The user details include FirstName, LastName, eMail and Country.
UserVerificationFailed
PXP will set the state UserVerificationFailed as a new final state when the merchant initiates a TrustlyInstantBankDeposit with PayerID PNP_InitialUser but fails to provide a user in the handlePaymentStateChangedNotificationResponse. PXP then will then send “FINISH” to Trustly – resulting in the payment being aborted – and move the payment to state UserVerificationFailed.
PXP can optional notify the merchant about the state UserVerificationFailed.
We expect the merchant to use that fixed userID only for Trustly Pay N Play payments. The above flow with state UserVerificationFailed will not apply to payments initiated with other users.
When the merchant sends that fixed userID, PXP will generate a random value for the customer record and send it to Trustly.
Example initiatePaymentRequest:
<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<merchantID>YourTestMerchant</merchantID>
<shopID>YourTestShop</shopID>
<merchantTransactionID>26706991-8112-4de8-a8fa-9c893d196c9f</merchantTransactionID>
<paymentMethodID>162</paymentMethodID>
<amount currencyCode="SEK">30.00</amount>
<userID>PNP_InitialUser</userID>
<userIP>127.0.0.1</userIP>
<userSessionID>8a975451-a5b9-4a65-a815-76856e68a66c</userSessionID>
<creationTypeID>1</creationTypeID>
<specificPaymentData>
<data xsi:type="keyStringValuePair">
<key>MerchantNotificationUrl</key>
<value>https://merchant.com/notification.html</value>
</data>
<data xsi:type="keyStringValuePair">
<key>UrlTarget</key>
<value>http://urlTargetForIFrameUpdates</value>
</data>
</specificPaymentData>
</initiatePaymentRequest>
Example initiatePaymentResponse:
<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>YourTestMerchant</merchantID>
<shopID>YourTestShop</shopID>
<paymentMethod>
<key>162</key>
<value>TrustlyInstantBankDeposit</value>
</paymentMethod>
<merchantTransactionID>26706991-8112-4de8-a8fa-9c893d196c9f</merchantTransactionID>
<paymentID>1ed35838-cd16-4b45-8f02-47be9f342598</paymentID>
<userID>PNP_InitialUser</userID>
<paymentProvider>
<key>114</key>
<value>Trustly</value>
</paymentProvider>
<amount currencyCode="SEK">30.00</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>9da321e6-0e58-4520-a427-f2d9cab154b8</id>
<definition>
<key>30</key>
<value>RedirectURLCreated</value>
</definition>
<createdOn>2021-03-17T08:58:23.0369586Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>RedirectionUrl</key>
<value>https://test.trustly.com/_/orderclient.php?Locale=en_SE&OrderID=13944871735&SessionID=77b412ea-d52f-4ce1-b7d1-11da2de6a911</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">12.55</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>13944871735</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>245008</value>
</detail>
</paymentDetails>
</payment>
</initiatePaymentResponse>
The possible payment states in initiatePaymentResponse are listed below:
Payment States | Description |
---|---|
RedirectURLCreated (287) | OK state; Redirect user to the URL |
DuplicatePaymentValidationFailed (369) | A payment with the same merchantTransactionID already exists. |
InitiateErrorReportedByProvider (4) | Payment was not initiated; See below table Error Codes for list of common errors |
Intermediate notification
After the user was redirected to Trustly and provides his bank account details to Trustly, PXP then will send a handlePaymentStateChangednotificationRequest to the merchant.
The merchant has to reply with 0 (ProcessedSuccessfully/Approved) or 15 (BlockedByMerchant/Rejected).
On a response with OK, the payment is continued and a notification for the state DepositedByProviderwill be sent. An account notification will also be sent (if enabled).
The merchant may also add a LIMIT value to the response when the merchant intends to lower the payment amount. The limit will be displayed to the customer and the final amount may be equal or lower than the LIMIT amount.
When the payment is initiated with the fixed userID for the anonymous user, the merchant is expected to sent the final assigned user in the handlePaymentStateChangedNotificationResponse.
On a response with the value "15", the payment will be stopped and moved to state KYCValidationFailed.
Instaead of sending the KYC data, Trustly may return an error that KYC data cannot be retrieved or that the user is underage or unverified. In that case the state "KYCValidationFailed" is set, the payment is aborted and a notification is sent to the merchant. In addition a notification for the state AbortedByCustomer is also sent to the merchant.
KYC data vs. Account notification data
The KYC notification in the Pay N Play flow is sent by Trustly at Bank login stage. The Account notification data, in contrast, is sent anytime the user selects the account they want the deposit taken from.
Example handlePaymentStateChangedNotificationRequest with state=InquiryRequestReceivedFromProvider:
<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment xmlns="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
<merchantID>YourTestMerchant</merchantID>
<shopID>YourTestShop</shopID>
<paymentMethod>
<key>162</key>
<value>TrustlyInstantBankDeposit</value>
</paymentMethod>
<merchantTransactionID>7e4035d9-d769-41f4-a65c-482586bbac54</merchantTransactionID>
<paymentID>35b6691b-abdf-4170-927e-a2f1c0dd02ae</paymentID>
<userID>pp_party332</userID>
<paymentProvider>
<key>114</key>
<value>Trustly</value>
</paymentProvider>
<amount currencyCode="EUR">12.0300</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>6842c5b3-924b-4707-ad15-465482409f71</id>
<definition>
<key>529</key>
<value>InquiryRequestReceivedFromProvider</value>
</definition>
<createdOn>2019-12-04T08:12:28.0644155Z</createdOn>
<description>{ "method": "kyc", "params": { "signature": "X2p1H/fwwHua7s2q8alvE3Ji9ZjpZ7x5gIXZpit1zKOj5iYvCoOt+4OpJRdm1N4btRrj/+vLtHF1S0mAlYdu7GT114r1VHrYXZCjRX2WzsJmufxepEeACyJOrEHtgXDzJl/EIx1awPUyG5MxBQlgvTHJNIvFPG4cJlV8tKvv/bL/AyXZWzeKdgQkw7zpzo5fJnK0upfLKxzZoImws2Xt1KFrLOTfzfq49FlhqS6wsZYkfuPXV+vcOLT2/PYqoPI7kAjcagCeh4m+pnV7Fu40nksGkfOU5+4IySIIZgPlcqjnw2Mh4vu68mUWX+qLcrwkAM06RJ9SgIUnNxsBKIGk/A==", "uuid": "258a2184-2842-b485-25ca-293525152425", "data": { "orderid": "3109226646BDD", "messageid": "5436", "kycentityid": "29a750aa-0bad-4a28-a42d-ffb9a690d93a", "notificationid": "9876543456", "attributes": { "personid": "SE196512171957", "firstname": "Joe", "lastname": "Johnson", "dob": "1965-12-17", "street": "Street 10", "zipcode": "11253", "city": "STOCKHOLM", "country": "Sweden" } } }, "version": "1.1" }</description>
<paymentStateDetails>
<detail xsi:type="keyIntValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">12.0300</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>5436</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>3109226646BDD</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCEntityId</key>
<value>29a750aa-0bad-4a28-a42d-ffb9a690d93a</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCPersonId</key>
<value>SE196512171957</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCFirstname</key>
<value>Joe</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCLastname</key>
<value>Johnson</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCDateOfBirth</key>
<value>1965-12-17</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCStreet</key>
<value>Street 10</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCZipCode</key>
<value>11253</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCCity</key>
<value>STOCKHOLM</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCCountry</key>
<value>Sweden</value>
</detail>
</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>
Example handlePaymentStateChangedNotificationResponse (successful case):
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationResponse
xmlns="http://www.cqrpayments.com/PaymentProcessing"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key>0</key>
<value>ProcessedSuccessfully</value>
</resultCode>
<resultMessage>Approved payment</resultMessage>
</handlePaymentStateChangedNotificationResponse>
Example handlePaymentStateChangedNotificationResponse (sucessful case with LIMIT detail):
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationResponse
xmlns="http://www.cqrpayments.com/PaymentProcessing"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key>0</key>
<value>ProcessedSuccessfully</value>
</resultCode>
<resultMessage>Approved payment</resultMessage>
<details>
<detail xsi:type="keyStringValuePair">
<key>LimitAmount</key>
<value>400.00</value>
</detail>
</details>
</handlePaymentStateChangedNotificationResponse>
Example handlePaymentStateChangedNotificationResponse (successful case with userID response for Pay N Play (anonymous) flow:
<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key>0</key>
<value>ProcessedSuccessfully</value>
</resultCode>
<resultMessage>Approved payment</resultMessage>
<details>
<detail xsi:type="keyStringValuePair">
<key>UserID</key>
<value>81bd9c50-c0cc-49f0-9430-4f4a8f</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>LimitAmount</key>
<value>400.00</value>
</detail>
</details>
</handlePaymentStateChangedNotificationResponse>
Example handlePaymentStateChangedNotificationResponse (error case):
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationResponse
xmlns="http://www.cqrpayments.com/PaymentProcessing"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key>15</key>
<value>BlockedByMerchant</value>
</resultCode>
<resultMessage>Rejected payment</resultMessage>
</handlePaymentStateChangedNotificationResponse>
Example handlePaymentStateChangedNotification for state KYCValidationFailed :
<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment xmlns="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
<merchantID>YourTestMerchant</merchantID>
<shopID>YourTestShop</shopID>
<paymentMethod>
<key>162</key>
<value>TrustlyInstantBankDeposit</value>
</paymentMethod>
<merchantTransactionID>77c030fe-5e0b-4b30-b1ff-1298bb12f73d</merchantTransactionID>
<paymentID>0280f8e0-310a-4c90-b9d9-9b19849f4b06</paymentID>
<userID>pp_party332</userID>
<paymentProvider>
<key>114</key>
<value>Trustly</value>
</paymentProvider>
<amount currencyCode="EUR">46.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>4bbe038b-e7d2-44dc-8ba9-f7d27f0298e8</id>
<definition>
<key>605</key>
<value>KYCValidationFailed</value>
</definition>
<createdOn>2019-12-04T08:25:40.55</createdOn>
<description />
<paymentStateDetails>
<detail xsi:type="keyIntValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">46.0000</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>5437</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>2986525230BDD</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCEntityId</key>
<value>29a750aa-0bad-4a28-a42d-ffb9a690d93a</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCPersonId</key>
<value>SE196512171957</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCFirstname</key>
<value>Joe</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCLastname</key>
<value>Johnson</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCDateOfBirth</key>
<value>1965-12-17</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCStreet</key>
<value>Street 10</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCZipCode</key>
<value>11253</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCCity</key>
<value>STOCKHOLM</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCCountry</key>
<q1:value>Sweden</q1:value>
</q1:detail>
</q1:paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>
When the state KYCValidationFailed is reached due to the user being underage, the information underage is saved in PaymentDetails as ProviderStatusMessage. The same applies for message unverified (Insufficient KYC information).
<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment xmlns="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
<merchantID>YourTestMerchant</merchantID>
<shopID>YourTestShop</shopID>
<paymentMethod>
<key>162</key>
<value>TrustlyInstantBankDeposit</value>
</paymentMethod>
<merchantTransactionID>c8c5d800-374a-4768-82f4-4f5cfcd57645</merchantTransactionID>
<paymentID>f89b2ec8-058d-43fb-85ef-08b44a0314a9</paymentID>
<userID>pp_party332</userID>
<paymentProvider>
<key>114</key>
<value>Trustly</value>
</paymentProvider>
<amount currencyCode="EUR">21.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>dcac8616-90f6-42c7-b4ad-6b7885a161e6</id>
<definition>
<key>605</key>
<value>KYCValidationFailed</value>
</definition>
<createdOn>2019-12-04T13:39:56.247</createdOn>
<description />
<paymentStateDetails>
<detail xsi:type="keyIntValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">21.0000</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>5468</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>2312017550BDD</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderStatus</key>
<value>1</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderStatusMessage</key>
<value>underage</value>
</detail>
</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>
Final state notification
The standard notification mechanism is used for notifying the merchant in the background (asynchronously) about payment state changes. For more information see PaymentStateChangedNotification.
Possible states in notification:
Payment States | Description |
---|---|
DepositedByProvider (29) | Success state; Payment has been executed |
RefusedByProvider (100) | Refused state. Payment was not accepted by provider. |
AbortedByCustomer (101) | Unsuccessful state. Payment has been aborted by the customer or by Trustly. |
Example handlePaymentStateChangedNotificationRequest:
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>YourTestMerchant</merchantID>
<shopID>KalixaAcceptDEMO</shopID>
<paymentMethod>
<key>162</key>
<value>TrustlyInstantBankDeposit</value>
</paymentMethod>
<merchantTransactionID>20141230_6</merchantTransactionID>
<paymentID>b22aa889-fa79-4762-88a7-863ad33bceed</paymentID>
<userID>KalxiaTestUser_7</userID>
<paymentProvider>
<key>114</key>
<value>Trustly</value>
</paymentProvider>
<amount currencyCode="EUR">100.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>195.72.132.1</userIP>
<state>
<id>ac60f8c8-4ebd-4ba3-a070-83c1f82581c0</id>
<definition>
<key>29</key>
<value>DepositedByProvider</value>
</definition>
<createdOn>2014-12-30T09:16:58.293</createdOn>
<paymentStateDetails xsi:nil="true" />
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">100.0000</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>1270</value>
</detail>
<detail xsi:type="keyIntValuePair">
<key>PaymentScoring</key>
<value>722501</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>1939284750</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>0</paymentAccountID>
</paymentAccount>
</payment>
</handlePaymentStateChangedNotificationRequest>
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>YourTestMerchant</merchantID>
<shopID>150001</shopID>
<paymentMethod>
<key>162</key>
<value>TrustlyInstantBankDeposit</value>
</paymentMethod>
<merchantTransactionID>b3b05dab-1cab-43dc-b9aa-484845b3ea2a</merchantTransactionID>
<paymentID>5c0a969d-21c7-446e-a8c1-0fe7fb1547b4</paymentID>
<userID>pp_party332</userID>
<paymentProvider>
<key>114</key>
<value>Trustly</value>
</paymentProvider>
<amount currencyCode="EUR">0.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>442c7535-76b9-40a3-9ad9-23febfd2c571</id>
<definition>
<key>101</key>
<value>AbortedByCustomer</value>
</definition>
<createdOn>2021-08-09T14:51:02.1959813Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyIntValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">21.0000</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>264479</value>
</detail>
</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>YourTestMerchant</merchantID>
<shopID>YourTestShop</shopID>
<paymentMethod>
<key>162</key>
<value>TrustlyInstantBankDeposit</value>
</paymentMethod>
<merchantTransactionID>b3b05dab-1cab-43dc-b9aa-484845b3ea2a</merchantTransactionID>
<paymentID>5c0a969d-21c7-446e-a8c1-0fe7fb1547b4</paymentID>
<userID>pp_party332</userID>
<paymentProvider>
<key>114</key>
<value>Trustly</value>
</paymentProvider>
<amount currencyCode="EUR">0.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>442c7535-76b9-40a3-9ad9-23febfd2c571</id>
<definition>
<key>1001</key>
<value>RefusedByProvide </value>
</definition>
<createdOn>2021-08-09T14:51:02.1959813Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyIntValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">21.0000</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>264479</value>
</detail>
</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>
Standalone Account Notification
Account notifications, if received from Trustly, are sent a as seperate PaymentAccountChangedNotification outside of the flow of the payment method.
Example handlePaymentAccountChangedNotification (with account notification):
<?xml version="1.0" encoding="UTF-8"?>
<handlePaymentAccountChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<paymentAccount>
<merchantID xmlns="http://www.cqrpayments.com/PaymentProcessing">29101992</merchantID>
<userID xmlns="http://www.cqrpayments.com/PaymentProcessing">pp_party332</userID>
<paymentAccountID xmlns="http://www.cqrpayments.com/PaymentProcessing">29cd12e8-71ea-4f16-b446-17440237a34b</paymentAccountID>
<paymentAccountTypeID xmlns="http://www.cqrpayments.com/PaymentProcessing">25</paymentAccountTypeID>
<isActive xmlns="http://www.cqrpayments.com/PaymentProcessing">true</isActive>
<isVisible xmlns="http://www.cqrpayments.com/PaymentProcessing">true</isVisible>
<specificPaymentAccountData xmlns="http://www.cqrpayments.com/PaymentProcessing">
<data xsi:type="keyStringValuePair">
<key>AccountNumber</key>
<value>1ebeb0db-f822-4675-a582-4228cce306fa</value>
</data>
<data xsi:type="keyStringValuePair">
<key>AccountOwnerAddressName</key>
<value>Examplestreet 1</value>
</data>
<data xsi:type="keyStringValuePair">
<key>AccountOwnerAddressCity</key>
<value>Helsinki</value>
</data>
<data xsi:type="keyStringValuePair">
<key>AccountOwnerAddressPostalCode</key>
<value>12345</value>
</data>
<data xsi:type="keyStringValuePair">
<key>CustomerID</key>
<value>FI080360-268A</value>
</data>
<data xsi:type="keyStringValuePair">
<key>AccountOwnerCountryName</key>
<value>FINLAND</value>
</data>
<data xsi:type="keyStringValuePair">
<key>PaymentAccountLabel</key>
<value>************000011</value>
</data>
<data xsi:type="keyStringValuePair">
<key>BankName</key>
<value>Demos Bank</value>
</data>
<data xsi:type="keyStringValuePair">
<key>CustomerName</key>
<value>Riku Pohjonen</value>
</data>
<data xsi:type="keyStringValuePair">
<key>InitialMerchantTransactionID</key>
<value>da97653a-03f5-44ba-b0be-d9c0a8a4d6b5</value>
</data>
</specificPaymentAccountData>
<state xmlns="http://www.cqrpayments.com/PaymentProcessing">
<id>6047666c-a75d-4196-9162-ce798925f716</id>
<definition>2</definition>
<createdOn>2021-04-16T05:59:44.9602539Z</createdOn>
<paymentAccountStateDetails>
<detail xsi:type="keyStringValuePair">
<key>paymentAccountStateReasonMessage</key>
<value>Wallet account created.</value>
</detail>
</paymentAccountStateDetails>
</state>
</paymentAccount>
</handlePaymentAccountChangedNotificationRequest>
Account details in notification:
Account detail | Description |
---|---|
PaymentAccountID | A payment account is being created at PXP. Trustly´s accountID has been saved at PXP. It will be possible to initiate a bank transfer withdrawal with the payment method TrustlyInstantBankWithdrawal. |
InitialMerchantTransactionID | The merchantTransactionID of the payment with which is account was created. |
AccountOwnerAddressName | The address of the account holder, e.g. "Examplestreet 1" |
AccountOwnerAddressCity | The city of the account holder, e.g. "Examplecity" |
AccountOwnerAddressPostalCode | The zip code of the account holder, e.g. "12345" |
CustomerID | An ID that uniquely identifies the account holder (also called personID). Note: The format of this field will for some countries look different than the example, e.g. "SE198201019876", |
AccountOwnerCountryName | The country of the bank account / bank, e.g. "SWEDEN". |
AccountNumber | The Trustly account number value. |
BankName | Bankname of this acount. e.g. "Demo bank" or "SEB" |
PaymentAccountLabel | The bank account number, shown as a masked value, e.g. "*** 084057". This value - called "descriptor" by Trustly - may contain spaces or other characters that are non-numerical (- or / for example). This value is meant to be used to display the value to the end user. |
CustomerName | The name on the account holder, e.g. "John Doe" |
Trustly error codes
ProviderResponseCode | ProviderResponseMessage |
---|---|
602 | ERROR_FUNCTION_ACCESS_DENIED - The merchant does not have access to this function. |
607 | ERROR_HOST_ACCESS_DENIED - The IP address of the merchant has not been added to Trustly's IP-whitelist. |
615 | ERROR_INVALID_AMOUNT - The Amount specified in the deposit call is invalid. The amount must be > 0 with 2 decimals. |
616 | ERROR_INVALID_CREDENTIALS - The username and/or password used in the API call is incorrect. |
620 | ERROR_UNKNOWN - There could be several reasons for this error, contact your integration manager for details. |
623 | ERROR_INVALID_PARAMETERS - Some value or parameter in the deposit call does not match the expected format. |
636 | ERROR_UNABLE_TO_VERIFY_RSA_SIGNATURE - The signature in the deposit call could not be verified using the merchant's public key. Either the wrong private key is used, or the the data object used to create the signature was serialized incorrectly. |
637 | ERROR_DUPLICATE_MESSAGE_ID - The MessageID sent in the deposit has been used before. |
638 | ERROR_ENDUSER_IS_BLOCKED - The enduser that initiated the payment is blocked. |
645 | ERROR_INVALID_LOCALE - The Locale-attribute is sent with an incorrect value. |
688 | ERROR_DUPLICATE_UUID - This uuid has been used before. |
696 | ERROR_ENDUSERID_IS_NULL - The EndUserID sent in the request is null |
697 | ERROR_MESSAGEID_IS_NULL - The MessageID sent in the request is null |
698 | ERROR_INVALID_IP - The IP attribute sent is invalid. Only one IP address can be sent. |
700 | ERROR_MALFORMED_SUCCESSURL - The SuccessURL sent in the request is malformed. It must be a valid http(s) address. |
701 | ERROR_MALFORMED_FAILURL - The FailURL sent in the request is malformed. It must be a valid http(s) address. |
702 | ERROR_MALFORMED_TEMPLATEURL - The TemplateURL sent in the request is malformed. It must be a valid http(s) address. |
703 | ERROR_MALFORMED_URLTARGET - The URLTarget sent in the request is malformed. |
704 | ERROR_MALFORMED_MESSAGEID - The MessageID sent in the request is malformed. |
705 | ERROR_MALFORMED_NOTIFICATIONURL - The NotificationURL sent in the request is malformed. It must be a valid http(s) address. |
706 | ERROR_MALFORMED_ENDUSERID - The EndUserID sent in the request is malformed. |
Updated almost 3 years ago