@payconductor/react 1.0.6 → 1.0.8
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 +253 -253
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js.map +1 -1
- package/dist/payconductor/three-ds/handler.d.ts +1 -2
- package/dist/payconductor/three-ds/types.d.ts +1 -1
- package/package.json +58 -58
package/README.md
CHANGED
|
@@ -1,253 +1,253 @@
|
|
|
1
|
-
# @payconductor/react
|
|
2
|
-
|
|
3
|
-
React SDK for [PayConductor](https://payconductor.ai) payment integration.
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/@payconductor/react)
|
|
6
|
-
|
|
7
|
-
## Requirements
|
|
8
|
-
|
|
9
|
-
Minimum React version: **v16.8**.
|
|
10
|
-
|
|
11
|
-
## Installation
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm install @payconductor/react @payconductor/sdk
|
|
15
|
-
# or
|
|
16
|
-
yarn add @payconductor/react @payconductor/sdk
|
|
17
|
-
# or
|
|
18
|
-
pnpm add @payconductor/react @payconductor/sdk
|
|
19
|
-
# or
|
|
20
|
-
bun add @payconductor/react @payconductor/sdk
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Quick Start
|
|
24
|
-
|
|
25
|
-
```tsx
|
|
26
|
-
import {
|
|
27
|
-
PayConductor,
|
|
28
|
-
PayConductorCheckoutElement,
|
|
29
|
-
usePayConductor,
|
|
30
|
-
usePayconductorElement,
|
|
31
|
-
type PaymentMethod,
|
|
32
|
-
type PaymentResult,
|
|
33
|
-
} from '@payconductor/react';
|
|
34
|
-
import {
|
|
35
|
-
AvailablePaymentMethods,
|
|
36
|
-
Configuration,
|
|
37
|
-
DocumentType,
|
|
38
|
-
OrderApi,
|
|
39
|
-
type OrderCreateRequest,
|
|
40
|
-
} from '@payconductor/sdk';
|
|
41
|
-
|
|
42
|
-
const sdkConfig = new Configuration({
|
|
43
|
-
username: import.meta.env.VITE_PAYCONDUCTOR_CLIENT_ID || 'your_client_id',
|
|
44
|
-
password: import.meta.env.VITE_PAYCONDUCTOR_CLIENT_SECRET || 'your_client_secret',
|
|
45
|
-
});
|
|
46
|
-
const orderApi = new OrderApi(sdkConfig);
|
|
47
|
-
|
|
48
|
-
function CheckoutForm() {
|
|
49
|
-
const { isReady, error } = usePayConductor();
|
|
50
|
-
const { confirmPayment, getSelectedPaymentMethod } = usePayconductorElement();
|
|
51
|
-
|
|
52
|
-
const [errorMessage, setErrorMessage] = useState<string | null>(null);
|
|
53
|
-
const [isProcessing, setIsProcessing] = useState(false);
|
|
54
|
-
|
|
55
|
-
const handleFinalize = async () => {
|
|
56
|
-
if (!isReady) return;
|
|
57
|
-
setIsProcessing(true);
|
|
58
|
-
setErrorMessage(null);
|
|
59
|
-
|
|
60
|
-
try {
|
|
61
|
-
// 1. Create the Draft order via @payconductor/sdk to get the orderId
|
|
62
|
-
const orderRequest: OrderCreateRequest = {
|
|
63
|
-
chargeAmount: 100.00,
|
|
64
|
-
clientIp: '0.0.0.0',
|
|
65
|
-
customer: {
|
|
66
|
-
documentNumber: '12345678900',
|
|
67
|
-
documentType: DocumentType.Cpf,
|
|
68
|
-
email: 'customer@example.com',
|
|
69
|
-
name: 'Customer Name',
|
|
70
|
-
},
|
|
71
|
-
discountAmount: 0,
|
|
72
|
-
externalId: `order-${Date.now()}`,
|
|
73
|
-
payment: {
|
|
74
|
-
paymentMethod: 'Draft',
|
|
75
|
-
availablePaymentMethods: [
|
|
76
|
-
AvailablePaymentMethods.CreditCard,
|
|
77
|
-
AvailablePaymentMethods.Pix,
|
|
78
|
-
AvailablePaymentMethods.BankSlip,
|
|
79
|
-
],
|
|
80
|
-
},
|
|
81
|
-
shippingFee: 0,
|
|
82
|
-
taxFee: 0,
|
|
83
|
-
};
|
|
84
|
-
const { data } = await orderApi.orderCreate(orderRequest);
|
|
85
|
-
|
|
86
|
-
// 2. Confirm payment with the obtained orderId
|
|
87
|
-
const result: PaymentResult = await confirmPayment({ orderId: data.id });
|
|
88
|
-
if (result.status === 'succeeded') alert('Payment successful!');
|
|
89
|
-
} catch (err: unknown) {
|
|
90
|
-
setErrorMessage(err instanceof Error ? err.message : 'Payment failed');
|
|
91
|
-
} finally {
|
|
92
|
-
setIsProcessing(false);
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
const selectedMethod = getSelectedPaymentMethod();
|
|
97
|
-
|
|
98
|
-
return (
|
|
99
|
-
<div>
|
|
100
|
-
{/* The iframe is rendered here */}
|
|
101
|
-
<PayConductorCheckoutElement height="600px" />
|
|
102
|
-
|
|
103
|
-
{selectedMethod && <p>Selected method: <strong>{selectedMethod}</strong></p>}
|
|
104
|
-
|
|
105
|
-
<button type="button" onClick={handleFinalize} disabled={!isReady || isProcessing}>
|
|
106
|
-
{isProcessing ? 'Processing...' : 'Checkout'}
|
|
107
|
-
</button>
|
|
108
|
-
|
|
109
|
-
{errorMessage && <div>{errorMessage}</div>}
|
|
110
|
-
{error && <div>Error: {error}</div>}
|
|
111
|
-
</div>
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export default function App() {
|
|
116
|
-
return (
|
|
117
|
-
<PayConductor
|
|
118
|
-
publicKey={import.meta.env.VITE_PAYCONDUCTOR_CLIENT_ID || "your_client_id"}
|
|
119
|
-
locale="pt-BR"
|
|
120
|
-
debug={true}
|
|
121
|
-
theme={{ primaryColor: '#0066ff', borderRadius: '8px' }}
|
|
122
|
-
onReady={() => console.log('Ready')}
|
|
123
|
-
onPaymentComplete={(result: PaymentResult) => console.log('Complete:', result)}
|
|
124
|
-
onPaymentMethodSelected={(method: PaymentMethod) => console.log('Method:', method)}
|
|
125
|
-
>
|
|
126
|
-
<CheckoutForm />
|
|
127
|
-
</PayConductor>
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
## API Reference
|
|
133
|
-
|
|
134
|
-
### `<PayConductor />`
|
|
135
|
-
|
|
136
|
-
Provider component that initializes the payment session. **Does not render the iframe directly** — use `<PayConductorCheckoutElement>` for that.
|
|
137
|
-
|
|
138
|
-
| Prop | Type | Description |
|
|
139
|
-
|------|------|-------------|
|
|
140
|
-
| `publicKey` | `string` | Your PayConductor public key |
|
|
141
|
-
| `theme` | `PayConductorTheme` | Theme customization options |
|
|
142
|
-
| `locale` | `string` | Locale (e.g. `'pt-BR'`, `'en-US'`) |
|
|
143
|
-
| `paymentMethods` | `PaymentMethod[] \| "all"` | Available payment methods |
|
|
144
|
-
| `defaultPaymentMethod` | `PaymentMethod` | Pre-selected payment method |
|
|
145
|
-
| `paymentMethodsConfig` | `PaymentMethodConfig[]` | Per-method config (installments, discounts) |
|
|
146
|
-
| `methodsDirection` | `"vertical" \| "horizontal"` | Layout direction of payment methods |
|
|
147
|
-
| `showPaymentButtons` | `boolean` | Show native action buttons inside the iframe |
|
|
148
|
-
| `nuPayConfig` | `NuPayData` | Required when NuPay is an available method |
|
|
149
|
-
| `debug` | `boolean` | Enable prefixed console.log for key events |
|
|
150
|
-
| `onReady` | `() => void` | Called when the iframe is ready |
|
|
151
|
-
| `onError` | `(error: Error) => void` | Called when an error occurs |
|
|
152
|
-
| `onPaymentComplete` | `(result: PaymentResult) => void` | Called when payment succeeds |
|
|
153
|
-
| `onPaymentFailed` | `(result: PaymentResult) => void` | Called when payment fails |
|
|
154
|
-
| `onPaymentPending` | `(result: PaymentResult) => void` | Called when payment is pending |
|
|
155
|
-
| `onPaymentMethodSelected` | `(method: PaymentMethod) => void` | Called when user selects a payment method |
|
|
156
|
-
|
|
157
|
-
### `<PayConductorCheckoutElement />`
|
|
158
|
-
|
|
159
|
-
Renders the payment iframe. Place it inside `<PayConductor>` wherever you want the iframe in your layout.
|
|
160
|
-
|
|
161
|
-
| Prop | Type | Description |
|
|
162
|
-
|------|------|-------------|
|
|
163
|
-
| `height` | `string` | Iframe height (default: `'600px'`) |
|
|
164
|
-
|
|
165
|
-
### `usePayConductor()`
|
|
166
|
-
|
|
167
|
-
Hook that provides frame state.
|
|
168
|
-
|
|
169
|
-
```tsx
|
|
170
|
-
const { isReady, error } = usePayConductor();
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
| Property | Type | Description |
|
|
174
|
-
|----------|------|-------------|
|
|
175
|
-
| `isReady` | `boolean` | Whether the iframe is ready |
|
|
176
|
-
| `error` | `string \| null` | Error message, if any |
|
|
177
|
-
|
|
178
|
-
### `usePayconductorElement()`
|
|
179
|
-
|
|
180
|
-
Hook that provides payment action methods.
|
|
181
|
-
|
|
182
|
-
```tsx
|
|
183
|
-
const {
|
|
184
|
-
init,
|
|
185
|
-
confirmPayment,
|
|
186
|
-
validate,
|
|
187
|
-
reset,
|
|
188
|
-
getSelectedPaymentMethod,
|
|
189
|
-
updateConfig,
|
|
190
|
-
updateorderId,
|
|
191
|
-
update,
|
|
192
|
-
submit,
|
|
193
|
-
} = usePayconductorElement();
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
| Method | Signature | Description |
|
|
197
|
-
|--------|-----------|-------------|
|
|
198
|
-
| `init` | `(config: PayConductorConfig) => Promise<void>` | Sends full config to the iframe |
|
|
199
|
-
| `confirmPayment` | `({ orderId: string }) => Promise<PaymentResult>` | Triggers payment confirmation in iframe |
|
|
200
|
-
| `validate` | `(data: unknown) => Promise<boolean>` | Validates current form data |
|
|
201
|
-
| `reset` | `() => Promise<void>` | Resets the payment form |
|
|
202
|
-
| `getSelectedPaymentMethod` | `() => PaymentMethod \| null` | Returns the payment method selected by user |
|
|
203
|
-
| `updateConfig` | `(config: Partial<PayConductorConfig>) => void` | Updates theme, locale, or paymentMethods |
|
|
204
|
-
| `updateorderId` | `(orderId: string) => void` | Updates the order id in the iframe |
|
|
205
|
-
| `update` | `(options: UpdateOptions) => void` | Updates billing details |
|
|
206
|
-
| `submit` | `() => Promise<SubmitResult>` | Submits the form (validate + format) |
|
|
207
|
-
|
|
208
|
-
## TypeScript
|
|
209
|
-
|
|
210
|
-
```ts
|
|
211
|
-
import type {
|
|
212
|
-
PaymentResult,
|
|
213
|
-
PaymentMethod,
|
|
214
|
-
PayConductorTheme,
|
|
215
|
-
PayConductorConfig,
|
|
216
|
-
PaymentConfirmData,
|
|
217
|
-
PixPaymentData,
|
|
218
|
-
CreditCardPaymentData,
|
|
219
|
-
BankSlipPaymentData,
|
|
220
|
-
NuPayPaymentData,
|
|
221
|
-
PicPayPaymentData,
|
|
222
|
-
CardPaymentData,
|
|
223
|
-
BillingDetails,
|
|
224
|
-
} from '@payconductor/react';
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
## Payment Flow
|
|
228
|
-
|
|
229
|
-
```
|
|
230
|
-
1. <PayConductor publicKey="pk_xxx"> mounts
|
|
231
|
-
└─ Registers window.PayConductor, stores iframeUrl
|
|
232
|
-
|
|
233
|
-
2. <PayConductorCheckoutElement /> mounts
|
|
234
|
-
└─ Reads iframeUrl, renders the iframe
|
|
235
|
-
|
|
236
|
-
3. iframe loads → fetches payment methods → sends Ready
|
|
237
|
-
SDK receives Ready → sends config (theme, locale, paymentMethods)
|
|
238
|
-
|
|
239
|
-
4. User selects payment method
|
|
240
|
-
└─ onPaymentMethodSelected fires
|
|
241
|
-
└─ getSelectedPaymentMethod() returns the chosen method
|
|
242
|
-
|
|
243
|
-
5. User clicks "Checkout" (your button, outside the iframe)
|
|
244
|
-
└─ @payconductor/sdk creates Draft order → returns orderId
|
|
245
|
-
└─ confirmPayment({ orderId })
|
|
246
|
-
└─ iframe collects form data → POST /orders/:id/confirm
|
|
247
|
-
|
|
248
|
-
6. SDK receives PaymentComplete/Failed/Pending → callbacks fire
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
## License
|
|
252
|
-
|
|
253
|
-
MIT
|
|
1
|
+
# @payconductor/react
|
|
2
|
+
|
|
3
|
+
React SDK for [PayConductor](https://payconductor.ai) payment integration.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@payconductor/react)
|
|
6
|
+
|
|
7
|
+
## Requirements
|
|
8
|
+
|
|
9
|
+
Minimum React version: **v16.8**.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @payconductor/react @payconductor/sdk
|
|
15
|
+
# or
|
|
16
|
+
yarn add @payconductor/react @payconductor/sdk
|
|
17
|
+
# or
|
|
18
|
+
pnpm add @payconductor/react @payconductor/sdk
|
|
19
|
+
# or
|
|
20
|
+
bun add @payconductor/react @payconductor/sdk
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
import {
|
|
27
|
+
PayConductor,
|
|
28
|
+
PayConductorCheckoutElement,
|
|
29
|
+
usePayConductor,
|
|
30
|
+
usePayconductorElement,
|
|
31
|
+
type PaymentMethod,
|
|
32
|
+
type PaymentResult,
|
|
33
|
+
} from '@payconductor/react';
|
|
34
|
+
import {
|
|
35
|
+
AvailablePaymentMethods,
|
|
36
|
+
Configuration,
|
|
37
|
+
DocumentType,
|
|
38
|
+
OrderApi,
|
|
39
|
+
type OrderCreateRequest,
|
|
40
|
+
} from '@payconductor/sdk';
|
|
41
|
+
|
|
42
|
+
const sdkConfig = new Configuration({
|
|
43
|
+
username: import.meta.env.VITE_PAYCONDUCTOR_CLIENT_ID || 'your_client_id',
|
|
44
|
+
password: import.meta.env.VITE_PAYCONDUCTOR_CLIENT_SECRET || 'your_client_secret',
|
|
45
|
+
});
|
|
46
|
+
const orderApi = new OrderApi(sdkConfig);
|
|
47
|
+
|
|
48
|
+
function CheckoutForm() {
|
|
49
|
+
const { isReady, error } = usePayConductor();
|
|
50
|
+
const { confirmPayment, getSelectedPaymentMethod } = usePayconductorElement();
|
|
51
|
+
|
|
52
|
+
const [errorMessage, setErrorMessage] = useState<string | null>(null);
|
|
53
|
+
const [isProcessing, setIsProcessing] = useState(false);
|
|
54
|
+
|
|
55
|
+
const handleFinalize = async () => {
|
|
56
|
+
if (!isReady) return;
|
|
57
|
+
setIsProcessing(true);
|
|
58
|
+
setErrorMessage(null);
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
// 1. Create the Draft order via @payconductor/sdk to get the orderId
|
|
62
|
+
const orderRequest: OrderCreateRequest = {
|
|
63
|
+
chargeAmount: 100.00,
|
|
64
|
+
clientIp: '0.0.0.0',
|
|
65
|
+
customer: {
|
|
66
|
+
documentNumber: '12345678900',
|
|
67
|
+
documentType: DocumentType.Cpf,
|
|
68
|
+
email: 'customer@example.com',
|
|
69
|
+
name: 'Customer Name',
|
|
70
|
+
},
|
|
71
|
+
discountAmount: 0,
|
|
72
|
+
externalId: `order-${Date.now()}`,
|
|
73
|
+
payment: {
|
|
74
|
+
paymentMethod: 'Draft',
|
|
75
|
+
availablePaymentMethods: [
|
|
76
|
+
AvailablePaymentMethods.CreditCard,
|
|
77
|
+
AvailablePaymentMethods.Pix,
|
|
78
|
+
AvailablePaymentMethods.BankSlip,
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
shippingFee: 0,
|
|
82
|
+
taxFee: 0,
|
|
83
|
+
};
|
|
84
|
+
const { data } = await orderApi.orderCreate(orderRequest);
|
|
85
|
+
|
|
86
|
+
// 2. Confirm payment with the obtained orderId
|
|
87
|
+
const result: PaymentResult = await confirmPayment({ orderId: data.id });
|
|
88
|
+
if (result.status === 'succeeded') alert('Payment successful!');
|
|
89
|
+
} catch (err: unknown) {
|
|
90
|
+
setErrorMessage(err instanceof Error ? err.message : 'Payment failed');
|
|
91
|
+
} finally {
|
|
92
|
+
setIsProcessing(false);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const selectedMethod = getSelectedPaymentMethod();
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<div>
|
|
100
|
+
{/* The iframe is rendered here */}
|
|
101
|
+
<PayConductorCheckoutElement height="600px" />
|
|
102
|
+
|
|
103
|
+
{selectedMethod && <p>Selected method: <strong>{selectedMethod}</strong></p>}
|
|
104
|
+
|
|
105
|
+
<button type="button" onClick={handleFinalize} disabled={!isReady || isProcessing}>
|
|
106
|
+
{isProcessing ? 'Processing...' : 'Checkout'}
|
|
107
|
+
</button>
|
|
108
|
+
|
|
109
|
+
{errorMessage && <div>{errorMessage}</div>}
|
|
110
|
+
{error && <div>Error: {error}</div>}
|
|
111
|
+
</div>
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export default function App() {
|
|
116
|
+
return (
|
|
117
|
+
<PayConductor
|
|
118
|
+
publicKey={import.meta.env.VITE_PAYCONDUCTOR_CLIENT_ID || "your_client_id"}
|
|
119
|
+
locale="pt-BR"
|
|
120
|
+
debug={true}
|
|
121
|
+
theme={{ primaryColor: '#0066ff', borderRadius: '8px' }}
|
|
122
|
+
onReady={() => console.log('Ready')}
|
|
123
|
+
onPaymentComplete={(result: PaymentResult) => console.log('Complete:', result)}
|
|
124
|
+
onPaymentMethodSelected={(method: PaymentMethod) => console.log('Method:', method)}
|
|
125
|
+
>
|
|
126
|
+
<CheckoutForm />
|
|
127
|
+
</PayConductor>
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## API Reference
|
|
133
|
+
|
|
134
|
+
### `<PayConductor />`
|
|
135
|
+
|
|
136
|
+
Provider component that initializes the payment session. **Does not render the iframe directly** — use `<PayConductorCheckoutElement>` for that.
|
|
137
|
+
|
|
138
|
+
| Prop | Type | Description |
|
|
139
|
+
|------|------|-------------|
|
|
140
|
+
| `publicKey` | `string` | Your PayConductor public key |
|
|
141
|
+
| `theme` | `PayConductorTheme` | Theme customization options |
|
|
142
|
+
| `locale` | `string` | Locale (e.g. `'pt-BR'`, `'en-US'`) |
|
|
143
|
+
| `paymentMethods` | `PaymentMethod[] \| "all"` | Available payment methods |
|
|
144
|
+
| `defaultPaymentMethod` | `PaymentMethod` | Pre-selected payment method |
|
|
145
|
+
| `paymentMethodsConfig` | `PaymentMethodConfig[]` | Per-method config (installments, discounts) |
|
|
146
|
+
| `methodsDirection` | `"vertical" \| "horizontal"` | Layout direction of payment methods |
|
|
147
|
+
| `showPaymentButtons` | `boolean` | Show native action buttons inside the iframe |
|
|
148
|
+
| `nuPayConfig` | `NuPayData` | Required when NuPay is an available method |
|
|
149
|
+
| `debug` | `boolean` | Enable prefixed console.log for key events |
|
|
150
|
+
| `onReady` | `() => void` | Called when the iframe is ready |
|
|
151
|
+
| `onError` | `(error: Error) => void` | Called when an error occurs |
|
|
152
|
+
| `onPaymentComplete` | `(result: PaymentResult) => void` | Called when payment succeeds |
|
|
153
|
+
| `onPaymentFailed` | `(result: PaymentResult) => void` | Called when payment fails |
|
|
154
|
+
| `onPaymentPending` | `(result: PaymentResult) => void` | Called when payment is pending |
|
|
155
|
+
| `onPaymentMethodSelected` | `(method: PaymentMethod) => void` | Called when user selects a payment method |
|
|
156
|
+
|
|
157
|
+
### `<PayConductorCheckoutElement />`
|
|
158
|
+
|
|
159
|
+
Renders the payment iframe. Place it inside `<PayConductor>` wherever you want the iframe in your layout.
|
|
160
|
+
|
|
161
|
+
| Prop | Type | Description |
|
|
162
|
+
|------|------|-------------|
|
|
163
|
+
| `height` | `string` | Iframe height (default: `'600px'`) |
|
|
164
|
+
|
|
165
|
+
### `usePayConductor()`
|
|
166
|
+
|
|
167
|
+
Hook that provides frame state.
|
|
168
|
+
|
|
169
|
+
```tsx
|
|
170
|
+
const { isReady, error } = usePayConductor();
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
| Property | Type | Description |
|
|
174
|
+
|----------|------|-------------|
|
|
175
|
+
| `isReady` | `boolean` | Whether the iframe is ready |
|
|
176
|
+
| `error` | `string \| null` | Error message, if any |
|
|
177
|
+
|
|
178
|
+
### `usePayconductorElement()`
|
|
179
|
+
|
|
180
|
+
Hook that provides payment action methods.
|
|
181
|
+
|
|
182
|
+
```tsx
|
|
183
|
+
const {
|
|
184
|
+
init,
|
|
185
|
+
confirmPayment,
|
|
186
|
+
validate,
|
|
187
|
+
reset,
|
|
188
|
+
getSelectedPaymentMethod,
|
|
189
|
+
updateConfig,
|
|
190
|
+
updateorderId,
|
|
191
|
+
update,
|
|
192
|
+
submit,
|
|
193
|
+
} = usePayconductorElement();
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
| Method | Signature | Description |
|
|
197
|
+
|--------|-----------|-------------|
|
|
198
|
+
| `init` | `(config: PayConductorConfig) => Promise<void>` | Sends full config to the iframe |
|
|
199
|
+
| `confirmPayment` | `({ orderId: string }) => Promise<PaymentResult>` | Triggers payment confirmation in iframe |
|
|
200
|
+
| `validate` | `(data: unknown) => Promise<boolean>` | Validates current form data |
|
|
201
|
+
| `reset` | `() => Promise<void>` | Resets the payment form |
|
|
202
|
+
| `getSelectedPaymentMethod` | `() => PaymentMethod \| null` | Returns the payment method selected by user |
|
|
203
|
+
| `updateConfig` | `(config: Partial<PayConductorConfig>) => void` | Updates theme, locale, or paymentMethods |
|
|
204
|
+
| `updateorderId` | `(orderId: string) => void` | Updates the order id in the iframe |
|
|
205
|
+
| `update` | `(options: UpdateOptions) => void` | Updates billing details |
|
|
206
|
+
| `submit` | `() => Promise<SubmitResult>` | Submits the form (validate + format) |
|
|
207
|
+
|
|
208
|
+
## TypeScript
|
|
209
|
+
|
|
210
|
+
```ts
|
|
211
|
+
import type {
|
|
212
|
+
PaymentResult,
|
|
213
|
+
PaymentMethod,
|
|
214
|
+
PayConductorTheme,
|
|
215
|
+
PayConductorConfig,
|
|
216
|
+
PaymentConfirmData,
|
|
217
|
+
PixPaymentData,
|
|
218
|
+
CreditCardPaymentData,
|
|
219
|
+
BankSlipPaymentData,
|
|
220
|
+
NuPayPaymentData,
|
|
221
|
+
PicPayPaymentData,
|
|
222
|
+
CardPaymentData,
|
|
223
|
+
BillingDetails,
|
|
224
|
+
} from '@payconductor/react';
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Payment Flow
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
1. <PayConductor publicKey="pk_xxx"> mounts
|
|
231
|
+
└─ Registers window.PayConductor, stores iframeUrl
|
|
232
|
+
|
|
233
|
+
2. <PayConductorCheckoutElement /> mounts
|
|
234
|
+
└─ Reads iframeUrl, renders the iframe
|
|
235
|
+
|
|
236
|
+
3. iframe loads → fetches payment methods → sends Ready
|
|
237
|
+
SDK receives Ready → sends config (theme, locale, paymentMethods)
|
|
238
|
+
|
|
239
|
+
4. User selects payment method
|
|
240
|
+
└─ onPaymentMethodSelected fires
|
|
241
|
+
└─ getSelectedPaymentMethod() returns the chosen method
|
|
242
|
+
|
|
243
|
+
5. User clicks "Checkout" (your button, outside the iframe)
|
|
244
|
+
└─ @payconductor/sdk creates Draft order → returns orderId
|
|
245
|
+
└─ confirmPayment({ orderId })
|
|
246
|
+
└─ iframe collects form data → POST /orders/:id/confirm
|
|
247
|
+
|
|
248
|
+
6. SDK receives PaymentComplete/Failed/Pending → callbacks fire
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## License
|
|
252
|
+
|
|
253
|
+
MIT
|