Android集成兩種國外支付(braintree和stripe)

前言:

項(xiàng)目目前給澳洲做一款點(diǎn)餐的app,之前集成的是braintree支付猖闪,由于需求方的原因(據(jù)說是支付牌照沒申請(qǐng)下來,然后不得已孵户,支付現(xiàn)在改成了stripe支付)萧朝。。夏哭。
雖然支付官網(wǎng)都有官方文檔检柬,但是對(duì)于國內(nèi)的程序猿來說,看起來還是很痛苦的,畢竟都是英文文檔何址,而且有時(shí)候只是去簡單的去集成支付里逆,沒必要去仔細(xì)的研究他的文檔甚颂,還耽誤大把的時(shí)間摔认。
其實(shí)支付的集成很簡單的,下面直接貼代碼圾另,直接CV即可偎血。

一诸衔、集成braintree

    implementation 'com.braintreepayments.api:braintree:2.+'
    implementation 'com.braintreepayments.api:drop-in:2.+'
               /**
                 * 請(qǐng)求braintree_token
                 */
                HttpUtilsOnData.post(你需要請(qǐng)求的獲取braintree_token接口,new SimpleArrayCallback(context) {
                    @Override
                    public void success(JSONArray json){
                                /**
                                  * 省略解析數(shù)據(jù)的代碼
                                  * 解析你的數(shù)據(jù),拿到mPayment_method_nonce
                                 */
                       
                            //得到mPayment_method_nonce后調(diào)用下面代碼即可颇玷,然后在onActivityResult回調(diào)
                            PaymentRequest paymentRequest = new PaymentRequest().clientToken(mPayment_method_nonce);
                            Log.d("nonce1===" , mPayment_method_nonce);
                            startActivityForResult(paymentRequest.getIntent(context), REQUEST_BRAINTREE);
                    }

                    @Override
                    public void fail() {

                    }
                });
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_BRAINTREE) {
            if (resultCode == Activity.RESULT_OK) {
                /**
                 * 支付成功的回調(diào)
                 */
                PaymentMethodNonce paymentMethodNonce = data.getParcelableExtra(BraintreePaymentActivity.EXTRA_PAYMENT_METHOD_NONCE);
                String nonce = paymentMethodNonce.getNonce();

                map_order.put("balance_amount", "0");
                map_order.put("nonce", mPayment_method_nonce);

                /**
                 * 3.根據(jù)前面的參數(shù)去支付
                 */

                HttpUtilsOnData.post1(你的支付接口, new SimpleCallback(context) {

                    @Override
                    public void success(JSONObject json) {
                       //走到這里笨农,說明支付成功了
                    }

                    @Override
                    public void fail() {

                    }
                });
            }
        }
    }

二、集成stripe

implementation 'com.stripe:stripe-android:9.0.0'

方式一:

//獲取輸入框銀行卡信息
        Card card = new Card("4242424242424242", 12, 2023, "123");
//驗(yàn)證是否錯(cuò)誤
        if (card.validateCard()) {
            //創(chuàng)建stripe對(duì)象
            Stripe stripe = new Stripe(context, "你的秘鑰");
            stripe.createToken(
                    card,
                    new TokenCallback() {
                        public void onSuccess(Token token) {
                            // Send token to your server
//成功創(chuàng)建令牌
                            //發(fā)起支付的請(qǐng)求接口
                            Log.d("6666666", "123456");
                            Log.d("6666666", token+"");
                            String  bankAccount = token.getId();
                            Log.d("6666666", bankAccount);
                        }

                        public void onError(Exception error) {
                            // Show localized error message
                            Log.d("6666666", "12345678");
                        }
                    }
            );
        } else if (!card.validateNumber()) {
            ToastUtil.show(context,"The card number that you entered is invalid");
        } else if (!card.validateExpiryDate()) {
            ToastUtil.show(context, "The expiration date that you entered is invalid");
        } else if (!card.validateCVC()) {
            ToastUtil.show(context, "The CVC code that you entered is invalid");
        } else {
            ToastUtil.show(context, "The card details that you entered are invalid");
        }

