java服務(wù)器端接入paypal移動支付

前段時(shí)間app要推廣到香港汁雷,那邊人微信支付寶用的少侠讯,所以就接入了paypal支付暑刃,paypal支付比支付寶支付要簡單,前提是你有一個(gè)網(wǎng)速不錯(cuò)的辦公環(huán)境(翻墻看youtube不卡就行)和良好的英文閱讀水平(開發(fā)文檔全英文)
首先訪問開發(fā)者中心溜嗜,選擇【Braintree SDK】開發(fā)的方式架谎,首先是將SDK導(dǎo)入到自己的項(xiàng)目,具體可以看https://developer.paypal.com/docs/accept-payments/express-checkout/ec-braintree-sdk/server-side/java/ 焙压,之后獲取自己的access_token,這個(gè)可以在https://developer.paypal.com/developer/applications/editbtcredLive 中看到涯曲。做好了準(zhǔn)備工作就要開始和前端對接了。
首先前端要喚起paypal支付需要一個(gè)token拨黔,它的獲取方式如下

com.braintreegateway.BraintreeGateway gateway = new BraintreeGateway("access_token$production$cky62c7dfgrt2sn你的token");
String token = gateway.clientToken().generate();

之后把token傳給前端绰沥,建議做這一步的時(shí)候生成一個(gè)本地訂單標(biāo)記為【未支付】狀態(tài)徽曲,并把訂單id一并給前端,以便前端支付成功后通過訂單id定位唯一訂單做后續(xù)操作秃臣。
之后麻煩前端同事去接paypal,在支付完成(不一定支付成功)的回調(diào)函數(shù)中可以獲取到一個(gè)nonce字符串弧哎,獲取到這個(gè)之后再把nonce和剛剛生成的訂單id回傳給后端稚虎,后端需要做的就是驗(yàn)證它是不是支付成功了,驗(yàn)證方法如下

BraintreeGateway gateway = new BraintreeGateway("access_token$production$cky你的access_token");
        TransactionRequest request = new TransactionRequest().paymentMethodNonce(nonce)
                .amount(pp.getMoney())
                .merchantAccountId("HKD")     //貨幣類型
                .orderId(pp.getId())
                .descriptor().name("商戶姓*名").done();
        //商戶名(好像是商戶名序攘,記不清了)有限制的寻拂,姓名之間不要用空格而要用*兜喻,而且是一定要有*號
        //不然可能會報(bào)Company name/DBA section must be either 3赡麦,7 or 12 characters and the produce descriptor can be up to 18,14, or 9 character between for a total descriptor nam of 22 characters錯(cuò)誤
        request.shippingAddress().firstName("Jen")
        .lastName("Smith").company("公司名").streetAddress("1 E 1st St")//company中的內(nèi)容不能有*號,最好是3遂铡、7或12位
        .extendedAddress("Suite 403")
        .locality("Bartlett")
        .region("IL")
        .postalCode("60103")
        .countryCodeAlpha2("US").done();     //一些支付的相關(guān)參數(shù)
        request.options().paypal().customField("PayPalcustom field").description("cmp wonderful product").done();
        request.options().storeInVaultOnSuccess(true).
        done();
        Result<Transaction> saleResult = gateway.transaction().sale(request);
        if (saleResult.isSuccess()) {
            Transaction transaction = saleResult.getTarget();
            System.out.println("Success ID: " + transaction.getId());
            System.out.println("transaction");
            Gson gson = new Gson();
            System.out.println(gson.toJson(transaction));
            //訂單號晶姊,可以通過它在paypal商戶管理的->交易記錄中使用交易號查詢到,方便后期退款方便钾怔,可以存在本地
            String txn_id = transaction.getPayPalDetails().getCaptureId();     
            String name = transaction.getPayPalDetails().getPayerFirstName() + " " + transaction.getPayPalDetails().getPayerLastName();
            String email = transaction.getPayPalDetails().getPayerEmail();
                        //支付成功,進(jìn)行更多操作
        } else {
            //支付失敗的情況
            System.out.println("Message: " + saleResult.getMessage());
            System.out.println("Error:"+saleResult.getErrors().toString());
            Gson gson = new Gson();
            System.out.println("Error-JSON:" + gson.toJson(saleResult.getErrors()));
            msg.setCode(CodeTool.ERR);
            msg.setMessage("支付失敗:" + saleResult.getMessage());
        }

如此就可以即時(shí)的對用戶的支付進(jìn)行一些處理了

其實(shí)還有一種更簡單的方法

