1. 程式人生 > >Android app 第三方微信支付接入

Android app 第三方微信支付接入

微信支付做了好幾遍了,都沒有出現什麼棘手的問題,下面一一為大家分享一下,歡迎吐槽。 
還是老樣子,接入微信的支付要第一步新增微信支付官方的包libammsdk.jar

首先就處理略坑的一個問題,app應用簽名和包名的問題。

商戶在微信開放平臺申請開發應用後,微信開放平臺會生成APP的唯一標識APPID。由於需要保證支付安全,需要在開放平臺繫結商戶應用包名和應用簽名,設定好後才能正常發起支付。設定介面在【開放平臺】中的欄目【管理中心 / 修改應用 / 修改開發資訊】裡面。 
如圖:

這裡寫圖片描述

應用包名:是在APP專案配置檔案AndroidManifest.xml中宣告的package值。 
應用簽名:根據專案的應用包名和編譯使用的keystore,可由簽名工具生成一個32位的md5串,在除錯的手機上安裝簽名工具後,執行可生成應用簽名串,如圖所示,綠色串即應用簽名。簽名工具下載地址

https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk,下載到手機上執行(該手機上必須要有你正式打包簽名的那個apk),如下圖;

這裡寫圖片描述 
然後把該值填寫到微信開放平臺裡的應用簽名那裡。

還有一種獲取簽名的方法; 
在Studio工具裡面開發的話,在Terminal 窗口裡面輸入命令 keytool -v -list -keystore keystore.jks(keystore.jks是你簽名的時候生成的檔案,寫上你自己檔案的名字),執行即可看到。MD5;…一大串數……這樣的一串,這就是簽名。; 
在eclipse工具裡面開發的話。打包的時候會看到的。MD5;…一大串數……(去掉裡面的冒號,大寫改成小寫的填到微信開放平臺裡的應用簽名那裡)

一。配置檔案Androidmanifest

        <activity
            android:name=".teacher.ui.PayActivity"
            android:label="@string/app_name"
            android:exported="true"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"
/>
<category android:name="android.intent.category.DEFAULT"/> <data android:scheme="wx690b9cf56a4ec056"/> //寫入你的appid </intent-filter> </activity>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

二。調起微信支付

PayActivity裡面 
在onCreate裡面初始化IWXAPI

    public static final String APP_ID = "wx690b9cf56a4ec056";
    private IWXAPI api;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_affirm_order);
        api = WXAPIFactory.createWXAPI(AffirmOrderActivity.this, APP_ID, true);
        api.registerApp(APP_ID);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

發起支付程式碼 
你沒有看錯,就只有這麼點程式碼,裡面需要的值你們自己的後臺會返回的,拿過來塞到裡面就好

            PayReq req = new PayReq();
            req.appId = APP_ID;
            req.partnerId = "";
            req.prepayId = "";
            req.packageValue = "";
            req.nonceStr = "";
            req.timeStamp = "";
            req.sign = "";
            api.sendReq(req);
            //以上程式碼就是發起微信支付的方法
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

三。支付結果的處理

這裡面分為兩步
1,微信提供的支付結果的類叫WXPayEntryActivity,
   微信開放平臺有個 不成文的規定(文件裡沒有說明),就是回撥的Activity必須是:你的包名+.wxapi.WXPayEntryActivity.java
  • 1
  • 2
  • 3
  • 4

如下;

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{


    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("支付結果");
        setContentView(tv);
        api = WXAPIFactory.createWXAPI(this, AffirmOrderActivity.APP_ID);
        api.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq req) {
    }

    @Override
    public void onResp(BaseResp resp) {

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("提示");
            builder.setMessage(getString(R.string.pay_result_callback_msg,                                             String.valueOf(resp.errCode)));
            builder.show();
        }
    }
}
//回撥中errCode值
// 0    成功  展示成功頁面
//-1    錯誤  可能的原因:簽名錯誤、未註冊APPID、專案設定APPID不正確、註冊的APPID與設定的不匹配、其他異常等。
//-2    使用者取消    無需處理。發生場景:使用者不支付了,點選取消,返回APP。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
2,在配置檔案Androidmanifest註冊WXPayEntryActivity 
  • 1
  • 2
   <activity
            android:name="(你的包名).wxapi.WXPayEntryActivity"
            android:exported="true"//這一句一定不能少
            android:launchMode="singleTop" />
  • 1
  • 2
  • 3
  • 4

至此app端的微信就搞定了,當然還有後臺去回撥,但是和app沒關係。

轉載: https://blog.csdn.net/u013031725/article/details/51446046

相關推薦

Android app 第三方支付接入詳解

微信支付做了好幾遍了,都沒有出現什麼棘手的問題,下面一一為大家分享一下,歡迎吐槽。 還是老樣子,接入微信的支付要第一步新增微信支付官方的包libammsdk.jar 首先就處理略坑的一個問題,app應用簽名和包名的問題。 商戶在微信開放平臺申請開發應用後,微信開放平臺會生成APP的唯一標識AP

Android app 第三方支付接入

微信支付做了好幾遍了,都沒有出現什麼棘手的問題,下面一一為大家分享一下,歡迎吐槽。 還是老樣子,接入微信的支付要第一步新增微信支付官方的包libammsdk.jar首先就處理略坑的一個問題,app應用簽名和包名的問題。商戶在微信開放平臺申請開發應用後,微信開放平臺會生成APP

Android支付接入

前言:本文主要說明如何在Android專案中接入微信支付,介紹微信支付在專案中的配置,分析微信支付資料與其互動流程,分享個人遇到的坑,以幫助有需要的朋友能更快的在專案中進行微信支付的接入。 正文: 1,開發資質申請: 這個過程在本文中不詳細介紹,總的來說需要企業資質申請微信支

