@relai-fi/x402 0.5.35 → 0.5.37

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/dist/index.cjs CHANGED
@@ -661,7 +661,7 @@ var Relai = class {
661
661
  resolvedPayTo = options.payTo;
662
662
  }
663
663
  const feePayer = options.feePayer || await self.getFeePayer(caip2);
664
- return res.status(402).json({
664
+ let paymentRequiredResponse = {
665
665
  x402Version: 2,
666
666
  error: "Payment required",
667
667
  resource: {
@@ -699,7 +699,24 @@ var Relai = class {
699
699
  }
700
700
  }
701
701
  } : {}
702
- });
702
+ };
703
+ if (self.plugins.length > 0) {
704
+ const enrichCtx = {
705
+ network,
706
+ price: resolvedPrice,
707
+ path: req.path || req.originalUrl || "/",
708
+ method: (req.method || "GET").toUpperCase()
709
+ };
710
+ for (const plugin of self.plugins) {
711
+ if (!plugin.enrich402Response) continue;
712
+ try {
713
+ paymentRequiredResponse = plugin.enrich402Response(paymentRequiredResponse, enrichCtx) || paymentRequiredResponse;
714
+ } catch (pluginErr) {
715
+ console.warn(`[Relai] Plugin '${plugin.name}' enrich402Response error (non-blocking):`, pluginErr);
716
+ }
717
+ }
718
+ }
719
+ return res.status(402).json(paymentRequiredResponse);
703
720
  }
704
721
  let paymentProof;
705
722
  try {
@@ -715,6 +732,39 @@ var Relai = class {
715
732
  });
716
733
  }
717
734
  }
735
+ if (paymentProof.bridged === true && paymentProof.targetTxId) {
736
+ console.log(`[Relai] Bridged payment accepted: source=${paymentProof.sourceTxId}, target=${paymentProof.targetTxId}`);
737
+ const paymentInfo2 = {
738
+ verified: true,
739
+ transactionId: paymentProof.targetTxId,
740
+ payer: paymentProof.sourceTxId || "bridge",
741
+ network,
742
+ amount: resolvedPrice
743
+ };
744
+ req.payment = paymentInfo2;
745
+ req.x402Payer = paymentProof.sourceTxId || "bridge";
746
+ req.x402Paid = true;
747
+ req.x402Transaction = paymentProof.targetTxId;
748
+ req.x402Network = network;
749
+ req.x402Bridged = true;
750
+ req.x402SourceChain = paymentProof.sourceChain;
751
+ const paymentResponse2 = {
752
+ x402Version: 2,
753
+ scheme: "exact",
754
+ network: caip2,
755
+ transaction: paymentProof.targetTxId,
756
+ payer: paymentProof.sourceTxId,
757
+ amount,
758
+ asset,
759
+ bridged: true
760
+ };
761
+ res.setHeader(
762
+ "PAYMENT-RESPONSE",
763
+ Buffer.from(JSON.stringify(paymentResponse2)).toString("base64")
764
+ );
765
+ options.onPaymentSettled?.(req, { success: true, transaction: paymentProof.targetTxId, payer: paymentProof.sourceTxId });
766
+ return next();
767
+ }
718
768
  let settlePayTo;
719
769
  if (stripeConfig) {
720
770
  settlePayTo = paymentProof.payload?.authorization?.to || paymentProof.accepted?.payTo || "";
@@ -729,7 +779,7 @@ var Relai = class {
729
779
  }
730
780
  const paymentRequirements = {
731
781
  scheme: "exact",
732
- network,
782
+ network: caip2,
733
783
  amount,
734
784
  asset,
735
785
  payTo: settlePayTo,