1. 程式人生 > >Android 微信 支付寶支付,2行程式碼實現支付

Android 微信 支付寶支付,2行程式碼實現支付

作者簡介

微信公眾號(高質量文章推送):走向全棧工程師
作者:陳博易
宣告:本文是個人原創,未經允許請勿轉載
商業合作請在微信公眾號回覆:聯絡方式


支付寶支付
微信支付

前言

  1. 現在的多數App都離不開整合阿里支付寶支付和微信支付
  2. 準備寫兩篇關於阿里支付寶支付和微信支付的教程,讓大家可以快速整合支付
  3. 微信支付是本篇的重點

環境以及工具

  1. Android專案:AndroidStudio3.0
  2. Java專案:IntelliJ IDEA 2017.2.3

整體步驟

  1. 微信支付申請流程
  2. Android端環境整合
  3. Android端程式碼展示
  4. Java後端程式碼展示

詳細步驟

核心步驟解讀

1. 微信支付申請流程

商戶在微信開放平臺申請開發應用後,微信開放平臺會生成APP的唯一標識APPID。由於需要保證支付安全,需要在開放平臺繫結商戶應用包名和應用簽名,設定好後才能正常發起支付。

2. Android端環境整合

將微信提供給我們的,wxapi的檔案放到我們的主包下面(重要的事情說三次)

3. Android端程式碼展示
  1. 前端app支付回撥核心程式碼

  1. 前端app支付核心程式碼

4. Java後端程式碼展示

微信商戶的基本引數

這是java後端做的事情,大概看看就好,我們前端就發起支付就好

App支付成功以後,java後端會收到非同步回撥,也就是對資料庫進行操作

image.png

/**
 * Create by: 陳博易
 * Date: 2017/12/1
 * time:  16:01
 * Email: [email protected]
 * 微信公眾號:走向全棧工程師
 * <p>
 * 微信支付 支付寶支付輔助類
 */
public class PaymentHelper {
    private static final int SDK_PAY_FLAG = 1;

