NuPay via Widget
Prerequisites
Before implementing NuPay Wallet payments, ensure you have:
- A generated order token.
- Integrated the DEUNA SDK in your project.
- Reviewed the Payment Widget documentation for your platform.
Payment Method configuration
Display the Payment Widget by passing the Mercado Pago configuration in the paymentMethods parameter.
[
{
"paymentMethod": "wallet",
"processors": [ "nupay" ]
}
]Payment Widget - Web
DeunaSDK.initPaymentWidget({
orderToken: 'YOUR_ORDER_TOKEN',
paymentMethods: [
{
paymentMethod: 'wallet',
processors: ['nupay'],
},
],
callbacks: { ... },
});Payment Widget - iOS
deunaSDK.initPaymentWidget(
orderToken: "<DEUNA_ORDER_TOKEN>",
callbacks: PaymentWidgetCallbacks(
onSuccess: { order in
// Close the DEUNA widget
self.deunaSDK.close {
// Handle successful payment:
// - Navigate to confirmation screen
// - Show success message
// - Update order status
}
},
onError: { error in
if error.type == .paymentError {
// Handle payment errors:
// - Show error message
// - Allow retry
// - Log analytics
}
}
),
paymentMethods: [
[
"paymentMethod": "wallet",
"processors": ["nupay"]
]
]
)import DeunaSDK
import SwiftUI
struct PaymentView: View {
let deunaSDK: DeunaSDK
var body: some View {
VStack {
DeunaWidget(
deunaSDK: deunaSDK,
configuration: PaymentWidgetConfiguration(
orderToken: "YOUR_ORDER_TOKEN",
callbacks: PaymentWidgetCallbacks(
onSuccess: { order in
deunaSDK.dispose {
// Handle post-payment flow
}
},
onError: { error in
if error.type == .paymentError {
// Implement error handling
}
}
),
paymentMethods: [
[
"paymentMethod": "wallet",
"processors": ["mercadopago_wallet"]
]
]
)
)
}
}
}Payment Widget - React Native
import React from 'react';
import { View, Button } from 'react-native';
import { DeunaSDK, DeunaWidget } from '@deuna/react-native-sdk';
// Initialize SDK
const deunaSDK = DeunaSDK.initialize({
publicApiKey: 'YOUR_PUBLIC_API_KEY',
environment: 'sandbox', // or "production"
});
const PaymentScreen = () => {
const launchPayment = () => {
deunaSDK.initPaymentWidget({
orderToken: 'YOUR_ORDER_TOKEN',
paymentMethods: [
{
paymentMethod: 'wallet',
processors: ['nupay'],
},
],
callbacks: {
onSuccess: async (order) => {
await deunaSDK.close();
// Handle successful payment
console.log('Payment successful:', order);
},
onError: async (error) => {
// Handle payment errors
console.error('Payment error:', error);
if (...) {
// Always await the close operation
await deunaSDK.close();
// Handle UI updates
console.log('Payment widget closed due to error.');
}
},
},
});
};
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<DeunaWidget instance={deunaSDK} />
<Button title="Pay with NuPay" onPress={launchPayment} />
</View>
);
};Updated about 6 hours ago