@phala/pay 0.13.5 → 0.13.6

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.
package/README.md CHANGED
@@ -137,6 +137,14 @@ with what was credited as `amount_credited`, beside the quoted `amount`.
137
137
  Checkout opens the QR code tab when no browser wallet is discovered; the Wallet tab remains
138
138
  available.
139
139
 
140
+ While waiting, under the payment methods, the checkout says that a sent payment usually shows
141
+ within a minute and not to pay again. Until the wallet tab sends a payment, it also offers "I've
142
+ paid — check now" for a payment sent by address or QR code from another wallet or an exchange,
143
+ which gives the page no transaction: it [requests a quote check](#requesting-a-quote-check) and
144
+ says only "Checking for your payment…"; the status line still says whether the payment was found.
145
+ The button waits 15 seconds after each click and stops after three received checks per quote, as
146
+ the service does; a request that was not received does not count.
147
+
140
148
  ### Your own wallet connection
141
149
 
142
150
  By default the wallet tab lists the browser's wallets. If your page already connects one, pass its
@@ -463,3 +471,13 @@ The checkout session retains its last known status and quote during temporary ne
463
471
  and exposes `reconnecting: true` with no permanent error. Polling resumes with bounded backoff and
464
472
  Retry-After; a successful refresh clears the reconnecting state. Invalid-secret and address-mismatch
465
473
  handling remains unchanged. See [planned upgrades](../../docs/integration.md#planned-upgrades-and-reconnecting).
474
+
475
+ ### Requesting a quote check
476
+
477
+ `await pay.checkQuote(clientSecret)` requests an immediate read-only discovery pass for the
478
+ quote's issued address. The server acknowledges with 202 even when it coalesces or limits a
479
+ request. Continue polling the quote for payment status; receipt never establishes payment.
480
+ Only open, unexpired quotes qualify. The service permits three checks/quote/rolling 24 hours,
481
+ 15-second address spacing, and a separate per-chain daily budget; otherwise normal scanning
482
+ continues. The exported `checkQuote({ apiBase, clientSecret })` supports the same request controls
483
+ as transaction hints.
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Hash } from "viem";
2
- import { type SubmitTransactionOptions } from "./transactions.js";
2
+ import { type CheckQuoteOptions, type SubmitTransactionOptions } from "./transactions.js";
3
3
  import { type CheckoutOptions, type CheckoutSession, type RetrieveQuoteOptions } from "./checkout.js";
4
4
  import type { ClientQuote } from "./quote.js";
5
5
  export interface PhalaPayOptions {
@@ -27,5 +27,7 @@ export declare class PhalaPay {
27
27
  checkout(clientSecret: string, options: Pick<CheckoutOptions, "expectedAddress" | "pollInterval" | "signal" | "requestTimeout">): CheckoutSession;
28
28
  /** Acknowledges a hint only; continue polling the object for payment status. */
29
29
  submitTransaction(clientSecret: string, transactionHash: Hash, options?: Pick<SubmitTransactionOptions, "chainId" | "signal" | "requestTimeout">): Promise<void>;
30
+ /** Requests immediate discovery; continue polling for the payment result. */
31
+ checkQuote(clientSecret: string, options?: Pick<CheckQuoteOptions, "signal" | "requestTimeout">): Promise<void>;
30
32
  }
31
33
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAqB,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAQ;;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAGb,OAAO,EAAE,eAAe;IAKpC,+FAA+F;IAC/F,aAAa,CACX,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,gBAAgB,CAAM,GACpE,OAAO,CAAC,WAAW,CAAC;IAUvB,wFAAwF;IACxF,QAAQ,CACN,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,iBAAiB,GAAG,cAAc,GAAG,QAAQ,GAAG,gBAAgB,CAAC,GAC/F,eAAe;IASlB,gFAAgF;IAChF,iBAAiB,CACf,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,IAAI,EACrB,OAAO,GAAE,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,QAAQ,GAAG,gBAAgB,CAAM,GACpF,OAAO,CAAC,IAAI,CAAC;CAOjB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAc,KAAK,iBAAiB,EAAqB,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACzH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAQ;;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAGb,OAAO,EAAE,eAAe;IAKpC,+FAA+F;IAC/F,aAAa,CACX,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,gBAAgB,CAAM,GACpE,OAAO,CAAC,WAAW,CAAC;IAUvB,wFAAwF;IACxF,QAAQ,CACN,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,iBAAiB,GAAG,cAAc,GAAG,QAAQ,GAAG,gBAAgB,CAAC,GAC/F,eAAe;IASlB,gFAAgF;IAChF,iBAAiB,CACf,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,IAAI,EACrB,OAAO,GAAE,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,QAAQ,GAAG,gBAAgB,CAAM,GACpF,OAAO,CAAC,IAAI,CAAC;IAIhB,6EAA6E;IAC7E,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,gBAAgB,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOpH"}
package/dist/client.js CHANGED
@@ -1,4 +1,4 @@
1
- import { submitTransaction } from "./transactions.js";
1
+ import { checkQuote, submitTransaction } from "./transactions.js";
2
2
  import { createCheckout, retrieveQuote, } from "./checkout.js";
3
3
  /**
4
4
  * The browser client, in the shape of Stripe.js: it holds no key, only the service origin, and
@@ -40,6 +40,10 @@ export class PhalaPay {
40
40
  submitTransaction(clientSecret, transactionHash, options = {}) {
41
41
  return submitTransaction({ ...options, clientSecret, transactionHash, apiBase: this.apiBase, ...this.#fetchOption() });
42
42
  }
43
+ /** Requests immediate discovery; continue polling for the payment result. */
44
+ checkQuote(clientSecret, options = {}) {
45
+ return checkQuote({ ...options, clientSecret, apiBase: this.apiBase, ...this.#fetchOption() });
46
+ }
43
47
  #fetchOption() {
44
48
  return this.#fetch === undefined ? {} : { fetch: this.#fetch };
45
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAiC,MAAM,mBAAmB,CAAC;AACrF,OAAO,EACL,cAAc,EACd,aAAa,GAId,MAAM,eAAe,CAAC;AASvB;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAQ;IACV,OAAO,CAAS;IAChB,MAAM,CAAsC;IAErD,YAAY,OAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,+FAA+F;IAC/F,aAAa,CACX,YAAoB,EACpB,eAAuB,EACvB,UAAmE,EAAE;QAErE,OAAO,aAAa,CAAC;YACnB,YAAY;YACZ,eAAe;YACf,GAAG,OAAO;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,IAAI,CAAC,YAAY,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAED,wFAAwF;IACxF,QAAQ,CACN,YAAoB,EACpB,OAAgG;QAEhG,OAAO,cAAc,CAAC;YACpB,YAAY;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,OAAO;YACV,GAAG,IAAI,CAAC,YAAY,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAED,gFAAgF;IAChF,iBAAiB,CACf,YAAoB,EACpB,eAAqB,EACrB,UAAmF,EAAE;QAErF,OAAO,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACzH,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAA0B,iBAAiB,EAAiC,MAAM,mBAAmB,CAAC;AACzH,OAAO,EACL,cAAc,EACd,aAAa,GAId,MAAM,eAAe,CAAC;AASvB;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAQ;IACV,OAAO,CAAS;IAChB,MAAM,CAAsC;IAErD,YAAY,OAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,+FAA+F;IAC/F,aAAa,CACX,YAAoB,EACpB,eAAuB,EACvB,UAAmE,EAAE;QAErE,OAAO,aAAa,CAAC;YACnB,YAAY;YACZ,eAAe;YACf,GAAG,OAAO;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,IAAI,CAAC,YAAY,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAED,wFAAwF;IACxF,QAAQ,CACN,YAAoB,EACpB,OAAgG;QAEhG,OAAO,cAAc,CAAC;YACpB,YAAY;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,OAAO;YACV,GAAG,IAAI,CAAC,YAAY,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAED,gFAAgF;IAChF,iBAAiB,CACf,YAAoB,EACpB,eAAqB,EACrB,UAAmF,EAAE;QAErF,OAAO,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACzH,CAAC;IAED,6EAA6E;IAC7E,UAAU,CAAC,YAAoB,EAAE,UAAgE,EAAE;QACjG,OAAO,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -10,5 +10,5 @@ export { paymentOptionLabel, paymentOptions, samePaymentOption, type NetworkPaym
10
10
  export { INJECTED_WALLET_UUID, WalletError, payWithWallet, watchWallets, type EthereumProvider, type Wallet, type WalletErrorCode, type WalletInfo, } from "./wallet.js";
11
11
  export { networkIcon, assetIcon } from "./icons.js";
12
12
  export type { CheckoutParams } from "./shared/checkout-params.js";
13
- export { submitTransaction, type SubmitTransactionOptions } from "./transactions.js";
13
+ export { checkQuote, type CheckQuoteOptions, submitTransaction, type SubmitTransactionOptions } from "./transactions.js";
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,GACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9G,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/I,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,GACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9G,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/I,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -9,5 +9,5 @@ export { assetIconName, assetName, assetSymbol, iconMonogram } from "./icon-name
9
9
  export { paymentOptionLabel, paymentOptions, samePaymentOption, } from "./options.js";
10
10
  export { INJECTED_WALLET_UUID, WalletError, payWithWallet, watchWallets, } from "./wallet.js";
11
11
  export { networkIcon, assetIcon } from "./icons.js";
12
- export { submitTransaction } from "./transactions.js";
12
+ export { checkQuote, submitTransaction } from "./transactions.js";
13
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,GAQd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAwB,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,sBAAsB,GAKvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9G,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/I,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,GAMd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAoB,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AACrG,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,GAIlB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,YAAY,GAKb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAiC,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,GAQd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAwB,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,sBAAsB,GAKvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9G,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/I,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,GAMd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAoB,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AACrG,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,GAIlB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,YAAY,GAKb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,UAAU,EAA0B,iBAAiB,EAAiC,MAAM,mBAAmB,CAAC"}
@@ -12,6 +12,9 @@ export interface SubmitTransactionOptions {
12
12
  }
13
13
  /** Sends a best-effort detection hint. Receipt of a hint says nothing about payment status. */
14
14
  export declare function submitTransaction(options: SubmitTransactionOptions): Promise<void>;
15
+ export type CheckQuoteOptions = Omit<SubmitTransactionOptions, "transactionHash" | "chainId">;
16
+ /** Requests address discovery; receipt acknowledges only the request. Continue polling the quote. */
17
+ export declare function checkQuote(options: CheckQuoteOptions): Promise<void>;
15
18
  type QuoteSubmission = Omit<SubmitTransactionOptions, "transactionHash" | "chainId">;
16
19
  /** Keep the checkout's origin and secret out of its public, serializable quote view. */
17
20
  export declare function bindQuoteSubmission(quote: ClientQuote, options: QuoteSubmission): void;
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAGvE,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,IAAI,CAAC;IACtB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,+FAA+F;AAC/F,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxF;AAED,KAAK,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;AAGrF,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAEtF;AAED,+FAA+F;AAC/F,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,GAAG,IAAI,CAKvF"}
1
+ {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAGvE,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,IAAI,CAAC;IACtB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,+FAA+F;AAC/F,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxF;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;AAE9F,qGAAqG;AACrG,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1E;AAED,KAAK,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;AAGrF,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAEtF;AAED,+FAA+F;AAC/F,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,GAAG,IAAI,CAKvF"}
@@ -24,6 +24,20 @@ export async function submitTransaction(options) {
24
24
  if (response.status !== 202)
25
25
  throw new Error("Transaction hint was not received");
26
26
  }
27
+ /** Requests address discovery; receipt acknowledges only the request. Continue polling the quote. */
28
+ export async function checkQuote(options) {
29
+ const id = quoteIdFromClientSecret(options.clientSecret);
30
+ const url = new URL(`${trimTrailingSlashes(options.apiBase)}/v1/quotes/${encodeURIComponent(id)}/check`);
31
+ url.searchParams.set("client_secret", options.clientSecret);
32
+ const response = await (options.fetch ?? globalThis.fetch)(url, {
33
+ method: "POST",
34
+ signal: requestSignal(options),
35
+ credentials: "omit",
36
+ redirect: "error",
37
+ });
38
+ if (response.status !== 202)
39
+ throw new Error("Quote check was not received");
40
+ }
27
41
  const submissions = new WeakMap();
28
42
  /** Keep the checkout's origin and secret out of its public, serializable quote view. */
29
43
  export function bindQuoteSubmission(quote, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAoB,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAalE,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAiC;IACvE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,SAAS,GAAG,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,EAAE,GAAG,SAAS,IAAI,uBAAuB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACtE,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,QAAQ,IAAI,kBAAkB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IACrH,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;QAC9D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACtI,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC;QAC9B,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACpF,CAAC;AAGD,MAAM,WAAW,GAAG,IAAI,OAAO,EAAgC,CAAC;AAEhE,wFAAwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,KAAkB,EAAE,OAAwB;IAC9E,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,uBAAuB,CAAC,KAAkB,EAAE,eAAqB;IAC/E,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,KAAK,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACjF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phala/pay",
3
- "version": "0.13.5",
3
+ "version": "0.13.6",
4
4
  "description": "Phala Pay framework-free browser client",
5
5
  "keywords": [
6
6
  "crypto",
package/src/client.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Hash } from "viem";
2
- import { submitTransaction, type SubmitTransactionOptions } from "./transactions.js";
2
+ import { checkQuote, type CheckQuoteOptions, submitTransaction, type SubmitTransactionOptions } from "./transactions.js";
3
3
  import {
4
4
  createCheckout,
5
5
  retrieveQuote,
@@ -71,6 +71,11 @@ export class PhalaPay {
71
71
  return submitTransaction({ ...options, clientSecret, transactionHash, apiBase: this.apiBase, ...this.#fetchOption() });
72
72
  }
73
73
 
74
+ /** Requests immediate discovery; continue polling for the payment result. */
75
+ checkQuote(clientSecret: string, options: Pick<CheckQuoteOptions, "signal" | "requestTimeout"> = {}): Promise<void> {
76
+ return checkQuote({ ...options, clientSecret, apiBase: this.apiBase, ...this.#fetchOption() });
77
+ }
78
+
74
79
  #fetchOption(): { fetch?: typeof globalThis.fetch } {
75
80
  return this.#fetch === undefined ? {} : { fetch: this.#fetch };
76
81
  }
package/src/index.ts CHANGED
@@ -57,4 +57,4 @@ export {
57
57
  export { networkIcon, assetIcon } from "./icons.js";
58
58
  export type { CheckoutParams } from "./shared/checkout-params.js";
59
59
 
60
- export { submitTransaction, type SubmitTransactionOptions } from "./transactions.js";
60
+ export { checkQuote, type CheckQuoteOptions, submitTransaction, type SubmitTransactionOptions } from "./transactions.js";
@@ -37,6 +37,22 @@ export async function submitTransaction(options: SubmitTransactionOptions): Prom
37
37
  if (response.status !== 202) throw new Error("Transaction hint was not received");
38
38
  }
39
39
 
40
+ export type CheckQuoteOptions = Omit<SubmitTransactionOptions, "transactionHash" | "chainId">;
41
+
42
+ /** Requests address discovery; receipt acknowledges only the request. Continue polling the quote. */
43
+ export async function checkQuote(options: CheckQuoteOptions): Promise<void> {
44
+ const id = quoteIdFromClientSecret(options.clientSecret);
45
+ const url = new URL(`${trimTrailingSlashes(options.apiBase)}/v1/quotes/${encodeURIComponent(id)}/check`);
46
+ url.searchParams.set("client_secret", options.clientSecret);
47
+ const response = await (options.fetch ?? globalThis.fetch)(url, {
48
+ method: "POST",
49
+ signal: requestSignal(options),
50
+ credentials: "omit",
51
+ redirect: "error",
52
+ });
53
+ if (response.status !== 202) throw new Error("Quote check was not received");
54
+ }
55
+
40
56
  type QuoteSubmission = Omit<SubmitTransactionOptions, "transactionHash" | "chainId">;
41
57
  const submissions = new WeakMap<ClientQuote, QuoteSubmission>();
42
58