    /**
     * @param activity        呼叫的activity
     * @param
weChatPayEntity 微信呼叫引數 */
public void startWeChatPay(Activity activity, WxChatPayEntity weChatPayEntity) { if (activity == null || weChatPayEntity == null) { return; } if (!WxPayConfig.APP_ID.equals(weChatPayEntity.getAppid())) { return; } IWXAPI wxapi = WXAPIFactory.createWXAPI(activity, WxPayConfig.APP_ID, true); // 將該app註冊到微信 wxapi.registerApp(WxPayConfig.APP_ID); PayReq req = new PayReq(); req.appId = WxPayConfig.APP_ID; req.partnerId = weChatPayEntity.getPartnerid(); req.prepayId = weChatPayEntity.getPrepayid(); req.nonceStr = weChatPayEntity.getNoncestr(); req.timeStamp = weChatPayEntity.getTimeStamp(); req.packageValue = weChatPayEntity.getPackageValue();// "Sign=" + req.sign = weChatPayEntity.getSign(); wxapi.sendReq(req); } /** * @param activity 呼叫的activity * @param alipayEntity 支付寶引數 */ public void startAliPay(final Activity activity, final AlipayEntity alipayEntity) { if (activity == null || alipayEntity == null) { return; } Runnable payRunnable = new Runnable() { @Override public void run() { // 構造PayTask 物件 PayTask alipay = new PayTask(activity); // 呼叫支付介面,獲取支付結果 String result = alipay.pay(alipayEntity.getPayInfo(), true); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }; // 必須非同步呼叫 Thread payThread = new Thread(payRunnable); payThread.start(); } @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { @SuppressWarnings("unused") public void handleMessage(Message msg) { switch (msg.what) { case SDK_PAY_FLAG: { PayResult payResult = new PayResult((String) msg.obj); /** * 同步返回的結果必須放置到服務端進行驗證(驗證的規則請看https://doc.open.alipay.com/doc2/ * detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665& * docType=1) 建議商戶依賴非同步通知 */ String resultInfo = payResult.getResult();// 同步返回需要驗證的資訊 String resultStatus = payResult.getResultStatus(); // 判斷resultStatus 為“9000”則代表支付成功,具體狀態碼代表含義可參考介面文件 if (TextUtils.equals(resultStatus, "9000")) { Toast.makeText(MyApplication.getContext(), "支付成功", Toast.LENGTH_SHORT).show(); } else { // 判斷resultStatus 為非"9000"則代表可能支付失敗 // "8000"代表支付結果因為支付渠道原因或者系統原因還在等待支付結果確認,最終交易是否成功以服務端非同步通知為準(小概率狀態) if (TextUtils.equals(resultStatus, "8000")) { Toast.makeText(MyApplication.getContext(), "支付結果確認中", Toast.LENGTH_SHORT).show(); } else if (TextUtils.equals(resultStatus, "6001")) { Toast.makeText(MyApplication.getContext(), "使用者取消支付", Toast.LENGTH_SHORT).show(); } else { // 其他值就可以判斷為支付失敗,包括使用者主動取消支付,或者系統返回的錯誤 Toast.makeText(MyApplication.getContext(), "支付失敗", Toast.LENGTH_SHORT).show(); } } break; } default: break; } } }; }

總結

  1. 微信開放平臺提供的demo,有一些坑已經幫大家清除了,匯入進去就可以支付了,就是程式碼不優雅
  2. 個人封裝的demo(微信支付和支付寶支付案例都整合在一起了,直接複製黏貼)
  3. 請大家多關注關注我。

  4. 匯入小編專案的姿勢要對!

個人相關教程

請關注我(高質量文章推送)

原始碼地址———關注微信公眾號,回覆:微信支付寶支付


長按二維碼“識別”關注或者掃一掃

相關推薦

Android 支付支付2程式碼實現支付

作者簡介 微信公眾號(高質量文章推送):走向全棧工程師 作者:陳博易 宣告:本文是個人原創,未經允許請勿轉載 商業合作請在微信公眾號回覆:聯絡方式 前言 現在的多數App都離不開整合阿里支付寶支付和微信支付

Android開放平臺SDK demo除錯

此文轉載,最後一段文字,沒看懂什麼意思,有意的大俠們請指教啊,跪拜……………… 最近一直在呼叫微信的API,卻發現一直呼叫不成功,糾結了好久,各方面找教程,找官方,官方里的文件也只是寫得很模糊,說是按三步走。 1、申請App_ID 2、填寫包名3、 獲取程式簽名的

小程式與內嵌網頁互動實現支付功能

上個月,小程式開放了新功能,支援內嵌網頁,所以我就開始了小程式內嵌網頁之路,之前我只是個小安卓。 內嵌網頁中可使用JSSDK 1.3.0提供的介面,可坑就來了,居然不支援支付介面的呼叫,經過一番研究,總算打通了兩邊的互動。 大概流程 1、先說明涉及到的檔案,下面會

Android 分享與QQ分享功能(原生實現

微信分享與QQ分享功能現在都挺常見的,可以根據一些第三方社會化分功能快速實現,不過多多少少都不怎麼純淨,最好都是自己看官方文件來實現就最好了~一、微信分享微信分享功能需要先在微信開放平臺註冊應用並獲取APP ID,就可以獲得微信提供的基本介面了APP ID是對應唯一的應用包名

利用redis實現位置搜尋功能(類似:附近的人根據座標來實現

利用redis實現位置搜尋功能(類似:微信附近的人,根據座標來實現,測試可行,沒實際用到) 1. 利用redis的geo功能 主要功能有: geoadd key longitude latitude member … 新增成員經緯度 # 添加了

小程式 action-sheet元件 + 分享程式碼實現

       這幾天遇到一個問題,就是使用微信小程式自帶的元件wx.showActionSheet(object),並且在這裡新增分享按鈕,但查看了小程式API文件後發現,分享功能呼叫的onShareAppMessage(options) 函式,設定該頁面的轉發資訊。

免註冊公眾號的三種推送訊息服務的C#程式碼實現

【溫馨提示】 本文共1678字,3張圖。預計閱讀時間需要5分鐘。   有時候我們需要監控一些網路上的變化,但是每次去重新整理網頁卻又很麻煩,而且大部分重新整理的時候網頁並沒有更新。那麼有沒有一個工具,可以監控網頁變化,並將變化的結果推送到手機微信上呢? 這裡有很多應用場景,比如前一段時間很

python打造特別火的一個小遊戲16程式碼實現3D撞球小遊戲!

以下是製作上面炫酷動畫所需的全部程式碼:         我們需要三組剛體(當您在Blender的物件上開啟一個剛體的屬性時,Blender將模擬與其它剛體的碰撞): 1.平面 第2行程式碼建立了一個簡單的平面,立方體將放置在

iOS 修改頭像程式碼實現從相簿選擇照片

我的GitHub:點選開啟連結 SelectPhotoManager.h #import <Foundation/Foundation.h> #import <UIKi

年關開啟免單支付對決支付紅包多少都是福利啊

微信活動 支付寶活動 微信免單支付 相信大家和采寶寶一樣,掃支付寶紅包快4個月,掃得不亦樂乎,很多商家也會在消費者付款前,推薦先掃個支付寶紅包抵用現金。這讓它們怎麽坐得住?於是,微信支付出手了,在即將上線“小程序立減金”(超鏈1月19日的一欄內容)之前,先推出了“周末搖搖樂”。

android 支付body為中文字元簽名錯誤

微信支付訂單生產方法: /** * 根據您的訂單資訊 生成 微信產品支付訂單資訊 */ private String createWeChatOrder() { StringBuffer xml = new StringBuffer();

Android支付通知回撥方法

import java.io.IOException; import java.io.StringReader; import java.util.HashMap; import java.util.List; import java.util.Map; import j

關於android支付支付支付的整合

最近專案中要整合微信和支付寶支付 在沒有接觸支付之間 覺得還是比較難的 但真正去實現的時候還是比較簡單的 就是有不少坑要去踩過之後才知道 支付寶支付 : 對於支付寶支付 我個人理解還是比較簡單的 https://open.alipay.com/platform/home.h

Android支付支付接入總結

public class AliPay { /*支付寶支付結果碼*/ private static final String PAY_OK = "9000";// 支付成功 private static final String PAY_WAIT_CONFIRM = "8

Android 支付_掃碼支付我來幫你填坑!

0.概述: 本文講的是微信支付中的掃碼支付的模式二:該模式下,二維碼連結由微信支付返回給商戶,商戶將得到的二維碼連結轉成二維碼圖片,使用者通過掃碼支付,此方式下生成的二維碼2小時內有效。 微信支付官網地址:https://pay.weixin.qq.com/

Android 支付 程式碼混淆後打包導致不能支付的原因

程式碼混淆: -libraryjars libs/libammsdk.jar -keep class com.tencent.** { *;} 如果您的專案中也引用了dom4j.jar,那麼就新增上下

Android 支付支付支付 快速接入

先放上接入兩個支付平臺的官方文件地址 一、支付寶支付 匯入開發資源 在商戶應用工程的AndroidManifest.xml檔案裡面新增宣告: <activity android:name="com.ali

Android /支付 h5調原生支付

記錄一下Android的支付h5調原生支付 流程是客戶端通過後臺的介面生成支付訂單,後臺生成訂單後會返回一個h5的支付url import android.content.Context import android.content.Intent import andro

Android支付開發 回退鍵 介面閃動問題處理。

@Override public void onResp(BaseResp resp) { Log.d("+++++++++++++++++++","微信支付回撥");

Android支付支付支付快速接入

一、支付寶接入1、建立應用並獲取APPID開發者中心中建立您的應用,會為您生成應用唯一標識(APPID),並且可以申請開通開放產品使用許可權,通過APPID您的應用才能呼叫開放產品的介面能力。在“我的應用”中按下圖方式檢視APPID。2、新增支付功能3、簽約(涉及到收費)4、