方式二:

    //stripe的控件提供了直接獲取輸入的信息
    //獲取輸入框銀行卡信息
        CardInputWidget cardInputWidget = (CardInputWidget) findViewById(R.id.card_input_widget);
        Card cardToSave = cardInputWidget.getCard();
        if (cardToSave == null) {
            //驗(yàn)證錯(cuò)誤
          } else {
            //創(chuàng)建stripe對(duì)象
            Stripe stripe = new Stripe(mContext, "pk_text_xxxxxxxxx");
            stripe.createToken(
                    cardToSave,
                    new TokenCallback() {
                        public void onSuccess(Token token) {
                            //成功創(chuàng)建令牌 
                            //發(fā)起支付的請(qǐng)求接口
                        }
 
                        public void onError(Exception error) {
 
                        }
                    }
            );
        }
            <com.stripe.android.view.CardInputWidget
                android:id="@+id/card_input_widget"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帖渠,一起剝皮案震驚了整個(gè)濱河市谒亦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌空郊,老刑警劉巖份招,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異狞甚,居然都是意外死亡锁摔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門入愧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鄙漏,“玉大人,你說我怎么就攤上這事棺蛛≌觯” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵旁赊,是天一觀的道長桦踊。 經(jīng)常有香客問我,道長终畅,這世上最難降的妖魔是什么籍胯? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮离福,結(jié)果婚禮上杖狼,老公的妹妹穿的比我還像新娘。我一直安慰自己妖爷,他們只是感情好蝶涩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般绿聘。 火紅的嫁衣襯著肌膚如雪嗽上。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天熄攘,我揣著相機(jī)與錄音兽愤,去河邊找鬼。 笑死挪圾,一個(gè)胖子當(dāng)著我的面吹牛浅萧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哲思,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼惯殊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了也殖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤务热,失蹤者是張志新(化名)和其女友劉穎忆嗜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崎岂,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捆毫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冲甘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绩卤。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖江醇,靈堂內(nèi)的尸體忽然破棺而出濒憋,到底是詐尸還是另有隱情,我是刑警寧澤陶夜,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布凛驮,位于F島的核電站,受9級(jí)特大地震影響条辟,放射性物質(zhì)發(fā)生泄漏黔夭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一羽嫡、第九天 我趴在偏房一處隱蔽的房頂上張望本姥。 院中可真熱鬧,春花似錦杭棵、人聲如沸婚惫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辰妙。三九已至鹰祸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間密浑,已是汗流浹背蛙婴。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尔破,地道東北人街图。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像懒构,于是被迫代替她去往敵國和親餐济。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • laravel 會(huì)計(jì)員(Cashier) 簡介 Laravel Cashier 提供了一種表現(xiàn)流利的接口來支持 S...
    Dearmadman閱讀 1,477評(píng)論 0 5
  • 可選平臺(tái) PayPal Braintree Stripe Skrill Skrill Skrill 的規(guī)模和團(tuán)隊(duì)實(shí)...
    沒故事的卓同學(xué)閱讀 6,427評(píng)論 0 17
  • 前文 前段時(shí)間在空暇時(shí)間寫了GoogleMaps的使用指南胆剧,剛寫完的一段時(shí)間絮姆,發(fā)現(xiàn)并沒有人閱讀,所以不太想寫第二篇...
    ZHANGKAILUN_閱讀 4,834評(píng)論 16 9
  • 文|楊春曉 不久前秩霍,有人送給她了一個(gè)Dior的口紅篙悯,我看了一下覺得是假的,和我以前送她的外觀差別很大铃绒,而且標(biāo)志的鍍...
    楊春曉閱讀 185評(píng)論 0 0
  • 今天是九九重陽節(jié)鸽照,其實(shí)并沒有太多的感慨,只是特別想念我的奶奶颠悬、我的爺爺和我的外婆矮燎,他們都已經(jīng)與世長眠,想著...
    小余的江湖閱讀 208評(píng)論 0 0