PSPG API

Ուղեցույց

Ստեղծել վճարում

$result = pspg_create_payment(
	'arca_idbank',
	array(
		'amount'      => '10.00',
		'currency'    => 'AMD',
		'return_url'  => home_url( '/callback' ),
		'description' => 'Order #1001',
		'source'      => 'custom',
		'source_id'   => 1001,
		'clientId'    => '2', // եթե ցանկանում եք կապել քարտը և բանկը դա աջակցում է
	)
);

Սպասվող պատասխան՝

{
  "ok": true,
  "bank": "arca_idbank",
  "bank_ids": {
    "primary": "f9baddf9-29bd-4f21-99f8-81fef9c60758",
    "orderId": "f9baddf9-29bd-4f21-99f8-81fef9c60758",
    "currency_code": "051",
    "test_mode": 1,
    "is_binding": 0
  },
  "status": "registered",
  "redirect_url": "https://ipaytest.arca.am:8445/payment/merchants/planet/payment_en.html?mdOrder=f9baddf9-29bd-4f21-99f8-81fef9c60758",
  "raw": {
    "errorCode": 0,
    "orderId": "f9baddf9-29bd-4f21-99f8-81fef9c60758",
    "formUrl": "https://ipaytest.arca.am:8445/payment/merchants/planet/payment_en.html?mdOrder=f9baddf9-29bd-4f21-99f8-81fef9c60758",
    "errorCodeString": "0",
    "error": false
  },
  "summary": {
    "action": "create_payment",
    "code": 0,
    "message": null,
    "details": null
  },
  "pspg_order_id": 454
}

Ինչ է նշանակում՝

  • ok — վճարումը հաջողությամբ ստեղծվել է
  • bankbank id
  • bank_ids.primary — հիմնական bank id, պահեք այս արժեքը
  • bank_ids.orderId — բանկի պատվերի id
  • bank_ids.currency_code — թվային ISO արժույթ (օրինակ՝ 051 = AMD)
  • bank_ids.test_mode — test/live ռեժիմ
  • bank_ids.is_binding — սա binding վճարում չէ, հետևաբար 0
  • status = registered — վճարումը ստեղծված է, բայց օգտատերը դեռ չի ավարտել վճարումը
  • redirect_url — օգտատիրոջը պետք է ուղղորդել այս URL
  • raw — բանկի հում պատասխան
  • summary — կարճ ամփոփում
  • pspg_order_id — ներքին PSPG գրառում wp_pspg_orders-ում

Ստանալ վճարման կարգավիճակը

Օգտագործեք սա, երբ օգտատերը վերադառնում է բանկից կամ callback-ից հետո։ pspg_sync_status()-ը հանդիսանում է վերջնական կարգավիճակի աղբյուրը։

$result = pspg_sync_status(
	'arca_idbank',
	array(
		'pspg_order_id' => 454,
		'orderId'       => 'f9baddf9-29bd-4f21-99f8-81fef9c60758',
		'currency'      => 'AMD',
		'params'        => $_REQUEST,
	)
);

Սպասվող պատասխան՝

{
  "ok": true,
  "bank": "arca_idbank",
  "bank_ids": {
    "primary": "f9baddf9-29bd-4f21-99f8-81fef9c60758",
    "orderId": "f9baddf9-29bd-4f21-99f8-81fef9c60758",
    "test_mode": 1
  },
  "bank_status": 2,
  "status": "paid",
  "raw": {
    "errorCode": "0",
    "errorMessage": "Success",
    "orderNumber": "TEST-L3-454",
    "orderStatus": 2,
    "actionCode": 0,
    "actionCodeDescription": "Request processed successfully",
    "amount": 1000,
    "currency": "051",
    "paymentAmountInfo": {
      "paymentState": "DEPOSITED",
      "approvedAmount": 1000,
      "depositedAmount": 1000,
      "refundedAmount": 0
    },
    "cardAuthInfo": {
      "expiration": "202708",
      "cardholderName": "ARA MARGARYAN",
      "approvalCode": "817644",
      "pan": "518180**7963"
    },
    "error": false
  },
  "summary": {
    "action": "sync_status",
    "code": 0,
    "message": "Success",
    "details": "Request processed successfully"
  },
  "binding": {
    "pan": "518180**7963",
    "expiration": "202708"
  },
  "pspg_order_id": 454
}

Ինչ է նշանակում՝

  • bank_status — բանկի թվային կարգավիճակ
  • status — PSPG նորմալացված կարգավիճակ
  • status = paid — վճարումը հաջողությամբ ավարտված է
  • binding — քարտի կամ binding տվյալներ (եթե բանկը վերադարձրել է)
  • pspg_order_id — նույն PSPG գրառումը

Հնարավոր status արժեքներ՝

  • registered
  • pending
  • authorized
  • paid
  • failed
  • refunded
  • voided
  • unknown

Վերադարձ (Refund)

$result = pspg_refund_payment(
	'arca_idbank',
	array(
		'pspg_order_id' => 454,
		'orderId'       => 'f9baddf9-29bd-4f21-99f8-81fef9c60758',
		'amount'        => '1.00', // optional
		'currency'      => 'AMD',
	)
);

Սպասվող պատասխան՝

{
  "ok": true,
  "bank": "arca_idbank",
  "bank_ids": {
    "primary": "f9baddf9-29bd-4f21-99f8-81fef9c60758",
    "orderId": "f9baddf9-29bd-4f21-99f8-81fef9c60758",
    "test_mode": 1,
    "currency_code": "051"
  },
  "bank_status": null,
  "status": "refunded",
  "raw": {
    "errorCode": "0",
    "errorMessage": "Success",
    "error": false
  },
  "summary": {
    "action": "refund_payment",
    "code": "0",
    "message": "Success",
    "details": null
  },
  "binding": null,
  "pspg_order_id": 454
}

