Ti trovi qui:
Esempi di snippet di codice per classi Apex
Utilizzare queste classi Apex per definire i parametri necessari per l'integrazione di WhatsApp Pay.
Di seguito sono riportati alcuni esempi di classi Apex configurate.
- Totale pagamenti
- Voci di pagamento
- Contesto ordine
- Iniziative di pagamento
Totale pagamenti
Questa classe calcola e fornisce l'importo totale pagato dal cliente. Rappresenta il costo finale della transazione dopo che il sistema ha applicato tutti i calcoli.
public with sharing class GetPaymentTotal {
@InvocableMethod
public static List<Outputs> getPaymentTotal() {
Double amount = 0.25;
List<Outputs> result = new List<Outputs>();
RichMessaging.PaymentLineItem total = new RichMessaging.PaymentLineItem('total amount', amount);
total.amountValue = 1.5;
Outputs o1 = new Outputs();
o1.paymentLineItem = total;
result.add(o1);
return result;
}
public class Outputs {
@InvocableVariable
public RichMessaging.PaymentLineItem paymentLineItem;
}
}
Voci di pagamento
Questa classe genera una ricevuta dettagliata per il cliente. Elenca i singoli prodotti o servizi, ad esempio una pizza o una pasta, e i relativi prezzi in modo che l'acquirente possa esaminare il carrello direttamente nella chat di WhatsApp.
public with sharing class GetPaymentLineItems {
@InvocableMethod
public static List<List<RichMessaging.PaymentLineItem>> getLineItems() {
Double amount = 0.25;
Double amount1 = 1.25;
List<List<RichMessaging.PaymentLineItem>> result = new List<List<RichMessaging.PaymentLineItem>>();
RichMessaging.PaymentLineItem pizza = new RichMessaging.PaymentLineItem('pizza', amount);
RichMessaging.PaymentLineItem pasta = new RichMessaging.PaymentLineItem('pasta', amount1);
pizza.statusValue = RichMessaging.PaymentItemStatus.FinalCost;
pasta.statusValue = RichMessaging.PaymentItemStatus.FinalCost;
RichMessaging.OrderItemCommerceAttributes commerceAttrs = new RichMessaging.OrderItemCommerceAttributes();
commerceAttrs.retailerIdValue = 'retailed_id';
commerceAttrs.categoryValue = RichMessaging.OrderItemCategory.Product;
pizza.commerceValue = commerceAttrs;
pasta.commerceValue = commerceAttrs;
List<RichMessaging.PaymentLineItem> options = new List<RichMessaging.PaymentLineItem>{
pizza, pasta
};
result.add(options);
return result;
}
}
Contesto ordine
Questa classe definisce i dettagli di background e la logistica dell'ordine. Funge da "termini e condizioni" ed "etichetta di spedizione" e fornisce i metadati necessari come gli indirizzi di fatturazione e spedizione, l'ora di scadenza del link di pagamento e il tipo di merce venduta.
public with sharing class GetOrderContext {
@InvocableMethod
public static List<OrderContextOutputs> getOrderContext() {
RichMessaging.OrderContext orderContext = new RichMessaging.OrderContext();
RichMessaging.OrderExpiration orderExpiration = new RichMessaging.OrderExpiration();
orderExpiration.description = 'Expiration Description';
orderExpiration.timestamp = 2342534536L;
orderContext.expiration = orderExpiration;
orderContext.catalogId = 'CAT-001';
orderContext.typeValue = RichMessaging.OrderType.DigitalGoods;
orderContext.checkoutBehaviorValue = RichMessaging.PaymentCheckoutBehavior.QuickPay;
orderContext.referenceId = 'REF-001';
List<RichMessaging.OrderBeneficiary> beneficiaries = new List<RichMessaging.OrderBeneficiary>();
RichMessaging.OrderBeneficiary beneficiaryA = new RichMessaging.OrderBeneficiary();
beneficiaryA.name = 'beneficiary Name A';
beneficiaryA.phone = 'beneficiary Phone A';
List<String> addressLinesA = new List<String>();
addressLinesA.add('Addresss Line 1');
addressLinesA.add('Addresss Line 2');
RichMessaging.Address addressA = new RichMessaging.Address();
addressA.addressLines = addressLinesA;
addressA.subLocality = 'subLocality A';
addressA.locality = 'locality A';
addressA.postalCode = '111111';
addressA.subAdministrativeArea = 'subAdministrativeArea A';
addressA.administrativeArea = 'administrativeArea A';
addressA.country = 'India';
addressA.countryCode = 'IN';
beneficiaryA.address = addressA;
RichMessaging.OrderBeneficiary beneficiaryB = new RichMessaging.OrderBeneficiary();
beneficiaryB.name = 'beneficiary Name B';
beneficiaryB.phone = 'beneficiary Phone B';
List<String> addressLinesB = new List<String>();
addressLinesB.add('Addresss Line 1');
addressLinesB.add('Addresss Line 2');
RichMessaging.Address addressB = new RichMessaging.Address();
addressB.addressLines = addressLinesB;
addressB.subLocality = 'subLocality B';
addressB.locality = 'locality B';
addressB.postalCode = '222222';
addressB.subAdministrativeArea = 'subAdministrativeArea B';
addressB.administrativeArea = 'administrativeArea B';
addressB.country = 'India';
addressB.countryCode = 'IN';
beneficiaryB.address = addressB;
beneficiaries.add(beneficiaryA);
beneficiaries.add(beneficiaryB);
orderContext.beneficiaries = beneficiaries;
OrderContextOutputs output = new OrderContextOutputs();
output.orderContext = orderContext;
List<OrderContextOutputs> result = new List<OrderContextOutputs>();
result.add(output);
return result;
}
public class OrderContextOutputs {
@InvocableVariable
public RichMessaging.OrderContext orderContext;
}
}
Iniziative di pagamento
Questa classe configura le modalità di pagamento del cliente. Specifica i metodi di pagamento approvati, ad esempio PIX o Boleto, e fornisce i codici di instradamento e le chiavi account sottostanti necessari per elaborare la transazione.
public class GetPaymentInitiations {
@InvocableMethod
public static List<List<RichMessaging.PaymentInitiation>> getPaymentInitiation() {
List<List<RichMessaging.PaymentInitiation>> result = new List<List<RichMessaging.PaymentInitiation>>();
RichMessaging.PaymentInitiation pixPaymentInitiation = new RichMessaging.PaymentInitiation();
pixPaymentInitiation.modeValue = RichMessaging.PaymentInitiationMode.ExternalPaymentApp;
RichMessaging.PaymentInitiationPix pixValue = new RichMessaging.PaymentInitiationPix();
pixValue.keyValue = '12345678901';
pixValue.keyTypeValue = RichMessaging.PaymentPixKeyType.Cpf;
pixValue.codeValue = '12345678901';
pixPaymentInitiation.pix = pixValue;
RichMessaging.PaymentInitiation boletoPaymentInitiation = new RichMessaging.PaymentInitiation();
boletoPaymentInitiation.modeValue = RichMessaging.PaymentInitiationMode.ExternalPaymentApp;
RichMessaging.PaymentInitiationBoleto boletoValue = new RichMessaging.PaymentInitiationBoleto();
boletoValue.digitableLine = '03399026944140000002628346101018898510000008848';
boletoPaymentInitiation.boleto = boletoValue;
List<RichMessaging.PaymentInitiation> options = new List<RichMessaging.PaymentInitiation>{
pixPaymentInitiation, boletoPaymentInitiation
};
result.add(options);
return result;
}
}

