1: <?php
2:
3: /**
4: * Cancel a billing agreement
5: * @see https://app.syspay.com/bundles/emiuser/doc/merchant_api.html#cancel-a-billing-agreement
6: */
7: class Syspay_Merchant_BillingAgreementCancellationRequest extends Syspay_Merchant_Request
8: {
9: const METHOD = 'POST';
10: const PATH = '/api/v1/merchant/billing-agreement/%d/cancel';
11:
12: /**
13: * @var integer
14: */
15: private $billingAgreementId;
16:
17: public function __construct($billingAgreementId = null)
18: {
19: if (null !== $billingAgreementId) {
20: $this->setBillingAgreementId($billingAgreementId);
21: }
22: }
23:
24: /**
25: * {@inheritDoc}
26: */
27: public function getMethod()
28: {
29: return self::METHOD;
30: }
31:
32: /**
33: * {@inheritDoc}
34: */
35: public function getPath()
36: {
37: return sprintf(self::PATH, $this->billingAgreementId);
38: }
39:
40: /**
41: * {@inheritDoc}
42: */
43: public function buildResponse(stdClass $response)
44: {
45: if (!isset($response->billing_agreement)) {
46: throw new Syspay_Merchant_UnexpectedResponseException(
47: 'Unable to retrieve "billing_agreement" data from response',
48: $response
49: );
50: }
51:
52: $billingAgreement = Syspay_Merchant_Entity_BillingAgreement::buildFromResponse($response->billing_agreement);
53:
54: return $billingAgreement;
55: }
56:
57:
58: /**
59: * Gets the value of billingAgreementId.
60: *
61: * @return integer
62: */
63: public function getBillingAgreementId()
64: {
65: return $this->billingAgreementId;
66: }
67:
68: /**
69: * Sets the value of billingAgreementId.
70: *
71: * @param integer $billingAgreementId the billingAgreementId
72: *
73: * @return self
74: */
75: public function setBillingAgreementId($billingAgreementId)
76: {
77: $this->billingAgreementId = $billingAgreementId;
78:
79: return $this;
80: }
81: }
82: