@atbas/m-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +364 -0
  3. package/dist/builder/transaction-builder.d.ts +53 -0
  4. package/dist/builder/transaction-builder.d.ts.map +1 -0
  5. package/dist/builder/transaction-builder.js +159 -0
  6. package/dist/builder/transaction-builder.js.map +1 -0
  7. package/dist/catalogue/default-catalogue.d.ts +18 -0
  8. package/dist/catalogue/default-catalogue.d.ts.map +1 -0
  9. package/dist/catalogue/default-catalogue.js +21 -0
  10. package/dist/catalogue/default-catalogue.js.map +1 -0
  11. package/dist/catalogue/endpoints.d.ts +22 -0
  12. package/dist/catalogue/endpoints.d.ts.map +1 -0
  13. package/dist/catalogue/endpoints.js +24 -0
  14. package/dist/catalogue/endpoints.js.map +1 -0
  15. package/dist/catalogue/flows.d.ts +32 -0
  16. package/dist/catalogue/flows.d.ts.map +1 -0
  17. package/dist/catalogue/flows.js +64 -0
  18. package/dist/catalogue/flows.js.map +1 -0
  19. package/dist/catalogue/hash-options.d.ts +112 -0
  20. package/dist/catalogue/hash-options.d.ts.map +1 -0
  21. package/dist/catalogue/hash-options.js +151 -0
  22. package/dist/catalogue/hash-options.js.map +1 -0
  23. package/dist/catalogue/types.d.ts +279 -0
  24. package/dist/catalogue/types.d.ts.map +1 -0
  25. package/dist/catalogue/types.js +360 -0
  26. package/dist/catalogue/types.js.map +1 -0
  27. package/dist/codegen/generate.d.ts +14 -0
  28. package/dist/codegen/generate.d.ts.map +1 -0
  29. package/dist/codegen/generate.js +490 -0
  30. package/dist/codegen/generate.js.map +1 -0
  31. package/dist/codegen/languages/node.d.ts +3 -0
  32. package/dist/codegen/languages/node.d.ts.map +1 -0
  33. package/dist/codegen/languages/node.js +32 -0
  34. package/dist/codegen/languages/node.js.map +1 -0
  35. package/dist/codegen/languages/php.d.ts +3 -0
  36. package/dist/codegen/languages/php.d.ts.map +1 -0
  37. package/dist/codegen/languages/php.js +27 -0
  38. package/dist/codegen/languages/php.js.map +1 -0
  39. package/dist/codegen/languages/python.d.ts +3 -0
  40. package/dist/codegen/languages/python.d.ts.map +1 -0
  41. package/dist/codegen/languages/python.js +27 -0
  42. package/dist/codegen/languages/python.js.map +1 -0
  43. package/dist/codegen/renderer.d.ts +24 -0
  44. package/dist/codegen/renderer.d.ts.map +1 -0
  45. package/dist/codegen/renderer.js +59 -0
  46. package/dist/codegen/renderer.js.map +1 -0
  47. package/dist/codegen/types.d.ts +50 -0
  48. package/dist/codegen/types.d.ts.map +1 -0
  49. package/dist/codegen/types.js +5 -0
  50. package/dist/codegen/types.js.map +1 -0
  51. package/dist/config/credentials.d.ts +64 -0
  52. package/dist/config/credentials.d.ts.map +1 -0
  53. package/dist/config/credentials.js +216 -0
  54. package/dist/config/credentials.js.map +1 -0
  55. package/dist/config/environment.d.ts +23 -0
  56. package/dist/config/environment.d.ts.map +1 -0
  57. package/dist/config/environment.js +54 -0
  58. package/dist/config/environment.js.map +1 -0
  59. package/dist/core/dependencies.d.ts +43 -0
  60. package/dist/core/dependencies.d.ts.map +1 -0
  61. package/dist/core/dependencies.js +2 -0
  62. package/dist/core/dependencies.js.map +1 -0
  63. package/dist/core/registry.d.ts +33 -0
  64. package/dist/core/registry.d.ts.map +1 -0
  65. package/dist/core/registry.js +13 -0
  66. package/dist/core/registry.js.map +1 -0
  67. package/dist/core/server.d.ts +61 -0
  68. package/dist/core/server.d.ts.map +1 -0
  69. package/dist/core/server.js +90 -0
  70. package/dist/core/server.js.map +1 -0
  71. package/dist/dependencies.d.ts +28 -0
  72. package/dist/dependencies.d.ts.map +1 -0
  73. package/dist/dependencies.js +2 -0
  74. package/dist/dependencies.js.map +1 -0
  75. package/dist/diagnostics/diagnose.d.ts +43 -0
  76. package/dist/diagnostics/diagnose.d.ts.map +1 -0
  77. package/dist/diagnostics/diagnose.js +121 -0
  78. package/dist/diagnostics/diagnose.js.map +1 -0
  79. package/dist/domain/amount.d.ts +157 -0
  80. package/dist/domain/amount.d.ts.map +1 -0
  81. package/dist/domain/amount.js +275 -0
  82. package/dist/domain/amount.js.map +1 -0
  83. package/dist/domain/datetime.d.ts +95 -0
  84. package/dist/domain/datetime.d.ts.map +1 -0
  85. package/dist/domain/datetime.js +211 -0
  86. package/dist/domain/datetime.js.map +1 -0
  87. package/dist/domain/response-codes.d.ts +116 -0
  88. package/dist/domain/response-codes.d.ts.map +1 -0
  89. package/dist/domain/response-codes.js +380 -0
  90. package/dist/domain/response-codes.js.map +1 -0
  91. package/dist/domain/secure-hash.d.ts +78 -0
  92. package/dist/domain/secure-hash.d.ts.map +1 -0
  93. package/dist/domain/secure-hash.js +69 -0
  94. package/dist/domain/secure-hash.js.map +1 -0
  95. package/dist/domain/signature/jazzcash.d.ts +56 -0
  96. package/dist/domain/signature/jazzcash.d.ts.map +1 -0
  97. package/dist/domain/signature/jazzcash.js +214 -0
  98. package/dist/domain/signature/jazzcash.js.map +1 -0
  99. package/dist/domain/signature/registry.d.ts +69 -0
  100. package/dist/domain/signature/registry.d.ts.map +1 -0
  101. package/dist/domain/signature/registry.js +92 -0
  102. package/dist/domain/signature/registry.js.map +1 -0
  103. package/dist/domain/signature/scheme.d.ts +349 -0
  104. package/dist/domain/signature/scheme.d.ts.map +1 -0
  105. package/dist/domain/signature/scheme.js +398 -0
  106. package/dist/domain/signature/scheme.js.map +1 -0
  107. package/dist/domain/txn-ref.d.ts +76 -0
  108. package/dist/domain/txn-ref.d.ts.map +1 -0
  109. package/dist/domain/txn-ref.js +126 -0
  110. package/dist/domain/txn-ref.js.map +1 -0
  111. package/dist/domain/types.d.ts +45 -0
  112. package/dist/domain/types.d.ts.map +1 -0
  113. package/dist/domain/types.js +70 -0
  114. package/dist/domain/types.js.map +1 -0
  115. package/dist/errors.d.ts +84 -0
  116. package/dist/errors.d.ts.map +1 -0
  117. package/dist/errors.js +87 -0
  118. package/dist/errors.js.map +1 -0
  119. package/dist/gateway/checkout-form.d.ts +16 -0
  120. package/dist/gateway/checkout-form.d.ts.map +1 -0
  121. package/dist/gateway/checkout-form.js +103 -0
  122. package/dist/gateway/checkout-form.js.map +1 -0
  123. package/dist/gateway/checkout-output.d.ts +70 -0
  124. package/dist/gateway/checkout-output.d.ts.map +1 -0
  125. package/dist/gateway/checkout-output.js +199 -0
  126. package/dist/gateway/checkout-output.js.map +1 -0
  127. package/dist/gateway/guards.d.ts +37 -0
  128. package/dist/gateway/guards.d.ts.map +1 -0
  129. package/dist/gateway/guards.js +44 -0
  130. package/dist/gateway/guards.js.map +1 -0
  131. package/dist/gateway/http-client.d.ts +42 -0
  132. package/dist/gateway/http-client.d.ts.map +1 -0
  133. package/dist/gateway/http-client.js +153 -0
  134. package/dist/gateway/http-client.js.map +1 -0
  135. package/dist/gateway/rest-client.d.ts +42 -0
  136. package/dist/gateway/rest-client.d.ts.map +1 -0
  137. package/dist/gateway/rest-client.js +241 -0
  138. package/dist/gateway/rest-client.js.map +1 -0
  139. package/dist/gateway/transport.d.ts +31 -0
  140. package/dist/gateway/transport.d.ts.map +1 -0
  141. package/dist/gateway/transport.js +73 -0
  142. package/dist/gateway/transport.js.map +1 -0
  143. package/dist/index.d.ts +3 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +75 -0
  146. package/dist/index.js.map +1 -0
  147. package/dist/install/cli.d.ts +38 -0
  148. package/dist/install/cli.d.ts.map +1 -0
  149. package/dist/install/cli.js +274 -0
  150. package/dist/install/cli.js.map +1 -0
  151. package/dist/install/harnesses.d.ts +74 -0
  152. package/dist/install/harnesses.d.ts.map +1 -0
  153. package/dist/install/harnesses.js +263 -0
  154. package/dist/install/harnesses.js.map +1 -0
  155. package/dist/knowledge/corpus.d.ts +15 -0
  156. package/dist/knowledge/corpus.d.ts.map +1 -0
  157. package/dist/knowledge/corpus.js +129 -0
  158. package/dist/knowledge/corpus.js.map +1 -0
  159. package/dist/knowledge/search.d.ts +29 -0
  160. package/dist/knowledge/search.d.ts.map +1 -0
  161. package/dist/knowledge/search.js +181 -0
  162. package/dist/knowledge/search.js.map +1 -0
  163. package/dist/knowledge/source.d.ts +60 -0
  164. package/dist/knowledge/source.d.ts.map +1 -0
  165. package/dist/knowledge/source.js +91 -0
  166. package/dist/knowledge/source.js.map +1 -0
  167. package/dist/knowledge/types.d.ts +40 -0
  168. package/dist/knowledge/types.d.ts.map +1 -0
  169. package/dist/knowledge/types.js +19 -0
  170. package/dist/knowledge/types.js.map +1 -0
  171. package/dist/paths.d.ts +26 -0
  172. package/dist/paths.d.ts.map +1 -0
  173. package/dist/paths.js +106 -0
  174. package/dist/paths.js.map +1 -0
  175. package/dist/prompts/integration-walkthrough.d.ts +11 -0
  176. package/dist/prompts/integration-walkthrough.d.ts.map +1 -0
  177. package/dist/prompts/integration-walkthrough.js +52 -0
  178. package/dist/prompts/integration-walkthrough.js.map +1 -0
  179. package/dist/prompts/register.d.ts +4 -0
  180. package/dist/prompts/register.d.ts.map +1 -0
  181. package/dist/prompts/register.js +4 -0
  182. package/dist/prompts/register.js.map +1 -0
  183. package/dist/registry.d.ts +14 -0
  184. package/dist/registry.d.ts.map +1 -0
  185. package/dist/registry.js +2 -0
  186. package/dist/registry.js.map +1 -0
  187. package/dist/resources/knowledge-resources.d.ts +5 -0
  188. package/dist/resources/knowledge-resources.d.ts.map +1 -0
  189. package/dist/resources/knowledge-resources.js +121 -0
  190. package/dist/resources/knowledge-resources.js.map +1 -0
  191. package/dist/resources/register.d.ts +4 -0
  192. package/dist/resources/register.d.ts.map +1 -0
  193. package/dist/resources/register.js +8 -0
  194. package/dist/resources/register.js.map +1 -0
  195. package/dist/server.d.ts +40 -0
  196. package/dist/server.d.ts.map +1 -0
  197. package/dist/server.js +56 -0
  198. package/dist/server.js.map +1 -0
  199. package/dist/telemetry/logger.d.ts +31 -0
  200. package/dist/telemetry/logger.d.ts.map +1 -0
  201. package/dist/telemetry/logger.js +67 -0
  202. package/dist/telemetry/logger.js.map +1 -0
  203. package/dist/telemetry/redaction.d.ts +88 -0
  204. package/dist/telemetry/redaction.d.ts.map +1 -0
  205. package/dist/telemetry/redaction.js +238 -0
  206. package/dist/telemetry/redaction.js.map +1 -0
  207. package/dist/tools/build-transaction-parameters.d.ts +10 -0
  208. package/dist/tools/build-transaction-parameters.d.ts.map +1 -0
  209. package/dist/tools/build-transaction-parameters.js +154 -0
  210. package/dist/tools/build-transaction-parameters.js.map +1 -0
  211. package/dist/tools/call-context.d.ts +47 -0
  212. package/dist/tools/call-context.d.ts.map +1 -0
  213. package/dist/tools/call-context.js +15 -0
  214. package/dist/tools/call-context.js.map +1 -0
  215. package/dist/tools/codegen-tools.d.ts +4 -0
  216. package/dist/tools/codegen-tools.d.ts.map +1 -0
  217. package/dist/tools/codegen-tools.js +131 -0
  218. package/dist/tools/codegen-tools.js.map +1 -0
  219. package/dist/tools/credential-tools.d.ts +32 -0
  220. package/dist/tools/credential-tools.d.ts.map +1 -0
  221. package/dist/tools/credential-tools.js +65 -0
  222. package/dist/tools/credential-tools.js.map +1 -0
  223. package/dist/tools/descriptor.d.ts +52 -0
  224. package/dist/tools/descriptor.d.ts.map +1 -0
  225. package/dist/tools/descriptor.js +2 -0
  226. package/dist/tools/descriptor.js.map +1 -0
  227. package/dist/tools/diagnostic-tools.d.ts +3 -0
  228. package/dist/tools/diagnostic-tools.d.ts.map +1 -0
  229. package/dist/tools/diagnostic-tools.js +128 -0
  230. package/dist/tools/diagnostic-tools.js.map +1 -0
  231. package/dist/tools/gateway-tools.d.ts +6 -0
  232. package/dist/tools/gateway-tools.d.ts.map +1 -0
  233. package/dist/tools/gateway-tools.js +381 -0
  234. package/dist/tools/gateway-tools.js.map +1 -0
  235. package/dist/tools/hash-tools.d.ts +5 -0
  236. package/dist/tools/hash-tools.d.ts.map +1 -0
  237. package/dist/tools/hash-tools.js +238 -0
  238. package/dist/tools/hash-tools.js.map +1 -0
  239. package/dist/tools/knowledge-tools.d.ts +7 -0
  240. package/dist/tools/knowledge-tools.d.ts.map +1 -0
  241. package/dist/tools/knowledge-tools.js +247 -0
  242. package/dist/tools/knowledge-tools.js.map +1 -0
  243. package/dist/tools/onboarding-checklist.d.ts +3 -0
  244. package/dist/tools/onboarding-checklist.d.ts.map +1 -0
  245. package/dist/tools/onboarding-checklist.js +141 -0
  246. package/dist/tools/onboarding-checklist.js.map +1 -0
  247. package/dist/tools/register.d.ts +60 -0
  248. package/dist/tools/register.d.ts.map +1 -0
  249. package/dist/tools/register.js +145 -0
  250. package/dist/tools/register.js.map +1 -0
  251. package/dist/tools/tool-kit.d.ts +88 -0
  252. package/dist/tools/tool-kit.d.ts.map +1 -0
  253. package/dist/tools/tool-kit.js +297 -0
  254. package/dist/tools/tool-kit.js.map +1 -0
  255. package/dist/validation/payload-validator.d.ts +29 -0
  256. package/dist/validation/payload-validator.d.ts.map +1 -0
  257. package/dist/validation/payload-validator.js +79 -0
  258. package/dist/validation/payload-validator.js.map +1 -0
  259. package/dist/validation/rules/amount.d.ts +3 -0
  260. package/dist/validation/rules/amount.d.ts.map +1 -0
  261. package/dist/validation/rules/amount.js +77 -0
  262. package/dist/validation/rules/amount.js.map +1 -0
  263. package/dist/validation/rules/bill-reference.d.ts +10 -0
  264. package/dist/validation/rules/bill-reference.d.ts.map +1 -0
  265. package/dist/validation/rules/bill-reference.js +34 -0
  266. package/dist/validation/rules/bill-reference.js.map +1 -0
  267. package/dist/validation/rules/cnic.d.ts +3 -0
  268. package/dist/validation/rules/cnic.d.ts.map +1 -0
  269. package/dist/validation/rules/cnic.js +42 -0
  270. package/dist/validation/rules/cnic.js.map +1 -0
  271. package/dist/validation/rules/constants.d.ts +9 -0
  272. package/dist/validation/rules/constants.d.ts.map +1 -0
  273. package/dist/validation/rules/constants.js +28 -0
  274. package/dist/validation/rules/constants.js.map +1 -0
  275. package/dist/validation/rules/constraints.d.ts +3 -0
  276. package/dist/validation/rules/constraints.d.ts.map +1 -0
  277. package/dist/validation/rules/constraints.js +113 -0
  278. package/dist/validation/rules/constraints.js.map +1 -0
  279. package/dist/validation/rules/datetime.d.ts +3 -0
  280. package/dist/validation/rules/datetime.d.ts.map +1 -0
  281. package/dist/validation/rules/datetime.js +49 -0
  282. package/dist/validation/rules/datetime.js.map +1 -0
  283. package/dist/validation/rules/empty-string.d.ts +13 -0
  284. package/dist/validation/rules/empty-string.d.ts.map +1 -0
  285. package/dist/validation/rules/empty-string.js +32 -0
  286. package/dist/validation/rules/empty-string.js.map +1 -0
  287. package/dist/validation/rules/expiry.d.ts +3 -0
  288. package/dist/validation/rules/expiry.d.ts.map +1 -0
  289. package/dist/validation/rules/expiry.js +52 -0
  290. package/dist/validation/rules/expiry.js.map +1 -0
  291. package/dist/validation/rules/msisdn.d.ts +3 -0
  292. package/dist/validation/rules/msisdn.d.ts.map +1 -0
  293. package/dist/validation/rules/msisdn.js +45 -0
  294. package/dist/validation/rules/msisdn.js.map +1 -0
  295. package/dist/validation/rules/presence.d.ts +3 -0
  296. package/dist/validation/rules/presence.d.ts.map +1 -0
  297. package/dist/validation/rules/presence.js +90 -0
  298. package/dist/validation/rules/presence.js.map +1 -0
  299. package/dist/validation/rules/return-url.d.ts +14 -0
  300. package/dist/validation/rules/return-url.d.ts.map +1 -0
  301. package/dist/validation/rules/return-url.js +58 -0
  302. package/dist/validation/rules/return-url.js.map +1 -0
  303. package/dist/validation/rules/tool-argument.d.ts +16 -0
  304. package/dist/validation/rules/tool-argument.d.ts.map +1 -0
  305. package/dist/validation/rules/tool-argument.js +38 -0
  306. package/dist/validation/rules/tool-argument.js.map +1 -0
  307. package/dist/validation/rules/txn-ref.d.ts +3 -0
  308. package/dist/validation/rules/txn-ref.d.ts.map +1 -0
  309. package/dist/validation/rules/txn-ref.js +47 -0
  310. package/dist/validation/rules/txn-ref.js.map +1 -0
  311. package/dist/validation/rules/unknown-fields.d.ts +10 -0
  312. package/dist/validation/rules/unknown-fields.d.ts.map +1 -0
  313. package/dist/validation/rules/unknown-fields.js +29 -0
  314. package/dist/validation/rules/unknown-fields.js.map +1 -0
  315. package/dist/validation/types.d.ts +36 -0
  316. package/dist/validation/types.d.ts.map +1 -0
  317. package/dist/validation/types.js +12 -0
  318. package/dist/validation/types.js.map +1 -0
  319. package/dist/version.d.ts +23 -0
  320. package/dist/version.d.ts.map +1 -0
  321. package/dist/version.js +23 -0
  322. package/dist/version.js.map +1 -0
  323. package/knowledge/diagnostics/symptoms.json +321 -0
  324. package/knowledge/docs/bnpl-guide.md +77 -0
  325. package/knowledge/docs/card-page-redirection.md +67 -0
  326. package/knowledge/docs/card-refund.md +91 -0
  327. package/knowledge/docs/hmac-sha256-calculation.md +72 -0
  328. package/knowledge/docs/index.json +189 -0
  329. package/knowledge/docs/ipn-implementation.md +89 -0
  330. package/knowledge/docs/mwallet-recurring.md +117 -0
  331. package/knowledge/docs/mwallet-refund.md +65 -0
  332. package/knowledge/docs/mwallet-rest-v1-1.md +126 -0
  333. package/knowledge/docs/mwallet-rest-v2-0-cnic.md +113 -0
  334. package/knowledge/docs/portal-guide.md +45 -0
  335. package/knowledge/docs/shopify-guide.md +74 -0
  336. package/knowledge/docs/status-inquiry-2025-26.md +32 -0
  337. package/knowledge/docs/status-inquiry.md +111 -0
  338. package/knowledge/docs/wordpress-guide.md +49 -0
  339. package/knowledge/flow.schema.json +390 -0
  340. package/knowledge/flows/bnpl-page-redirection-v1.1.json +211 -0
  341. package/knowledge/flows/card-page-redirection-v1.1.json +211 -0
  342. package/knowledge/flows/mwallet-rest-v1.1.json +187 -0
  343. package/knowledge/flows/mwallet-rest-v2.0-cnic.json +197 -0
  344. package/knowledge/flows/mwallet-token-pay-v4.0.json +130 -0
  345. package/knowledge/flows/refund-bnpl.json +105 -0
  346. package/knowledge/flows/refund-card-v1.1.json +112 -0
  347. package/knowledge/flows/refund-card-v2.0.json +121 -0
  348. package/knowledge/flows/refund-mwallet-v1.1.json +106 -0
  349. package/knowledge/flows/status-inquiry-v1.1.json +102 -0
  350. package/knowledge/flows/status-inquiry-v2.0.json +103 -0
  351. package/knowledge/flows/token-delete-v1.json +85 -0
  352. package/knowledge/flows/token-inquiry-v1.json +85 -0
  353. package/knowledge/flows/wallet-linking-portal.json +103 -0
  354. package/knowledge/templates/node/checkout-redirect.tmpl +166 -0
  355. package/knowledge/templates/node/ipn-handler.tmpl +108 -0
  356. package/knowledge/templates/node/rest-client.tmpl +197 -0
  357. package/knowledge/templates/node/wallet-linking.tmpl +147 -0
  358. package/knowledge/templates/php/checkout-redirect.tmpl +149 -0
  359. package/knowledge/templates/php/ipn-handler.tmpl +105 -0
  360. package/knowledge/templates/php/rest-client.tmpl +191 -0
  361. package/knowledge/templates/php/wallet-linking.tmpl +137 -0
  362. package/knowledge/templates/python/checkout-redirect.tmpl +148 -0
  363. package/knowledge/templates/python/ipn-handler.tmpl +110 -0
  364. package/knowledge/templates/python/rest-client.tmpl +179 -0
  365. package/knowledge/templates/python/wallet-linking.tmpl +133 -0
  366. package/package.json +84 -0
