Simpan dan ambil detail kartu debit dan kredit di Braintree

Saya menggunakan Braintree's v2 drop-in ui Android untuk pembayaran dan server backend saya ada di node.js. Saya telah berhasil menerapkan bagian pembayaran tetapi sekarang saya perlu menyimpan card details dan mengurangi jumlah secara otomatis dari debit/credit card atau paypal account yang disimpan.

Saya membuat token klien dan menyimpan token itu di database saya. Dengan menggunakan token itu saya menghasilkan nonce. Lalu saya mengirim nonce ke server backend untuk transaction.sale().

Berikut cuplikan kode untuk bagian pembayaran

if (!TextUtils.isEmpty(braintreeClientToken)) {
    DropInRequest dropInRequest = new DropInRequest()
                    .clientToken(braintreeClientToken);
    startActivityForResult(dropInRequest.getIntent(this), REQUEST_CODE);
}

Hasil OnActivity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE) {
        if (resultCode == Activity.RESULT_OK) {
            DropInResult result = data.getParcelableExtra(DropInResult.EXTRA_DROP_IN_RESULT);
            PaymentMethodNonce paymentMethodNonce = result.getPaymentMethodNonce();
            String nonce = "";
            if (paymentMethodNonce != null)
                nonce = paymentMethodNonce.getNonce();
            // use the result to update your UI and send the payment method nonce to your server
            if (!TextUtils.isEmpty(nonce)) {
                NonceRequest obj = new NonceRequest("ANDROID", "1",
                            "DRIVER-SAVE-PAYMENT", "1", nonce);
                Call<NonceResponse> call = RestService.getInstance().restInterface.sendNonceToServer(userId, userToken, obj);
                    call.enqueue(new Callback<NonceResponse>() {
                    @Override
                    public void onResponse(Call<NonceResponse> call, Response<NonceResponse> response) {

                    }

                    @Override
                    public void onFailure(Call<NonceResponse> call, Throwable t) {

                    }
                });
            }
        } else if (resultCode == Activity.RESULT_CANCELED) {
            // the user canceled
        } else {
            // handle errors here, an exception may be available in
            Exception error = (Exception) data.getSerializableExtra(DropInActivity.EXTRA_ERROR);
        }
    }
}

Adakah yang bisa memberi tahu saya langkah-langkah untuk menyimpan detail credit/debit card atau paypal account dan menghasilkan nonce dari payment-method yang disimpan


person Kaushik    schedule 27.06.2017    source sumber


Jawaban (1)


Pengungkapan penuh: Saya bekerja di Braintree. Jika Anda memiliki pertanyaan lebih lanjut, silakan menghubungi dukungan

Sebagian besar hal yang ingin Anda capai adalah perubahan di sisi server Anda. Jika Anda ingin menyimpan kartu, Anda dapat memasukkan parameter opsi storeInVaultOnSuccess, yang akan menyimpan kartu tersebut pada kesuksesan dan membuat pelanggan terkait dengan kartu tersebut. Jika tidak, Anda juga dapat meneruskan nonce tersebut ke PaymentMethod.Create panggilan. Jika panggilan ini berhasil, token akan dibuat untuk kartu tersebut yang kemudian dapat Anda gunakan kembali. Berdasarkan fakta yang Anda nyatakan ingin "mengurangi jumlah secara otomatis", saya rasa Anda mungkin ingin mengatur langganan menggunakan token itu. Untuk melakukan ini, Anda perlu membuat rencana, yang merupakan template untuk langganan Anda di panel kontrol. Maka Anda ingin benar-benar membuat langganan menggunakan token yang disimpan yang telah Anda buat. Jika Anda ingin kartu yang disimpan ini muncul di Drop-in untuk dipilih pelanggan, Anda dapat meneruskan customer_id ke dalam panggilan ClientToken.generate. Ini akan memungkinkan pelanggan untuk memilih kartu yang disimpan dari daftar mereka dan menggunakannya kembali di Drop-in.

person C Joseph    schedule 27.06.2017
comment
Terima kasih atas jawaban Anda, tidak ada jumlah pembayaran berulang yang dapat bervariasi, bisakah Anda menjelaskan satu keraguan apakah saya perlu membuat rencana? - person Kaushik; 28.06.2017
comment
Untuk membuat langganan, Anda perlu membuat rencana. Saat Anda membuat rencana, di sinilah Anda menentukan jumlahnya. - person C Joseph; 29.06.2017
comment
Tidak ada pembayaran berulang. Ini adalah aplikasi pemesanan taksi. Di sana kami ingin mengurangi jumlah penumpang dari metode pembayaran yang disimpan sebelumnya. Oleh karena itu, jumlahnya akan bervariasi dan saya tidak dapat menerapkan langganan seperti bulanan, tahunan, triwulan, harian - person Kaushik; 30.06.2017
comment
Oleh karena itu, sepertinya Anda hanya menginginkan kemampuan untuk menggunakan kembali kartu berkubah. Dalam hal ini, yang perlu Anda lakukan sama seperti di atas, Anda cukup menyesuaikan parameter jumlah di panggilan transaksi.penjualan(). - person C Joseph; 03.07.2017
comment
Saya menggunakan ui khusus itu sebabnya DropInResult.fetchDropInResult tidak berfungsi jadi bagaimana saya bisa menampilkan info kartu yang tersimpan di ui. Apakah saya akan membuat thread baru atau bisa kasih solusinya disini? - person Kaushik; 03.07.2017
comment
Benar, Anda tidak boleh menggunakan DropiInResult.fetchDropInResult jika Anda berencana menggunakan UI khusus. Agar Anda dapat menyimpan informasi kartu yang disimpan tanpa Drop-in, hal ini memerlukan logika khusus tempat Anda mengambil kartu di sisi server berdasarkan pelanggan untuk menampilkannya di sisi klien. Ini bukan metode yang disediakan Braintree di luar Drop-in. - person C Joseph; 05.07.2017
comment
Ya, saya menemukan jawabannya dan menerapkan logika khusus dari sisi server, terima kasih atas bantuan Anda. - person Kaushik; 06.07.2017
comment
bisakah Anda menjelaskan satu keraguan. Apakah kartu debit/kredit asli berfungsi dalam mode sandbox? - person Kaushik; 01.08.2017
comment
tidak, Anda tidak boleh menggunakan kartu asli di kotak pasir. hanya kartu pengujian: developers.braintreePayments.com/guides/credit- kartu/ - person C Joseph; 01.08.2017