Чтобы иметь возможность проводить рекурретные платежи, необходимо сначала провести обычную покупку или авторизацию средств с передачей флага "зарегистрировать рекарринг"

Последовательность операций

  1. запрос purchase

  2. обработать уведомление (callback) и взять оттуда registeredMethods[0].entity.id

  3. послать запрос recurring с передачей значения токена

Примеры запросов и ответов

Purchase

POST /card/1-1/operations/purchase HTTP/1.1
W1-Signature: YtfVchZeg1m1qbPxwD7sEgmml/NTmFPb7ntXNRbx6xmxsfRugfaqc3q0JlDnM3kwpcaau2x++Csl6COPJbnYU3PWfE/elpqIpFv8U+2acWo6gF/VA9D8bVKQTi+mIJCdfxFW/cARM1nSX22kkY8uOxb4cCWYNjWbQUvbvuedGHqsMm+u0gA+gM0zx7J7UaaTPbV6KGDP7CvabSxgpDtDPRFO1Tjq8tiu9ClsZqFX/U0FArhwz6rTC+mX5XY5sDY8wa3eCUV0PZnJ43xn+WUetRTGDCjyUmVQ9ZorPV8CzmCmq6cVwOOzqYFKBWw+joxx+3oqL1e4BBDOmaLB0dQyxA==
Content-Type: application/json
Host: payment.payhub.pro
Content-Length: 764

{
  "notification" : {
    "url" : "http://127.0.0.1:8080/test/callback/default/",
    "version" : 1
  },
  "externalId" : "ext#66-1770570576196",
  "amount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "pan" : "4111111111111111",
        "expMonth" : 5,
        "expYear" : 2030,
        "cvv" : "444"
      },
      "type" : "CARD"
    },
    "info" : {
      "phone" : "9001234567",
      "email" : "no-reply@example.com",
      "ip" : "127.0.0.1"
    }
  },
  "merchantParameters" : {
    "param1" : "anything you want for callback",
    "param2" : null,
    "param3" : null
  },
  "registerRecurring" : true,
  "tds" : {
    "notificationUrl" : "http://tds.notification.url:6789"
  }
}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 183

{
  "operationId" : "1-1-a-650",
  "status" : "SUCCEEDED",
  "type" : "PURCHASE",
  "externalId" : "ext#66-1770570576196",
  "params" : { },
  "actions" : {
    "required" : [ ]
  }
}

Уведомление клиента со стороны Payhub о покупке (Callback)

POST /test/emptycallback HTTP/1.1
W1-Signature: ceHKAG3KabiZp+RDS65RXVfny9LrsQkFvF/r5mgGEWDaomkS/xFkvGfdJorG1ngNlymDol2dx6PdAp917OrisgTAJTS3u9GNgQ0MhF+lGeQr6+QCGwKw2yY1/SJdLD8BhmCAN74Z2qpqy09k8h6LjlW6aUpPE2RVaqhmw9Hy45CrS9z5RCZn6VbU58UMTZCcvWAgrBcGjC/oc1PWI3GdR9q6LEdJdfw4/SP0xvND7NN8Q6vm/zHiDtAsCfQDLbDis1wHbF6kVDF5/W+VObM+cWIs+GS4l1/bVnos8Fbt3WtU96pjVLr/zUFFfqvSfZgO6zBGZcnx70Q+bMKeKzEY7w==
Content-Type: application/json
Host: payment.payhub.pro
Content-Length: 833

{
  "id" : "1-1-a-650",
  "type" : "PURCHASE",
  "externalId" : "ext#66-1770570576196",
  "successful" : true,
  "amount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "baseAmount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "registeredMethods" : [ {
    "entity" : {
      "id" : "1-6"
    },
    "type" : "RECURRING_TOKEN"
  }, {
    "entity" : {
      "id" : "payoutToken-411111-something-1111"
    },
    "type" : "PAYOUT_TOKEN"
  } ],
  "merchantParameters" : {
    "param1" : "anything you want for callback",
    "param2" : null,
    "param3" : null
  },
  "status" : "SUCCEEDED",
  "transactions" : [ {
    "type" : "PURCHASE",
    "status" : "SUCCEEDED"
  } ],
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "pan" : "411111XXXXXX1111"
      },
      "type" : "MASKED_CARD"
    }
  }
}
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

