2019-04-03 海外版Stripe接入Google Pay

實測通過示损,可正常支付够傍,并在后臺看到相關(guān)支付數(shù)據(jù)

1.Stripe地址:
https://github.com/stripe/stripe-android/tree/f1d932f55303d02b9116588de1a104d3e80be035
直接參考example這個項目就好才睹,其他的直接忽略亮垫,視項目需求進行添加
2.Google Pay地址:
這里不放上來杆兵,是想強調(diào)如果要接入谷歌支付,最好是只參考一份文檔就好,不要各種參考咆畏,很亂图甜,真的亂
3.谷歌賬號申請:
強調(diào)一點,很多文章各種描述要如何申請鳖眼,如何添加各種七七八八的憑據(jù)等等黑毅。其實,只需要記住以下幾點
-申請谷歌賬戶钦讳,F(xiàn)Q申請矿瘦,自行百度
-申請后,在AS里面創(chuàng)建你的第一個demo愿卒,如上第一點Stripe里面的demo缚去,記住把包名換成你自己的,然后進行上傳到alpha內(nèi)測版琼开,或者Beta內(nèi)測版易结,不要發(fā)布到正式環(huán)境。
-審核通過后(其實也可以嘗試未通過后柜候,跑下Demo搞动,不建議)可以開始跑你的demo了,這個時候點擊Google Pay 到相關(guān)類中渣刷。

        IsReadyToPayRequest request = IsReadyToPayRequest.newBuilder()
                .addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_CARD)
                .addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_TOKENIZED_CARD)
                .build();
        Task<Boolean> task = mPaymentsClient.isReadyToPay(request);
        task.addOnCompleteListener(
                task1 -> {
                    try {
                        boolean result =
                                task1.getResult(ApiException.class);
                        if(result == true) {
                            //show Google as payment option
                            ToastUtils.showShort("success");
                            mGooglePayButton.setEnabled(true);
                        } else {
                            mGooglePayButton.setEnabled(true);
                            ToastUtils.showShort("no success");
                        }
                    } catch (ApiException exception) {
                        ToastUtils.showShort("exception");
                    }
                });
    }

這個方法鹦肿,根據(jù)官方文檔描述,是檢查當前手機是否支持Google Pay辅柴,我這里是換了幾臺手機result都是false箩溃。所以為了可以正常測試支付功能,這里直接繞過判斷碌嘀,默認都是支持支付功能涣旨。這點很重要,很多人卡在這一步股冗,一直在排查為啥都是返回false霹陡,雖然我也不清楚,但是據(jù)說要支持NFC吧
4.假設以上都通過了魁瞪,你點擊mGooglePayButton支付動作的時候穆律,會提示你惠呼,手機谷歌必須安裝的組件导俘,如Google Pay套件,或者提示手機未登錄Google賬號剔蹋,所以繼續(xù)走下一步旅薄。
5.FQ在手機上登錄你的谷歌賬號,如果沒有賬號,麻煩從第一步重新看
6.安裝Google Pay---------------------------這一步很重要
7.安裝后少梁,如果你還沒有登錄洛口,你要登錄你的谷歌賬戶了,然后
===============================================
開始綁卡操作凯沪,要綁定啥卡呢第焰?強烈建議VISA或者JCB的卡,不懂的可以百度下妨马,綁卡后挺举,會扣費,1美金吧烘跺。不清楚后面會不會退湘纵。
8.當你綁卡后,你很開心的滤淳,重新打開你的demo準備去測試支付了梧喷。然并卵,依然不能支付脖咐,點擊后铺敌,在填寫了各種資料后,會彈出提醒:
請求失敗 交易遭拒:付款方式無效屁擅。了解詳情[OR-CCSEH-05]
如果遇到這個問題适刀,也不用百度了。你的付款方式出錯了煤蹭,我這里出現(xiàn)這個問題笔喉,是因為,我用Google pay綁定了同一張卡兩次硝皂,導致生成了兩個付款方式常挚,其中一個還是錯誤的。所以稽物,這個時候,請到Google Pay里面的常規(guī)設置里面贝或,拉到最下面吼过,有個更改默認設置的選項,切換一下咪奖,你的付款資料盗忱,點擊保存。
9.泡杯茶羊赵,重新運行趟佃,okay,付款流程都很暢通了。
10.與服務端進行交互

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case LOAD_PAYMENT_DATA_REQUEST_CODE:
                switch (resultCode) {
                    case Activity.RESULT_OK:
                        PaymentData paymentData = PaymentData.getFromIntent(data);
                        // You can get some data on the user's card, such as the brand and last 4 digits
                        CardInfo info = paymentData.getCardInfo();
                        // You can also pull the user address from the PaymentData object.
                        UserAddress address = paymentData.getShippingAddress();
                        // This is the raw string version of your Stripe token.
                        String rawToken = paymentData.getPaymentMethodToken().getToken();

                        // Now that you have a Stripe token object, charge that by using the id
                        Token stripeToken = Token.fromString(rawToken);
                        if (stripeToken != null) {
                            // This chargeToken function is a call to your own server, which should then connect
                            // to Stripe's API to finish the charge.
                            // chargeToken(stripeToken.getId());
                            chargeToken("100",stripeToken.getId(),"usd");
                           }
                        break;
                    case Activity.RESULT_CANCELED:
                        ToastUtils.showShort("Cancel");

                        break;
                    case AutoResolveHelper.RESULT_ERROR:
                        Status status = AutoResolveHelper.getStatusFromIntent(data);
                        ToastUtils.showShort("Got error " + status.getStatusMessage());
                        // Log the status for debugging
                        // Generally there is no need to show an error to
                        // the user as the Google Payment API will do that
                        break;
                    default:
                        // Do nothing.
                }
                break; // Breaks the case LOAD_PAYMENT_DATA_REQUEST_CODE
            default:
                // Do nothing.
        }
    }

