จัดเก็บและเรียกข้อมูลรายละเอียดบัตรเดบิตและบัตรเครดิตในเบรนทรี

ฉันใช้ Braintree's v2 drop-in ui android ในการชำระเงิน และเซิร์ฟเวอร์แบ็กเอนด์ของฉันอยู่ใน node.js ฉันใช้งานส่วนการชำระเงินสำเร็จแล้ว แต่ตอนนี้ฉันต้องจัดเก็บ card details และหักจำนวนเงินโดยอัตโนมัติจาก debit/credit card หรือ paypal account ที่เก็บไว้นั้นโดยอัตโนมัติ

ฉันกำลังสร้างโทเค็นไคลเอ็นต์และจัดเก็บโทเค็นนั้นไว้ในฐานข้อมูลของฉัน การใช้โทเค็นนั้นฉันกำลังสร้าง nonce จากนั้น ฉันกำลังส่ง nonce ไปยังเซิร์ฟเวอร์แบ็กเอนด์สำหรับ transaction.sale()

นี่คือข้อมูลโค้ดสำหรับส่วนการชำระเงิน

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

OnActivityResult

@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);
        }
    }
}

ใครช่วยบอกขั้นตอนในการจัดเก็บรายละเอียด credit/debit card หรือ paypal account และสร้าง nonce จากที่เก็บไว้ payment-method ได้ไหม


person Kaushik    schedule 27.06.2017    source แหล่งที่มา


คำตอบ (1)


การเปิดเผยแบบเต็ม: ฉันทำงานที่เบรนทรี หากคุณมีคำถามเพิ่มเติม โปรดติดต่อ ฝ่ายสนับสนุน

สิ่งที่คุณต้องการทำให้สำเร็จส่วนใหญ่คือการเปลี่ยนแปลงในฝั่งเซิร์ฟเวอร์ของคุณ หากคุณต้องการจัดเก็บการ์ด คุณสามารถส่งผ่านพารามิเตอร์ตัวเลือก storeInVaultOnSuccess ซึ่งจะบันทึกการ์ดนั้นเมื่อสำเร็จ และสร้างลูกค้าที่เกี่ยวข้องกับการ์ดนั้น มิฉะนั้น คุณยังสามารถส่ง nonce นั้นไปยัง PaymentMethod.Create โทร. หากการโทรเหล่านี้สำเร็จ โทเค็นจะถูกสร้างขึ้นสำหรับการ์ดเหล่านั้นซึ่งคุณจะสามารถนำมาใช้ซ้ำได้ จากข้อเท็จจริงที่คุณระบุว่าคุณต้องการ "หักจำนวนเงินโดยอัตโนมัติ" ฉันคิดว่าคุณอาจต้องการตั้งค่าการสมัครสมาชิกโดยใช้โทเค็นนั้น ในการดำเนินการนี้ คุณจะต้องสร้างแผน ซึ่งเป็นเทมเพลต สำหรับการสมัครสมาชิกของคุณในแผงควบคุม จากนั้น คุณต้องการสร้าง การสมัครสมาชิก โดยใช้โทเค็นที่เก็บไว้ ที่คุณสร้างขึ้น หากคุณต้องการให้การ์ดที่บันทึกไว้เหล่านี้แสดงใน Drop-in เพื่อให้ลูกค้าเลือก คุณจะต้องส่ง customer_id ลงในการเรียก ClientToken.generate สิ่งนี้จะช่วยให้ลูกค้าสามารถเลือกการ์ดที่เก็บไว้จากรายการและนำมาใช้ซ้ำใน Drop-in

person C Joseph    schedule 27.06.2017
comment
ขอบคุณสำหรับคำตอบของคุณ ไม่มีจำนวนเงินที่ชำระเป็นงวดสามารถเปลี่ยนแปลงได้ คุณช่วยอธิบายให้กระจ่างหน่อยได้ไหมว่าฉันต้องสร้างแผนหรือไม่ - person Kaushik; 28.06.2017
comment
ในการสร้างการสมัครสมาชิก คุณต้องสร้างแผน เมื่อคุณสร้างแผน นี่คือที่ที่คุณระบุจำนวนเงิน - person C Joseph; 29.06.2017
comment
ไม่มีการชำระเงินที่เกิดขึ้น มันเป็นแอพจองรถแท็กซี่ เราต้องการหักจำนวนเงินจากผู้โดยสารจากวิธีการชำระเงินที่บันทึกไว้ก่อนหน้านี้ ด้วยเหตุผลดังกล่าว จำนวนเงินจึงจะผันแปร และฉันไม่สามารถสมัครสมาชิกแบบรายเดือน รายปี รายไตรมาส รายวัน ได้ - person Kaushik; 30.06.2017
comment
ดังนั้น ดูเหมือนว่าคุณเพียงต้องการความสามารถในการนำการ์ดที่เก็บไว้กลับมาใช้ใหม่ได้ ในกรณีนี้ สิ่งที่คุณต้องทำเหมือนกับข้างต้น คุณเพียงแต่ปรับพารามิเตอร์จำนวนเงินในการเรียก Transaction.sale() - person C Joseph; 03.07.2017
comment
ฉันใช้ UI แบบกำหนดเอง นั่นเป็นสาเหตุที่ DropInResult.fetchDropInResult ไม่ทำงาน ดังนั้นฉันจะแสดงข้อมูลการ์ดที่เก็บไว้ใน UI ได้อย่างไร ฉันจะสร้างกระทู้ใหม่หรือคุณสามารถให้วิธีแก้ปัญหาที่นี่? - person Kaushik; 03.07.2017
comment
ถูกต้อง คุณไม่ควรใช้ DropiInResult.fetchDropInResult หากคุณวางแผนที่จะใช้ UI แบบกำหนดเอง เพื่อให้คุณสามารถเก็บข้อมูลการ์ดที่เก็บไว้โดยไม่ต้องดรอปอิน สิ่งนี้จะต้องใช้ตรรกะแบบกำหนดเองที่คุณดึงการ์ดฝั่งเซิร์ฟเวอร์ตามลูกค้าเพื่อแสดงฝั่งไคลเอ็นต์ นี่ไม่ใช่วิธีการที่ Braintree จัดเตรียมไว้ให้นอก Drop-in - person C Joseph; 05.07.2017
comment
ใช่ ฉันคิดออกแล้วจึงนำตรรกะที่กำหนดเองไปใช้จากฝั่งเซิร์ฟเวอร์ ขอบคุณสำหรับความช่วยเหลือของคุณ - person Kaushik; 06.07.2017
comment
คุณช่วยอธิบายข้อสงสัยหนึ่งข้อได้ไหม บัตรเดบิต/เครดิตจริงทำงานในโหมดแซนด์บ็อกซ์หรือไม่? - person Kaushik; 01.08.2017
comment
ไม่ คุณไม่ควรใช้การ์ดจริงในแซนด์บ็อกซ์ เฉพาะการ์ดทดสอบ: developers.braintreePayments.com/guides/credit- การ์ด/ - person C Joseph; 01.08.2017