MuchBetter withdraw

Payment Method MuchBetter is an innovative, mobile-only payments solution available on both IOS and Android platforms. Customers pay merchants using their MuchBetter account balance. Customers may also receive money from merchants, top up funds (via a number of methods such as credit/debit cards, bank transfers, cash etc.),

The following method IDs are covered in this section:

ID

Name

Credit/Debit State

319

MuchBetterWithdrawal

WithdrawnByProvider (20)

Payment method interaction type: Synchronous execution (see Interaction Types).

  1. User initiates a payment via MuchBetter
  2. Merchant sends a initiatePaymentRequest to PXP payment service
  3. PXP payment service sends PUSH request to MuchBetter
  4. PUSH response is returned to PXP payment service
  5. PXP payment service calls MuchBetter's "Check transaction status" API
  6. PXP payment service receives a query response with transaction status "COMPLETED" and moves the payment to state "WithdrawnByProvider".
  7. Merchant is sent the initiatePaymentResponse

Redirect Integration

Currently not supported.

Sequence diagram

Backend2Backend Integration

The following table contains the fields to be sent in the initiatePaymentRequest.specificPaymentAccountData xml section:

key (value type, account type, required)

value

AccountNumber (string, required)

User's phone number in international format without '+' sign. E.g. 447624222722 where 44 is country code and 7624222722 is user's mobile.

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)

value

PaymentDescription (string)

Billing descriptor

PaymentDescriptionLanguageCode (string)

Two characters language code

Scenario: Successful Payment

Example: initiatePaymentRequest

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <merchantID>KalixaAcceptDemo</merchantID>
    <shopID>KalixaAcceptDemo</shopID>
    <merchantTransactionID>cfd234da2-6ada-abddd-94bf-wadf2-4</merchantTransactionID>
    <paymentMethodID>319</paymentMethodID>
    <amount currencyCode="EUR">2.00</amount>
    <userID>99a3af90-5245-48ca-8c21-b23fdf</userID>
    <userIP>127.0.0.1</userIP>
    <userSessionID>7495c35f-3c55-4a08-a0a0-03f3ed917fbc</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>PaymentDescription</key>
            <value>PaymentDescription</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>PaymentDescriptionLanguageCode</key>
            <value>en</value>
        </data>
    </specificPaymentData>
    <paymentAccountID>8fa1f57f-f5b1-4d82-a1c2-53a0b6cc6111-3</paymentAccountID>
    <paymentAccount>
        <specificPaymentAccountData>
            <data xsi:type="keyStringValuePair">
                <key>AccountNumber</key>
                <value>447624222722</value>
            </data>
        </specificPaymentAccountData>
    </paymentAccount>
</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>KalixaAcceptDemo</merchantID>
        <shopID>KalixaAcceptDemo</shopID>
        <paymentMethod>
            <key>319</key>
            <value>MuchBetterWithdrawal</value>
        </paymentMethod>
        <merchantTransactionID>cfd234da2-6ada-abddd-94bf-wadf2-4</merchantTransactionID>
        <paymentID>4e4de852-bf53-4f7a-80d2-ea9cb0ef0645</paymentID>
        <userID>99a3af90-5245-48ca-8c21-b23fdf</userID>
        <paymentProvider>
            <key>176</key>
            <value>MuchBetter</value>
        </paymentProvider>
        <amount currencyCode="EUR">2.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>13d2faeb-b560-43b2-a2a1-c5514e4eb473</id>
            <definition>
                <key>120</key>
                <value>PendingOnProvider</value>
            </definition>
            <createdOn>2018-11-30T10:23:48.6174473Z</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderResponseCode</key>
                    <value>PENDING</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">2</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>162798</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>25981572</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>8fa1f57f-f5b1-4d82-a1c2-53a0b6cc6111-3</paymentAccountID>
        </paymentAccount>
    </payment>
</initiatePaymentResponse>

Notifications

The standard notification mechanism is used for notifying the merchant in the background (asynchronously) about payment state changes. For more information see PaymentStateChangedNotification.

Scenario: Successful Payment Notification

<?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>KalixaAcceptDemo</merchantID>
        <shopID>KalixaAcceptDemo</shopID>
        <paymentMethod>
            <key>319</key>
            <value>MuchBetterWithdrawal</value>
        </paymentMethod>
        <merchantTransactionID>cfd234da2-6ada-abddd-94bf-wadf2-4</merchantTransactionID>
        <paymentID>4e4de852-bf53-4f7a-80d2-ea9cb0ef0645</paymentID>
        <userID>99a3af90-5245-48ca-8c21-b23fdf</userID>
        <paymentProvider>
            <key>176</key>
            <value>MuchBetter</value>
        </paymentProvider>
        <amount currencyCode="EUR">2.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>fa844691-f90b-4a64-9929-23f6718fe2e7</id>
            <definition>
                <key>20</key>
                <value>WithdrawnByProvider</value>
            </definition>
            <createdOn>2018-12-06T21:46:43.44</createdOn>
            <paymentStateDetails xsi:nil="true" />
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">2.00</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>25981572</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>25981572</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>8fa1f57f-f5b1-4d82-a1c2-53a0b6cc6111-3</paymentAccountID>
        </paymentAccount>
    </payment>
</handlePaymentStateChangedNotificationRequest>

State diagram