public void chargeToken(String amount,String tokenId,String currency){
        Map<String,String> header = new HashMap<>(2);
        header.put("Authorization","Bearer sk_test_RUHQk5aOliEJkJmyh02wI6Xp");
        header.put("Content-Type","application/x-www-form-urlencoded");
        RetrofitClient.getInstance().create(StripeService.class).charges(header,amount,currency,tokenId)
                .compose(RxUtils.schedulersTransformer()).subscribe(new Observer() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(Object o) {
                    ToastUtils.showShort( "支付成功");
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });
    }


public interface StripeService {


    /**
     * Desc:谷歌支付Stripe調(diào)用
     * <p>
     * 
     * Date: 2019-04-03
     *
     * @param amount 價格
     * @param currency 單位
     * @param source token數(shù)據(jù)
     * @return observable
     */
    @FormUrlEncoded
    @POST("/v1/charges")
    Observable<ResponseBody> charges(@HeaderMap Map<String, String> headers,@Field("amount") String amount, @Field("currency") String currency, @Field("source") String source);
}

11.如上闲昭,調(diào)用成功后罐寨,會執(zhí)行chargeToken這個方法,這個方法需要 跟服務端進行交互序矩,所以需要服務端接受付款的token信息以及付款信息鸯绿。
12.交互的接口可先使用Stripe的,不需要服務端介入簸淀,但是這個方式只適合測試楞慈,正式版本,最好不要使用這種方式啃擦。
13.寫的不會很亂囊蓝,也不會很詳細×铗龋基本滿足當前需求吧

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末聚霜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子珠叔,更是在濱河造成了極大的恐慌蝎宇,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祷安,死亡現(xiàn)場離奇詭異姥芥,居然都是意外死亡,警方通過查閱死者的電腦和手機汇鞭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門凉唐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人霍骄,你說我怎么就攤上這事台囱。” “怎么了读整?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵簿训,是天一觀的道長。 經(jīng)常有香客問我米间,道長强品,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任屈糊,我火速辦了婚禮的榛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘另玖。我一直安慰自己困曙,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布谦去。 她就那樣靜靜地躺著慷丽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鳄哭。 梳的紋絲不亂的頭發(fā)上要糊,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音妆丘,去河邊找鬼锄俄。 笑死,一個胖子當著我的面吹牛勺拣,可吹牛的內(nèi)容都是我干的奶赠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼药有,長吁一口氣:“原來是場噩夢啊……” “哼毅戈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起愤惰,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤苇经,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宦言,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扇单,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年奠旺,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜘澜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡响疚,死狀恐怖兼都,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稽寒,我是刑警寧澤扮碧,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站杏糙,受9級特大地震影響慎王,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宏侍,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一赖淤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谅河,春花似錦咱旱、人聲如沸确丢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲜侥。三九已至,卻和暖如春诸典,著一層夾襖步出監(jiān)牢的瞬間描函,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工狐粱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留舀寓,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓肌蜻,卻偏偏與公主長得像互墓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蒋搜,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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

  • Google Pay 是2018年1月9日轰豆,谷歌發(fā)布的新的支付平臺。Google Pay品牌將在移動應用齿诞、網(wǎng)站酸休、和...
    moralok閱讀 12,282評論 13 4
  • 移動支付的現(xiàn)狀 今年二月份,蘋果在中國大陸隆重推出了其手機支付工具祷杈,Apple Pay斑司。該功能是蘋果攜手中國銀聯(lián),...
    苦食軒主人閱讀 1,060評論 2 2
  • 支付寶簡介文檔 (適用于ydm-java接口與后臺,如有誤入私蕾,但愿也能給您帶來幫助) 此文檔寫于2017年3月僵缺,只...
    隔壁付叔叔閱讀 17,047評論 3 19
  • 對待走路這件事磕潮,我是很嚴肅的。 打從有了愛美意識就沒美過容贝。初中開始長胖自脯,滿臉小雀斑,胸部的發(fā)育讓我充滿羞恥感斤富,整天...
    打漁閱讀 343評論 0 2
  • 我了解我的自卑與怯懦膏潮, 覺得與你不是一個世界。 會在一個你看不見的地方满力, 說著一個人的重重心事焕参。 可我又知道 我們...
    魚蓋閱讀 270評論 0 2