Ինչ է նշանակում՝

  • status = refunded — բանկը ընդունել է վերադարձը
  • bank_status = null — բանկը միշտ չի վերադարձնում վերջնական կարգավիճակը
  • Եթե անհրաժեշտ է վերջնական կարգավիճակը՝ կանչեք pspg_sync_status()

Չեղարկել / Հակադարձել վճարումը

$result = pspg_void_payment(
	'arca_idbank',
	array(
		'pspg_order_id' => 454,
		'orderId'       => 'f9baddf9-29bd-4f21-99f8-81fef9c60758',
		'currency'      => 'AMD',
	)
);

Հնարավոր սխալի պատասխան՝

{
  "ok": false,
  "bank": "arca_idbank",
  "error": "bank_error",
  "message": "Reversal is impossible for current transaction state",
  "bank_error_code": "7",
  "raw": {
    "errorCode": "7",
    "errorMessage": "Reversal is impossible for current transaction state",
    "error": true
  },
  "pspg_order_id": 454
}

Ինչ է նշանակում՝

  • ok = false — գործողությունը ձախողվել է
  • message — բանկի սխալի հաղորդագրություն
  • bank_error_code — բանկի սխալի կոդ
  • void աշխատում է միայն մինչև վճարումը վերջնական դառնալը
  • Ավարտված վճարումների համար օգտագործեք refund

Կապել քարտ (սկզբնական վճարում)

Եթե ցանկանում եք հետագայում օգտագործել նույն քարտը, փոխանցեք clientId։

clientId-ը ձեր ներքին հաճախորդի նույնականացուցիչն է, օրինակ՝

  • user id
  • customer id
  • profile id

Այնուհետև կանչեք pspg_sync_status() վճարումը հաջող ավարտվելուց հետո։

$result = pspg_sync_status(
	'arca_idbank',
	array(
		'pspg_order_id' => 456,
		'orderId'       => '3b2a2c1b-a850-4edd-abf9-bb2a36e1078a',
		'currency'      => 'AMD',
		'params'        => $_REQUEST,
	)
);

Սպասվող պատասխան՝

{
  "ok": true,
  "bank": "arca_idbank",
  "bank_status": 2,
  "status": "paid",
  "binding": {
    "binding_id": "97578600-85f8-4f9a-a0f0-eae2be595287",
    "client_id": "2",
    "pan": "518180**7963",
    "expiration": "202708"
  },
  "pspg_order_id": 456
}

Ինչ է նշանակում՝

  • binding.binding_id — token / binding id, պահեք այս արժեքը
  • binding.client_id — client id, որը վերադարձրել է բանկը
  • pan, expiration — քարտի տվյալներ

Վճարել պահպանված քարտով

Եթե արդեն ունեք binding_id և անհրաժեշտության դեպքում clientId, կարող եք կատարել վճարում պահպանված քարտով։

$result = pspg_charge_saved_card(
	'arca_idbank',
	array(
		'amount'      => '20.00',
		'currency'    => 'AMD',
		'binding_id'  => '97578600-85f8-4f9a-a0f0-eae2be595287',
		'clientId'    => '2',
		'return_url'  => home_url( '/callback' ),
		'description' => 'Recurring payment',
		'source'      => 'custom',
		'source_id'   => 1003,
	)
);

Սպասվող պատասխան՝

{
  "ok": true,
  "bank": "arca_idbank",
  "bank_ids": {
    "orderId": "4b7fc2e0-8f3c-43cf-a59b-e88fa8ff5f72",
    "test_mode": 1,
    "currency_code": "051",
    "is_binding": 1,
    "primary": "4b7fc2e0-8f3c-43cf-a59b-e88fa8ff5f72"
  },
  "status": "paid",
  "bank_status": 2,
  "binding": {
    "binding_id": "97578600-85f8-4f9a-a0f0-eae2be595287",
    "client_id": "2",
    "pan": "518180**7963",
    "expiration": "202708"
  },
  "pspg_order_id": 458
}

Ինչ է նշանակում՝

  • bank_ids.is_binding = 1 — սա binding վճարում է
  • pspg_order_id — նոր PSPG գրառում նոր վճարման համար
  • binding_id — նույն պահպանված binding token
  • Կարող եք փոխանցել clientId կամ client_id

Հասանելի bank ID-ներ

  • ameria — Ameriabank
  • ineco — Inecobank
  • amio — AMIO Bank
  • arca_acba — ACBA Bank (ArCa)
  • arca_ararat — Araratbank (ArCa)
  • arca_armeconombank — Armeconombank (ArCa)
  • arca_armswiss — Armswissbank (ArCa)
  • arca_ardshin — Ardshinbank (ArCa)
  • arca_byblos — Byblos Bank Armenia (ArCa)
  • arca_converse — Converse Bank (ArCa)
  • arca_evoca — Evocabank (ArCa)
  • arca_fastbank — Fast Bank (ArCa)
  • arca_idbank — IDBank (ArCa)

Ինչ պահպանել ձեր նախագծում

Պահպանել նվազագույնը՝

$result['pspg_order_id']
$result['bank_ids']['primary']

Եթե օգտագործում եք binding, նաև պահպանեք՝

$result['binding']['binding_id']
$result['binding']['client_id']

Կարևոր

  • Միշտ հիմնվեք ok, status, bank_status, bank_ids.primary, և pspg_order_id դաշտերի վրա
  • Օգտագործեք raw և summary դաշտերը debug-ի և լոգերի համար
  • Եթե անհրաժեշտ է վերջնական կարգավիճակը refund կամ void-ից հետո՝ կանչեք pspg_sync_status()