MOTO

1 Introduction

Payments processed by the PayU system using card transactions initiated via phone call or mail. Two use cases are applicable. First, customer speaks to operator who types in card data (MOTO). Second, customer is switched to automated system, which allows to provide card data via phone keyboard (IVR). In both cases, PayU provides only API. Card data (and other data related to payment that may be required by PayU like customers name, first name and his address) must be collected by merchant’s system.

PayU configuration

The MOTO service requires configuration operations to be performed at PayU side. Therefore, before starting the integration process, please contact PayU via your Account Manager.

2 Service integration

MOTO is based on tokenization. Steps:
  • tokenize the card, you may use form or PayU widget
  • send Order with token and moto attribute

2.1 Front-end

Modifying front-end: Widget integration

1. Include the payment form presenting a payment button that defines a payment handling action. To do this, define a correct action parameter:
                    <form action="http://exampledomain.com/processOrder.php" method="post">
                        <button id="pay-button">Pay now</button>
                    </form>
                

2. Calculate the SIG parameter necessary to secure communication

3. Include the PayU widget bootstrap JS script. Define all the parameters according to POS configuration:
                    <script>
                        src="https://secure.payu.com/front/widget/js/payu-bootstrap.js"
                        pay-button="#pay-button"
                        merchant-pos-id="145227"
                        shop-name="Shop name"
                        total-amount="9.99"
                        currency-code="PLN"
                        customer-language="pl"
                        customer-email="email@exampledomain.com"
                        sig="196ca2ae50b6d68987712e8787e9a6e7533f7b827bc36204dd2b937971a2de7a">
                    </script>
                

Widget for MOTO requires additional parameter: moto-payment=true. This parameter must be added to SIG calculation.

Modifying front end: Form integration

To capture card data via input fields in your website, follow the instructions in "Card data form" section.

2.2 Back-end

Modifying back-end

Order involving REST API is described in: Creating a new order. The moto field is the extension. Also card tokenizaton payMethod must be clearly stated.

Sample MOTO order:

                    curl -v -X POST https://secure.payu.com/api/v2_1/orders \
                    -H "Content-Type: application/json" \
                    -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \
                    -d '{
                          "notifyUrl":"https://your.eshop.com/notify",
                          "customerIp":"127.0.0.1",
                          "merchantPosId":"145227",
                          "moto": "PHONE",  
                          "description":"OC and AC car insurance",
                          "currencyCode":"PLN",
                          "totalAmount":"15000",
                          "extOrderId":"[generateExtOrderId]",
                          "products":[
                             {
                                "name":"Invoice payment",
                                "unitPrice":"15000",
                                "quantity":"1"
                             }
                          ],
                          "payMethods": {
                              "payMethod": {
                                   "value": "TOK_1IHRPT6HKSSS3H62K0GS8pElP862",
                                   "type": "CARD_TOKEN"
                              }
                          }
                      }'
                

Authentication methods are described in: Signing API calls parameters.

POS used in the example does not have tokenization switched on.

PayU informs the Shop about the payment by submitting a notification to the address provided in the order in the notifyUrl parameter. To learn more about notifications, read Notifications.