連paypal的sdk都不需要愚臀,直接通過支付成功之后paypal服務(wù)器發(fā)給我們服務(wù)器的信息進(jìn)行支付處理的姑裂,那就是通過【異步回調(diào)IPN】的方式進(jìn)行男旗,這是設(shè)置地址,設(shè)置之后用戶支付成功了paypal服務(wù)器就會向設(shè)置的服務(wù)器發(fā)送一個(gè)請求察皇,里面就包含這訂單號等信息让网,這種方式前端也比較簡單,不需要向后臺請求token溃睹,但是這種方式有個(gè)很明顯的缺點(diǎn)就是【不及時(shí)】,遇到同時(shí)支付的人比較多的時(shí)候會有通知被排隊(duì)

被排隊(duì)的樣子

造成支付成功之后用戶不能馬上看到效果(大約延時(shí)10秒)泞辐,所以不建議大家用這種方式

還有就是paypal商戶最好別注冊為中國大陸咐吼,如果你想明白自己的產(chǎn)品是面向大陸以外的地方的話商佑,不然在國外支付的時(shí)候可能會出現(xiàn)【W(wǎng)e're sorry. We can't complete your purchase at this time】錯(cuò)誤

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肌幽,隨后出現(xiàn)的幾起案子抓半,更是在濱河造成了極大的恐慌,老刑警劉巖廊移,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異懂诗,居然都是意外死亡步氏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門芋类,熙熙樓的掌柜王于貴愁眉苦臉地迎上來界阁,“玉大人,你說我怎么就攤上這事贮竟〗咸辏” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵惰拱,是天一觀的道長啊送。 經(jīng)常有香客問我,道長昔逗,這世上最難降的妖魔是什么篷朵? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任声旺,我火速辦了婚禮,結(jié)果婚禮上艾少,老公的妹妹穿的比我還像新娘翼悴。我一直安慰自己幔妨,他們只是感情好误堡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布雏吭。 她就那樣靜靜地躺著,像睡著了一般悉抵。 火紅的嫁衣襯著肌膚如雪摘完。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天列粪,我揣著相機(jī)與錄音谈飒,去河邊找鬼。 笑死费什,一個(gè)胖子當(dāng)著我的面吹牛瓤介,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播氯质,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼祠斧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辕漂?” 一聲冷哼從身側(cè)響起吴超,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鲸阻,失蹤者是張志新(化名)和其女友劉穎跋涣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陈辱,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沛贪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年利赋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隐砸。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖褪那,靈堂內(nèi)的尸體忽然破棺而出式塌,到底是詐尸還是另有隱情,我是刑警寧澤偏窝,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布武学,位于F島的核電站,受9級特大地震影響硼补,放射性物質(zhì)發(fā)生泄漏熏矿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一褪储、第九天 我趴在偏房一處隱蔽的房頂上張望慧域。 院中可真熱鬧,春花似錦辛藻、人聲如沸瑟啃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至屁奏,卻和暖如春岩榆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坟瓢。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工勇边, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人折联。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓粒褒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诚镰。 傳聞我的和親對象是個(gè)殘疾皇子奕坟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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

  • 支付 1.支付寶和銀聯(lián)的支付流程 常用的支付方式有: 1清笨、支付寶支付 https://openhome.alipa...
    丶逐漸閱讀 1,674評論 3 11
  • 8 管理支付和訂單 在上一章中月杉,你創(chuàng)建了一個(gè)包括商品目錄和訂單系統(tǒng)的在線商店。你還學(xué)習(xí)了如何用Celery啟動異步...
    lakerszhy閱讀 2,357評論 1 4
  • 一抠艾、背景介紹 作為一名Android開發(fā)苛萎,從最初的跌跌撞撞到現(xiàn)在小有所悟,這其中經(jīng)歷過的辛酸苦辣也是一種痛并快樂著...
    freecats08閱讀 4,843評論 7 54
  • 佛陀告訴我們?nèi)松强嗟募旌牛缜福希∑肟粒狼谈牵瑦蹌e離,怨憎會脸狸,求不得最仑,五陰熾盛,每個(gè)人都無法逃脫炊甲∧嗤可是看人間,那些美好卿啡,...
    讓春閱讀 238評論 0 0
  • 第一個(gè)字吟吝,嘴巴張開,有大氣往外輸送的輕松感颈娜,不巧碰到第二字剑逃,舌頭抵住浙宜,短促收起。 有戛然而止的美妙蛹磺。 2012年粟瞬,...
    cloriszow閱讀 348評論 10 2