Recurring

POST /card/1-1/operations/recurring HTTP/1.1
W1-Signature: HH3lZpD+2335lZRVMzkoUJ/fvE+nlsnZsOLprDAcFfgY4PFhjzvx5ZgWPdLc36WdbVdbUoCfEoYLZ/jXzhHHJtBICTB5ZAaYtdwTS9uL0gQGJ78YIdMf+YuIJ5d3Q9GR3ZZdLpI8tAIcamFRJSF2yE24DfhNc/cvEcrAv+vu/5jXOSZ/gD4LIARpJAFx4NideleMF62BHV+GVwPKjzoHXKIg5vK1NAP6JwM8qBxQMDpUF95ZrsfNsVjKILjAsVm+tAg/D6Fe0dah+zcHafpONMjsIrzfzTGNJasoTb6bCMA3X3Dhu8EDz9O/yLVJqKM3QXA47ITTUKrjqaD4sjdJ5A==
Content-Type: application/json
Host: payment.payhub.pro
Content-Length: 465

{
  "notification" : {
    "url" : "http://127.0.0.1:8080/test/callback/default/",
    "version" : 1
  },
  "externalId" : "ext#67-1770570576736",
  "amount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "id" : "1-6"
      },
      "type" : "RECURRING_TOKEN"
    }
  },
  "merchantParameters" : {
    "param1" : "anything you want for callback",
    "param2" : null,
    "param3" : null
  }
}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 184

{
  "operationId" : "1-1-a-651",
  "status" : "SUCCEEDED",
  "type" : "RECURRING",
  "externalId" : "ext#67-1770570576736",
  "params" : { },
  "actions" : {
    "required" : [ ]
  }
}

Уведомление клиента со стороны Payhub о рекурренте (Callback)

POST /test/emptycallback HTTP/1.1
W1-Signature: OW86ksUIFkVod4e0Aj1Ppe0frSKKb1CBdNYQGuaz5FvP2paE7ijIP5dIjS9zNrBeslP75RcQx77UqBNrPOlVTUsw79rAICX4IjguZLVxHeuyMHFmBQr7UfRrLUu0hTgk2f6ToFr5oGzNplj+86zO8fADlHH/unW9/TYpjOLXPnM7VIsLtHxuQ1eky290nh8K+EVbkirFmp2SiOHzYp4rG3amdIOOTUA9usugFbWcsCg9hb/Ay6tF/MI1G/+SNNp0V8EB+1AD022G0JtQ7U5p/GuIpIdyOoDMXXhkvKVs0qNFb1OzaTBoJTSO+7TpFGhgo4dkSZCueZ438Yg8fbOsNA==
Content-Type: application/json
Host: payment.payhub.pro
Content-Length: 647

{
  "id" : "1-1-a-651",
  "type" : "RECURRING",
  "externalId" : "ext#67-1770570576736",
  "successful" : true,
  "amount" : {
    "amount" : 10.57,
    "currency" : "USD"
  },
  "baseAmount" : {
    "amount" : 10.55,
    "currency" : "USD"
  },
  "registeredMethods" : [ ],
  "merchantParameters" : {
    "param1" : "anything you want for callback",
    "param2" : null,
    "param3" : null
  },
  "status" : "SUCCEEDED",
  "transactions" : [ {
    "type" : "RECURRING",
    "status" : "SUCCEEDED"
  } ],
  "payer" : {
    "paymentMethod" : {
      "entity" : {
        "pan" : "411111XXXXXX1111"
      },
      "type" : "MASKED_CARD"
    }
  }
}
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers