Cash Collection

📘

The steps in this guide are following to the essential steps mentioned in the payment API flow guide, so please check it before proceeding to this guide.

Pay Request:

Now that you have obtained the payment key, you will be able to create a cash payment.

URL: https://accept.paymob.com/api/acceptance/payments/pay

method: POST

source: Merchant's server

recipient: Accept's server

content-type: JSON

example request data:

{
  "source": {
    "identifier": "cash", 
    "subtype": "CASH" 
  },
  "payment_token": "ZXlKMGVYQWlULjRi2T2..."  // token obtained in step 3
}

example response data:

Scenario 1: Scheduling successful ==> "pending": "true"

Scenario 2: Scheduling failed ==> "pending": "false"

{
    "id": 234,
    "pending": "true",
    "amount_cents": 1000,
    "success": "false",
    "is_auth": "false",
    "is_capture": "false",
    "is_standalone_payment": "true",
    "is_voided": "false",
    "is_refunded": "false",
    "is_3d_secure": "false",
    "integration_id": 1,
    "profile_id": 1,
    "has_parent_transaction": "false",
    "order": 433,
    "created_at": "2018-03-01T11:09:36.531434",
    "currency": "EGP",
    "api_source": "OTHER",
    "is_void": "false",
    "is_refund": "false",
    "error_occured": "false",
    "refunded_amount_cents": 0,
    "captured_amount": 0,
    "merchant_staff_tag": "",
    "owner": 1,
    "parent_transaction": "",
    "data.message": "Docket created successfully",
    "source_data.type": "cash",
    "source_data.pan": "",
    "source_data.sub_type": "CASH",
    "hmac": "df022245f4791a1f07f53c5e7b0c0ed0a6ae13afbf8fb5c69a349f843ad5c4ac6092a800dff7d7b50664914898aa99d912cd31901b0a7cc7f543ccbb861976cc",
    "merchant_order_id": "null",
    "use_redirection": "false",
    "redirection_url": "ok",
    "merchant_response": "Not found\n",
    "bypass_step_six": false
}

Delivery Status Endpoint "server-side"

This endpoint will be invoked every time Accept's server needs to notify your server about a DELIVERY_STATUS.

URL: https://your_chosen_delivery_callback_url.com?hmac=value_of_hmac

method: POST

source: Accept's server

recipient: Merchant's server

content-type: JSON

example body:

{
    "type": "DELIVERY_STATUS",
    "obj": {
        "order_id": 5530,
        "order_delivery_status": "Scheduled", 
        "merchant_id": 455,
        "merchant_name": "Test Merchant", 
        "updated_at": "2017-01-24T13:29:40" //iso format datetime
    } 
}

Status

Description

Scheduled

Successfully placed a new delivery on the courier’s system.

Contacting Merchant

The courier agent is in touch with your administration through provided contact info to pick up the package to be delivered.

Picking Up

Courier agent is headed towards your pick up address to receive the package.

Courier Received

The courier agent picked up the package.

At Warehouse

The package is placed at the courier’s storage, pending client’s scheduling

Agent Out

Courier agent is out with your customer added on their list (not necessarily headed towards your client first).

On Route

The courier agent is currently headed towards your client.

At Customer

The courier agent arrived at the customer’s address.

Delivered

Courier completed their task successfully.

Canceled

Customer / Merchant canceled courier’s delivery.

Delivery Failed

Courier agent was not able to fulfill their task. For example, the customer was not at home, the customer refused to pay or did not have enough money, package was malformed.

Return Scheduled

Courier is set to return the package back to you for exchange or a canceled delivery.

Package Returned

Courier returned the package to you successfully.

👍

That's it, you've successfully finalized your Cash payments integration with Accept :tada:.
Now, prepare endpoints to receive payment notifications from Accept's server, to learn more about the transactions webhooks, please check this guide.


Did this page help you?