@@ -0,0 +1,111 @@
1
+ # Status Inquiry API
2
+
3
+ Source: `Status Inquiry Guide (2026).pdf`, version 2026.
4
+
5
+ ## Introduction {#introduction}
6
+
7
+ The Status Inquiry API obtains the final status of pending or missing transactions. It is a **mandatory** integration for every JazzCash payment flow.
8
+
9
+ **Call it no sooner than ten minutes after the transaction was initiated.**
10
+
11
+ Only `pp_PaymentResponseCode` and `pp_Status` confirm the state of a pending transaction. `pp_ResponseCode` describes the enquiry itself, not the payment.
12
+
13
+ ```
14
+ pp_ResponseCode: '000' // the Status Inquiry call succeeded
15
+ pp_ResponseMessage: 'Thank you for Using JazzCash, your operation successfully completed.'
16
+ pp_PaymentResponseCode: '121' // the transaction completed and the amount was debited
17
+ pp_PaymentResponseMessage: 'Thank you for using JazzCash. Your transaction was processed successfully.'
18
+ pp_Status: 'Completed'
19
+ ```
20
+
21
+ ## API version 1.1 {#api-version-1-1}
22
+
23
+ Endpoint, identical for both environments:
24
+
25
+ ```
26
+ https://onlinepayments.jazzcash.com.pk/payment-orchestrator/api/v1/rest/payments/status/inquiry
27
+ ```
28
+
29
+ Request:
30
+
31
+ ```json
32
+ {
33
+ "pp_TxnRefNo": "T20251124131402",
34
+ "pp_MerchantID": "{{Your Merchant ID}}",
35
+ "pp_Password": "{{Your Password}}",
36
+ "pp_SecureHash": "18494EE9B220CA4ADBE3ED5B597CCBF26E8C6F8BA205A9199A2EC8B87A2C0673"
37
+ }
38
+ ```
39
+
40
+ Response:
41
+
42
+ ```json
43
+ {
44
+ "pp_ResponseCode": "000",
45
+ "pp_ResponseMessage": "Thank you for using JazzCash. Your operation was processed successfully.",
46
+ "pp_PaymentResponseCode": "121",
47
+ "pp_PaymentResponseMessage": "Thank you for using JazzCash. Your transaction was processed successfully.",
48
+ "pp_Status": "Completed",
49
+ "pp_RetrievalReferenceNo": "202511241314312807581909",
50
+ "pp_SettlementDate": "",
51
+ "pp_SettlementExpiry": "",
52
+ "pp_AuthCode": "095469672235",
53
+ "pp_BankID": "",
54
+ "pp_ProductID": "",
55
+ "pp_SecureHash": "EC906098D8C778B0043F33102698929F39DC32D7D560D6204377E0B390CE17E4"
56
+ }
57
+ ```
58
+
59
+ ## API version 2.0 {#api-version-2-0}
60
+
61
+ Endpoint, identical for both environments:
62
+
63
+ ```
64
+ https://onlinepayments.jazzcash.com.pk/payment-orchestrator/api/v2/rest/payments/status/inquiry
65
+ ```
66
+
67
+ The request is identical to v1.1. The response adds the original transaction details, which makes reconciliation possible without a separate lookup:
68
+
69
+ ```json
70
+ {
71
+ "pp_ResponseCode": "000",
72
+ "pp_ResponseMessage": "Thank you for using JazzCash. Your operation was processed successfully.",
73
+ "pp_PaymentResponseCode": "121",
74
+ "pp_PaymentResponseMessage": "Thank you for using JazzCash. Your transaction was processed successfully.",
75
+ "pp_Status": "Completed",
76
+ "pp_MerchantID": "{{Your Merchant ID}}",
77
+ "pp_RetrievalReferenceNo": "202511241314312807581909",
78
+ "pp_TxnRefNo": "T20251124131402",
79
+ "pp_TxnType": "MWALLET",
80
+ "pp_Amount": "100",
81
+ "pp_TxnDateTime": "20251124131402",
82
+ "pp_BillReference": "B20251124131402",
83
+ "pp_SettlementDate": "",
84
+ "pp_AuthCode": "095469672235",
85
+ "pp_SecureHash": "F1CE61CD416F75860009839091607127279C179531B6DE0F1806A742AFD62096"
86
+ }
87
+ ```
88
+
89
+ Prefer v2.0 for new integrations: the extra fields let you verify that the transaction you are reading is the one you sent.
90
+
91
+ ## Reading the codes {#reading-the-codes}
92
+
93
+ | Field | Value | Meaning |
94
+ | --- | --- | --- |
95
+ | `pp_ResponseCode` | `000` | The enquiry itself succeeded |
96
+ | `pp_PaymentResponseCode` | `121` | The transaction completed and the amount was debited |
97
+ | `pp_PaymentResponseCode` | `199`, `999`, others | The transaction failed |
98
+ | `pp_Status` | `Completed` | Terminal success |
99
+
100
+ An undocumented code is not a failure. Treat it as unresolved, read `pp_PaymentResponseMessage`, and confirm the meaning with JazzCash before releasing goods or refunding.
101
+
102
+ Note the spelling difference between flows: Status Inquiry returns `pp_RetrievalReferenceNo`, while the MWallet payment APIs return `pp_RetreivalReferenceNo`.
103
+
104
+ ## Common failures {#common-failures}
105
+
106
+ | Symptom | Cause | Fix |
107
+ | --- | --- | --- |
108
+ | Order marked paid but no money arrives | `pp_ResponseCode` `000` treated as proof of payment | Read `pp_PaymentResponseCode` |
109
+ | Enquiry always returns pending | Called too soon | Wait at least ten minutes after initiation |
110
+ | Field not found when reading the reference | Spelling copied from the MWallet payment response | Status Inquiry uses `pp_RetrievalReferenceNo` |
111
+ | Hash mismatch on the request | Only three fields participate | Hash `pp_MerchantID`, `pp_Password` and `pp_TxnRefNo`, prefixed by the salt |
@@ -0,0 +1,49 @@
1
+ # WordPress / WooCommerce Integration
2
+
3
+ Source: `WordPress Integration Guide (2026).pdf`, version 2026.
4
+
5
+ ## Introduction {#introduction}
6
+
7
+ Adds JazzCash as a payment method to a WordPress site. **WooCommerce must already be installed.**
8
+
9
+ ## Plugin installation {#plugin-installation}
10
+
11
+ The plugin is distributed as a `.zip` from a Google Drive link supplied by JazzCash:
12
+ <https://drive.google.com/file/d/1mVVl8fdwlX384HjYyezFknN23rJFr68u/view?usp=sharing>
13
+
14
+ Download it, upload the `.zip` in the Plugins upload section, and activate it.
15
+
16
+ Because the plugin is distributed outside the WordPress plugin directory, it receives no automatic updates. Ask JazzCash for the current version when troubleshooting.
17
+
18
+ ## Credentials configuration {#credentials-configuration}
19
+
20
+ Go to **WooCommerce → Settings → Payments** and click **Manage** on the JazzCash method to enter your transaction credentials. Save the changes.
21
+
22
+ ## Return and IPN URLs {#return-and-ipn-urls}
23
+
24
+ Register these in the **Credentials** tab of your sandbox (or production) portal:
25
+
26
+ - Return URL: `{yourbaseURL}/wc-api/result/`
27
+ - IPN URL: `{yourbaseURL}/jazzcash_ipn_v2`
28
+
29
+ Both must match exactly, including the trailing slash on the Return URL. The Return URL is part of merchant authentication, so a mismatch fails validation with an unhelpful error.
30
+
31
+ ## Test products {#test-products}
32
+
33
+ Add two test products — one at **PKR 10** and one at **PKR 1** — for card and wallet testing respectively, and perform test transactions using the sandbox testing numbers.
34
+
35
+ > The sandbox testing numbers are not listed in the guide. Request them from JazzCash during onboarding.
36
+
37
+ ## Refunds {#refunds}
38
+
39
+ Process a refund from the **JazzCash Transaction** tab using the **Refund** button. As elsewhere, the Merchant MPIN must be saved in the merchant portal first.
40
+
41
+ ## Common failures {#common-failures}
42
+
43
+ | Symptom | Cause | Fix |
44
+ | --- | --- | --- |
45
+ | Payment method not offered at checkout | WooCommerce missing, or the method not enabled | Install WooCommerce, then enable JazzCash under Settings → Payments |
46
+ | Validation failure on every payment | Return URL missing its trailing slash | Register and send exactly `{base}/wc-api/result/` |
47
+ | Orders never leave "pending payment" | IPN URL not registered, or not reachable | Register `{base}/jazzcash_ipn_v2` and confirm it is publicly reachable |
48
+ | Refund button fails | MPIN not saved in the merchant portal | Save it, then retry |
49
+ | Plugin behaves differently from the documentation | An older `.zip` is installed | Ask JazzCash for the current build |
@@ -0,0 +1,390 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://m-mcp.local/flow.schema.json",
4
+ "title": "JazzCash integration flow specification",
5
+ "description": "Editor tooling aid. The authoritative contract is the zod schema in src/catalogue/types.ts; tests/catalogue/schema-parity.test.ts asserts the two stay in step.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "id",
10
+ "title",
11
+ "provider",
12
+ "product",
13
+ "version",
14
+ "transport",
15
+ "summary",
16
+ "useWhen",
17
+ "endpoints",
18
+ "sameEndpointForBothEnvironments",
19
+ "movesMoney",
20
+ "responseContext",
21
+ "parameters",
22
+ "hash",
23
+ "response",
24
+ "docRefs"
25
+ ],
26
+ "properties": {
27
+ "id": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "description": "Must equal the file name without its extension."
31
+ },
32
+ "title": {
33
+ "type": "string",
34
+ "minLength": 1
35
+ },
36
+ "provider": {
37
+ "type": "string",
38
+ "enum": ["jazzcash"],
39
+ "description": "The gateway this flow belongs to. Required rather than defaulted: a second provider's file that omitted it would load as a JazzCash flow, and would then be signed the JazzCash way and checked against JazzCash endpoints."
40
+ },
41
+ "product": {
42
+ "type": "string",
43
+ "enum": ["card", "bnpl", "mwallet", "wallet-linking", "token", "status-inquiry", "refund"]
44
+ },
45
+ "version": {
46
+ "type": "string",
47
+ "minLength": 1
48
+ },
49
+ "transport": {
50
+ "type": "string",
51
+ "enum": ["rest", "form-post"],
52
+ "description": "How the flow is performed. Called rest, a form-post flow would be sent server-side to an endpoint that expects a customer's browser; called form-post, a REST flow would redirect a customer straight at an endpoint that expects a signed server-side payload."
53
+ },
54
+ "summary": {
55
+ "type": "string",
56
+ "minLength": 1
57
+ },
58
+ "useWhen": {
59
+ "type": "string",
60
+ "minLength": 1
61
+ },
62
+ "endpoints": {
63
+ "type": "object",
64
+ "additionalProperties": false,
65
+ "required": ["sandbox", "production"],
66
+ "properties": {
67
+ "sandbox": {
68
+ "type": "string",
69
+ "format": "uri"
70
+ },
71
+ "production": {
72
+ "type": "string",
73
+ "format": "uri"
74
+ }
75
+ }
76
+ },
77
+ "sameEndpointForBothEnvironments": {
78
+ "type": "boolean"
79
+ },
80
+ "movesMoney": {
81
+ "type": "boolean",
82
+ "description": "True when a successful call debits, refunds or links. Drives the production dual opt-in guard."
83
+ },
84
+ "responseContext": {
85
+ "type": "string",
86
+ "enum": ["payment", "inquiry", "refund", "ipn", "token"]
87
+ },
88
+ "constants": {
89
+ "type": "object",
90
+ "additionalProperties": {
91
+ "type": "string"
92
+ }
93
+ },
94
+ "parameters": {
95
+ "type": "array",
96
+ "minItems": 1,
97
+ "items": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": ["name", "requirement", "valueType", "notes"],
101
+ "properties": {
102
+ "name": {
103
+ "type": "string",
104
+ "minLength": 1
105
+ },
106
+ "requirement": {
107
+ "type": "string",
108
+ "enum": ["mandatory", "optional", "must-be-empty"]
109
+ },
110
+ "valueType": {
111
+ "type": "string",
112
+ "enum": [
113
+ "constant",
114
+ "string",
115
+ "minor-units",
116
+ "pkt-datetime",
117
+ "pkt-expiry",
118
+ "url",
119
+ "txn-ref",
120
+ "bill-reference",
121
+ "request-id",
122
+ "msisdn",
123
+ "cnic",
124
+ "payment-token",
125
+ "secure-hash"
126
+ ]
127
+ },
128
+ "constantValue": {
129
+ "type": "string"
130
+ },
131
+ "maxLength": {
132
+ "type": "integer",
133
+ "minimum": 1
134
+ },
135
+ "pattern": {
136
+ "type": "string"
137
+ },
138
+ "sensitive": {
139
+ "type": "boolean",
140
+ "default": false,
141
+ "description": "True for credentials and personal data; excluded from logs and echoes."
142
+ },
143
+ "neverAcceptAsToolArgument": {
144
+ "type": "boolean",
145
+ "default": false,
146
+ "description": "True for a value that must never cross the MCP boundary as a tool argument, such as a PAN, expiry or CVV. A tool argument is written to the transcript before any server code runs, so no later redaction can recall it."
147
+ },
148
+ "notes": {
149
+ "type": "string",
150
+ "minLength": 1
151
+ }
152
+ }
153
+ }
154
+ },
155
+ "hash": {
156
+ "description": "How the flow signs its requests. One construction ships today; it stays a oneOf rather than being inlined because a second construction differs in more than a digest name — which fields are selected, whether the secret is a key or a component, whether a separator exists — and a flat object would let a flow declare two selection rules at once with nothing to say which wins.",
157
+ "oneOf": [
158
+ {
159
+ "type": "object",
160
+ "additionalProperties": false,
161
+ "description": "The JazzCash construction: sort the selected non-empty parameters by name, join their values, prepend the Integrity Salt and HMAC the result with it.",
162
+ "required": ["algorithm", "includeFieldPrefixes", "excludeFields", "outputEncoding", "comparison"],
163
+ "properties": {
164
+ "algorithm": {
165
+ "const": "hmac-sha256"
166
+ },
167
+ "includeFieldPrefixes": {
168
+ "type": "array",
169
+ "minItems": 1,
170
+ "items": {
171
+ "type": "string"
172
+ },
173
+ "description": "Assumption A1: the PHP samples include ppmpf_*, the JavaScript linking sample does not."
174
+ },
175
+ "excludeFields": {
176
+ "type": "array",
177
+ "items": {
178
+ "type": "string"
179
+ }
180
+ },
181
+ "outputEncoding": {
182
+ "type": "string",
183
+ "enum": ["hex-lowercase", "base64"]
184
+ },
185
+ "comparison": {
186
+ "type": "string",
187
+ "enum": ["case-insensitive", "case-sensitive"]
188
+ }
189
+ }
190
+ }
191
+ ]
192
+ },
193
+ "response": {
194
+ "description": "How the response reports its outcome, and whether it carries a signature to verify.",
195
+ "oneOf": [
196
+ {
197
+ "type": "object",
198
+ "additionalProperties": false,
199
+ "description": "Assumption A2: response hash coverage is undocumented, so a mismatch reports 'unverified', never 'failed'.",
200
+ "required": ["successField", "successValue", "hashVerification", "hashField"],
201
+ "properties": {
202
+ "hashVerification": {
203
+ "const": "assumed-all-non-empty"
204
+ },
205
+ "hashField": {
206
+ "type": "string",
207
+ "minLength": 1,
208
+ "maxLength": 64,
209
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
210
+ "description": "The field carrying the response signature. JazzCash card and BNPL refunds return a bare SecureHash; every other JazzCash response returns pp_SecureHash."
211
+ },
212
+ "successField": {
213
+ "type": "string",
214
+ "minLength": 1,
215
+ "maxLength": 64,
216
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
217
+ "description": "The field carrying the service-level outcome."
218
+ },
219
+ "successValue": {
220
+ "type": "string",
221
+ "minLength": 1
222
+ },
223
+ "messageField": {
224
+ "type": "string",
225
+ "minLength": 1,
226
+ "maxLength": 64,
227
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
228
+ "description": "The field carrying the gateway's own explanation of the outcome. Optional: a provider that sends no message has none to name, and the generator then emits no lookup for it."
229
+ },
230
+ "settlement": {
231
+ "type": "object",
232
+ "additionalProperties": false,
233
+ "description": "The bank level of a two-level success rule. Checking only the service-level code classifies a DECLINED card as a successful payment.",
234
+ "required": ["field", "successValue"],
235
+ "properties": {
236
+ "field": {
237
+ "type": "string",
238
+ "minLength": 1,
239
+ "maxLength": 64,
240
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$"
241
+ },
242
+ "successValue": {
243
+ "type": "string",
244
+ "minLength": 1
245
+ }
246
+ }
247
+ },
248
+ "hashFieldPrefixes": {
249
+ "type": "array",
250
+ "items": {
251
+ "type": "string"
252
+ },
253
+ "default": [],
254
+ "description": "Prefixes selecting which RESPONSE fields feed the response hash. Empty means no filtering, which is correct for every documented flow: card and BNPL refund responses use unprefixed field names."
255
+ },
256
+ "notableFields": {
257
+ "type": "array",
258
+ "items": {
259
+ "type": "string"
260
+ }
261
+ }
262
+ }
263
+ },
264
+ {
265
+ "type": "object",
266
+ "additionalProperties": false,
267
+ "description": "A response the server does not verify a signature on. hashField is optional here: a provider whose responses are unsigned must not be made to name a field that does not exist.",
268
+ "required": ["successField", "successValue", "hashVerification"],
269
+ "properties": {
270
+ "hashVerification": {
271
+ "const": "not-applicable"
272
+ },
273
+ "hashField": {
274
+ "type": "string",
275
+ "minLength": 1,
276
+ "maxLength": 64,
277
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
278
+ "description": "Optional here: a gateway may return a digest it does not document how to reproduce, and absent means there is nothing to read."
279
+ },
280
+ "successField": {
281
+ "type": "string",
282
+ "minLength": 1,
283
+ "maxLength": 64,
284
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
285
+ "description": "The field carrying the service-level outcome."
286
+ },
287
+ "successValue": {
288
+ "type": "string",
289
+ "minLength": 1
290
+ },
291
+ "messageField": {
292
+ "type": "string",
293
+ "minLength": 1,
294
+ "maxLength": 64,
295
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
296
+ "description": "The field carrying the gateway's own explanation of the outcome. Optional: a provider that sends no message has none to name, and the generator then emits no lookup for it."
297
+ },
298
+ "settlement": {
299
+ "type": "object",
300
+ "additionalProperties": false,
301
+ "description": "The bank level of a two-level success rule. Checking only the service-level code classifies a DECLINED card as a successful payment.",
302
+ "required": ["field", "successValue"],
303
+ "properties": {
304
+ "field": {
305
+ "type": "string",
306
+ "minLength": 1,
307
+ "maxLength": 64,
308
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$"
309
+ },
310
+ "successValue": {
311
+ "type": "string",
312
+ "minLength": 1
313
+ }
314
+ }
315
+ },
316
+ "hashFieldPrefixes": {
317
+ "type": "array",
318
+ "items": {
319
+ "type": "string"
320
+ },
321
+ "default": [],
322
+ "description": "Prefixes selecting which RESPONSE fields feed the response hash. Empty means no filtering, which is correct for every documented flow: card and BNPL refund responses use unprefixed field names."
323
+ },
324
+ "notableFields": {
325
+ "type": "array",
326
+ "items": {
327
+ "type": "string"
328
+ }
329
+ }
330
+ }
331
+ }
332
+ ]
333
+ },
334
+ "companionFlows": {
335
+ "type": "array",
336
+ "items": {
337
+ "type": "string"
338
+ }
339
+ },
340
+ "docRefs": {
341
+ "type": "array",
342
+ "minItems": 1,
343
+ "items": {
344
+ "type": "object",
345
+ "additionalProperties": false,
346
+ "required": ["docId"],
347
+ "properties": {
348
+ "docId": {
349
+ "type": "string",
350
+ "minLength": 1
351
+ },
352
+ "sectionId": {
353
+ "type": "string",
354
+ "minLength": 1
355
+ },
356
+ "label": {
357
+ "type": "string",
358
+ "minLength": 1
359
+ }
360
+ }
361
+ }
362
+ },
363
+ "knownIssues": {
364
+ "type": "array",
365
+ "items": {
366
+ "type": "object",
367
+ "additionalProperties": false,
368
+ "required": ["id", "summary", "detail", "guidance"],
369
+ "properties": {
370
+ "id": {
371
+ "type": "string",
372
+ "minLength": 1
373
+ },
374
+ "summary": {
375
+ "type": "string",
376
+ "minLength": 1
377
+ },
378
+ "detail": {
379
+ "type": "string",
380
+ "minLength": 1
381
+ },
382
+ "guidance": {
383
+ "type": "string",
384
+ "minLength": 1
385
+ }
386
+ }
387
+ }
388
+ }
389
+ }
390
+ }