veritrans / Veritrans-ios-sdk

The new iOS SDK
MIT License
14 stars 33 forks source link

Credit Card Token Is No Longer Available #565

Closed Rostadhi closed 2 years ago

Rostadhi commented 2 years ago

Good Morning, Can anyone help me with this ?

Screen Shot 2022-04-14 at 13 29 44

THIS IS MY FUNCTION TO GET THE TOKEN

func getTokenMidtrans() { Helper.defaultBlockLoading()

    let fontSource = MidtransUIFontSource(fontNameBold: ConstantsFont.karlaBold, fontNameRegular: ConstantsFont.karlaReg, fontNameLight: ConstantsFont.karlaReg)
    MidtransUIThemeManager.applyCustomThemeColor(.mainBlue, themeFont: fontSource)
    MidtransConfig.shared().setClientKey(ConstantsPaymentMethod.Midtrans.CLIENT_KEY, environment: Constants.isProdServer ? .production : .sandbox, merchantServerURL: ConstantsPaymentMethod.Midtrans.MERCHANT_URL)
    MidtransCreditCardConfig.shared().acquiringBank = Constants.isProdServer ? MTAcquiringBank.mandiri : MTAcquiringBank.BNI

    if selectedPayment.code == ConstantsPaymentMethod.creditCard {
        MidtransMerchantClient.shared().requestTransacation(withCurrentToken: paymentCaptureApi.token) { (response, error) in
            if error != nil {
                if (Constants.isDebug) {
                    if let e = error {
                        print("Request transaction token error: \(e.localizedDescription), Error details: \(e)")
                    }
                }
                Helper.stopLoading()
                self.customSimpleAlertStandard(message: "Pembayaran gagal dilakukan. Silahkan coba kembali", okButtonText: "YA", callBack: {

                })
            } else {
                Helper.stopLoading()

                let vc = MidtransUIPaymentViewController(token: response, andPaymentFeature: .creditCard)
                vc?.paymentDelegate = self
                self.present(vc!, animated: true, completion: nil)
                self.darkStatusBar()
            }
        }

    } else {

        guard let ccObject = ccInfo else { return }
        let card = MidtransCreditCard(number: ccObject.ccNumber, expiryMonth: ccObject.ccExpMonth, expiryYear: ccObject.ccExpYear, cvv: ccObject.ccCVV)
        guard let checkout = checkout else { return }
        let total: Float = checkout.map({ $0.total ?? 0 }).reduce(0, +)
        let tokenRequest = MidtransTokenizeRequest(creditCard: card, grossAmount: NSNumber(value: total))
        tokenRequest?.secure = true

        MidtransClient.shared().generateToken(tokenRequest!) { token, error in
            if error != nil {
                if Constants.isDebug {
                    if let e = error {
                        print("Payment failed error: \(e.localizedDescription),\nError: \(e)")
                    }
                }
                Helper.stopLoading()
                self.customSimpleAlertStandard(message: "Pembayaran gagal dilakukan. Silahkan coba kembali", okButtonText: "YA", callBack: {
                })
            } else {
                //use the card token
                self.paymentCaptureApi.orderNumber = self.checkout.first!.orderNumber ?? ""
                self.paymentCaptureApi.token = token ?? ""
                self.paymentCaptureApi.type = "V2"
                self.paymentCaptureApi.start()
            }
        }

    }

}

Thankyou in advance

uziwuzzy commented 2 years ago

Hi, which sdk did you use, corekit or uikit? which version?

Rostadhi commented 2 years ago

hi, I am using the latest at v1.20.2 and using UIKit.. and i also already implement the MidtransTransactionTokenResponse(). And my current MERCANT_URL = "https://api.midtrans.com/v2/"

Rostadhi commented 2 years ago

This is my code when using MidtransTransactionTokenResponse().

case paymentCaptureApi : Helper.stopLoading() let dict = try! JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:Any] Helper.defaultBlockLoading() self.paymentCaptureApi.token = dict?["token_id"] as? String ?? self.checkout.orderNumber ?? "" midtransTokenResponse.tokenId = self.paymentCaptureApi.token getTokeMidtrans()

uziwuzzy commented 2 years ago

your merchant server url should be your implementation, not midtrans. Here's a sample of what merchant server look like https://github.com/rizdaprasetya/midtrans-mobile-merchant-server--php-sample-