支付接入完全解析之Android客戶端(2)

前段時間在一個App中接入了微信支付功能,想來也穩定執行快一個月了,回頭想想自己接入微信支付時候踩過的坑,決定寫一篇自己當初想要搜尋的文章,文章準備分3篇完成。 第一篇:微信支付前期準備 第二篇:微信支付接入客戶端部分(以Android為例

App支付接入(二)—— hbuilder前端程式碼

4、App接入微信支付,使用hbuilder中的支付 (2)在觸發支付事件中新增程式碼 // 獲取支付通道 plus.payment.getChannels(function(channels) { for (var i in channels) { v

支付接入(Android/IOS(swift)/Java後臺)

除按照微信登入方式接入外還需進行如下操作: 建立 包名.wxapi.WXPayEntryActivity 檔案,保證內容如下(WechartUtils下面會給出): import android.app.Activity; import android.os.Bundle; imp

(手機端) 手把手教你完成App端-支付Android

在開始之前,我想先對各位沒做過微信支付的人吐槽一下,——————–微信支付是我這輩子用過最難用,文件最爛,技術支援最噁心的第三方支付,沒有第二。———–希望沒有嚇到各位,但它真的是太爛了,每年還收300的服務費,真是太差勁了,Demo和文件都是三四年前的,真的是店大欺客。廢話

電商平臺接入第三方支付介面之支付接入訂單系統

邊做邊更新……………… 先接入微信介面: 支付方式:使用者掃描二維碼支付 介面型別:掃碼支付之模式二 先copy一份模式二的業務流程時序圖 業務流程說明: (1)商戶後臺系統根據使用者

PHP app 喚起支付 獲取鏈接【項目實例】

PHP App支付 微信支付 public function weixin_params_data(){ $data = $this->ApiData(); //獲取接口訪問的數據 //$_type = $post_data['type']; if(

PHP APP支付

lencod tran HA AR post方式 創建 elseif verify nsf 前面已經寫了手機APP支付寶支付,今天再把手機APP微信支付補上,前期的準備工作在這裏就不多說了,可以參考微信支付開發文檔,一定要仔細閱讀開發文檔,可以讓你少踩點坑;準備工作完成後就

android app使用登錄接口回調沒有被執行的問題研究

The 應用平臺 cat 分享 github theme 調用 runnable handler 本人開發的一個app使用了sharesdk集成微信登錄功能,在測試的過程中微信授權登錄界面有調用,但是授權後原應用的回調沒有被執行 應用的包名是com.kimi.searche

iOS客戶端的支付接入

對於一個iOS的APP,如果有一些虛擬的商品或者服務需要通過線上支付來收費的話,一般有幾種主流的選擇。 如果是通過APP呼叫支付平臺APP的思路的話,一個是調起支付寶客戶端,一個則是調起微信支付。 實際上,從程式碼的角度,調起支付APP就是把一些關鍵的引數通過一定方式打包成為一個訂單,

PHP實現 APP支付功能

1.我封裝好的一個支付類檔案,多餘的東西都去除掉了,並且把配置引數放到了這個支付類中,只需要修改Weixinpayandroid方法內的幾個引數就可以直接複製使用: class Wxpayandroid { //引數配置 public $config = array( 'appid' =&

小程式、app整合支付

一、微信小程式支付 申請小程式開發者賬號,進行微信認證,獲取appid,開通微信支付,即繫結申請的微信支付商戶號。 1.小程式支付流程: 2.商戶系統和微信支付系統主要互動:       1、小程式內呼叫登入介面,獲取到使用者的openid。       2

PHP支付--接入支付SDK,生成訂單二維碼進行掃碼支付

在PHP開發微信支付中接入支付SDK,生成訂單二維碼進行掃碼支付,實際運用中做出一些整理,以便後期查閱。整體流程如下圖; 微信支付官方流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 1、當我們選擇使用掃碼支付,

iOS 支付接入最新的完整流程

前段時間,公司業務需要接入微信支付,博主就苦心鑽研了2天,終於搞通了,但最近 iOS 9 更新出來後,微信支付,又不可以使用了,具體解決方案我在後面會給出。當然,微信接入也有不少的坑啊 說多了全是淚,

Android高仿/支付寶 掃一掃(弱光檢測掃一掃自動放大功能)

if (rawResult != null) { // Don't log the barcode contents for security. long end = System.currentTimeMillis(); Log.d(T

Android 淺談支付+支付支付

       負責的專案中剛做完微信支付和支付寶支付,也跨過幾道坑,略有收穫,記錄一下。        整合第三方嘛,無非去看開發文件,按照步驟一步步的來。都需要後臺來二次簽名,生成預付單各種值什麼的。       1.微信支付:       微信的開發文件寫的還行,app

java支付接入詳細流程

背景 由於專案是採用Java編寫的,微信包括微信支付大都是PHP相關,於是微信支付官方文件對java的支援就不是很友好,在網上找了很多文章,基本上沒有一篇是真正跑的通的,經過一番整理,先將java接入微信支付詳細流程總結出來以便後續使用。 步驟一 準備階段:已認證微訊號,且

Android應用整合支付

前言 最近的專案用到了移動支付功能,客戶要求同時支援“支付寶”和“微信支付”;個人感覺相對來說支付寶較簡單一些,以前也在Android應用中整合過,因此沒有花費過多時間便完成了。但微信支付我是第一次接觸,著實費了不少功夫,花了幾天才折騰出來,便想著寫篇日誌記一