Closed cz9dev closed 2 months ago
Hola. Esto no tiene relación con la lib en cuestión. Por favor no hacer offtopic.
Disculpe pero si tiene relación con su lib, en la parte donde dice kotlin viewModel.creatingPaymentEnzona(listItem)
llama a mi viewmodel que es donde trabajo con tu lib, disculpe si no la estoy utilizando correctamente, te muestro mi función en el viewmodel, de echo te mostrare todo mi view model y disculpe, si le escribo es por que estoy utilizando tu lib
import android.view.View
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.github.jdsdhp.enzona.payment.embedded.Enzona
import com.github.jdsdhp.enzona.payment.embedded.domain.model.CancelStatus
import com.github.jdsdhp.enzona.payment.embedded.domain.model.Item
import com.github.jdsdhp.enzona.payment.embedded.domain.model.Payment
import com.github.jdsdhp.enzona.payment.embedded.domain.model.Token
import com.github.jdsdhp.enzona.payment.embedded.util.ResultValue
import kotlinx.coroutines.launch
class PaymentViewModel: ViewModel() {
var isLoading = MutableLiveData<Int>()
var authenticationR = MutableLiveData<ResultValue<Token>>()
var paymentR = MutableLiveData<ResultValue<Payment>>()
/**
* step 2
* */
fun authentication(){
isLoading.postValue(View.VISIBLE)
viewModelScope.launch {
try {
val authenticationResult: ResultValue<Token> = Enzona.getInstance().authenticate()
authenticationR.postValue(authenticationResult)
isLoading.postValue(View.GONE)
} catch (e: Exception){
isLoading.postValue(View.GONE)
e.printStackTrace()
}
}
}
/**
* step 3
* */
fun creatingPaymentEnzona(listItem: List<Item>){
isLoading.postValue(View.VISIBLE)
viewModelScope.launch {
try {
val paymentResult: ResultValue<Payment> = Enzona.getInstance().createPayment(
discount = 0.0,
shipping = 0.0,
tip = 0.0,
buyerIdentityCode = "", //no se si es esto lo que va
cancelUrl = "https://www.enzona.net/payment/cancel",
currency = "CUP",
description = "",
invoiceNumber = "",
merchantOpId = 1,
returnUrl = "https://www.enzona.net/payment/return",
terminalId = "",
items = listItem
)
paymentR.postValue(paymentResult)
isLoading.postValue(View.GONE)
} catch (e: Exception) {
isLoading.postValue(View.GONE)
e.printStackTrace()
}
}
}
/**
* step 4
* */
fun gettingPaymentDetailsEnzona(){
isLoading.postValue(View.VISIBLE)
viewModelScope.launch {
try {
val paymentResult: ResultValue<Payment> = Enzona.getInstance().getPaymentDetails("transaction_uuid")
paymentR.postValue(paymentResult)
isLoading.postValue(View.GONE)
} catch (e:Exception){
isLoading.postValue(View.GONE)
e.printStackTrace()
}
}
}
/**
* step 4
**/
fun cancelingPaymentEnzona(){
isLoading.postValue(View.VISIBLE)
viewModelScope.launch {
try {
val paymentResult: ResultValue<CancelStatus> = Enzona.getInstance().cancelPayment("transaction_uuid")
isLoading.postValue(View.GONE)
} catch (e:Exception){
isLoading.postValue(View.GONE)
e.printStackTrace()
}
}
}
/**
* step 5
* */
fun completingPaymentEnzona(){
isLoading.postValue(View.VISIBLE)
viewModelScope.launch {
try {
val completeResult: ResultValue<Payment> = Enzona.getInstance().completePayment("transaction_uuid")
paymentR.postValue(completeResult)
isLoading.postValue(View.GONE)
} catch (e:Exception){
isLoading.postValue(View.GONE)
e.printStackTrace()
}
}
}
Una ves que llamo a la función creatingPaymentEnzona que esta llama a la de tu lib no he logrado completar el pago. Una ves mas me disculpo por la pregunta, es que estoy utilizando tu lib y como yo puede que a otros le haya sucedido por temas experiencia u otro. Saludos y en espera de su ayuda
@cz9dev utilizando la app de ejemplo que tiene este repo funciona con tus datos o tampoco?
Deja probar tu ejemplo, de veras no lo intente con tu ejemplo, fui directo por incluir tu lib y tratar de utilizarla
Hola @jdsdhp, disculpa que abra el hilo nuevamente pero bueno es por buen motivo, encontré mi problema y lo comparto para que a otros le sea mas fácil, en ocasiones no vemos detalles y aquí un ejemplo:
fun completingPaymentEnzona(){
isLoading.postValue(View.VISIBLE)
viewModelScope.launch {
try {
val completeResult: ResultValue<Payment> = Enzona.getInstance().completePayment("transaction_uuid")
paymentR.postValue(completeResult)
isLoading.postValue(View.GONE)
} catch (e:Exception){
isLoading.postValue(View.GONE)
e.printStackTrace()
}
}
}
Este era mi función para completar el pago, que debía ser llamada si la función de crear el pago retornaba Success, pues el problema era que en esta linea kt val completeResult: ResultValue<Payment> = Enzona.getInstance().completePayment("transaction_uuid")
nunca entraba transaction_uuid sino un String "transaction_uuid", a continuación el ejemplo correcto de mi función:
fun completingPaymentEnzona(transactionUUID: String){
isLoading.postValue(View.VISIBLE)
viewModelScope.launch {
try {
//val completeResult: ResultValue<Payment> = Enzona.getInstance().completePayment("transaction_uuid")
val completeResult: ResultValue<Payment> = Enzona.getInstance().completePayment(transactionUUID)
completePayment.postValue(completeResult)
isLoading.postValue(View.GONE)
} catch (e:Exception){
isLoading.postValue(View.GONE)
e.printStackTrace()
}
}
}
Espero le sea de ayuda este hilo a otros
Hola, en este ejemplo te muestro algo que he estado haciendo
El tema es que no logro completar el pago, siempre llega fallido a enzona, tienes algún ejemplo o revizando este código ves algo.
Esta es la respuesta que llega a enzona