實戰:使用聚易付移動支付服務(MixpayAndroidSDK)快速集成移動支付功能

1、聚易付移動支付服務(MixpayAndroidSDK)簡介

聚易付移動支付服務(MixpayAndroidSDK)的目標就是使開發者很輕鬆地在本身的APP中集成支付功能,從而節約時間和精力用在自己的業務當中。java

只需15分鐘,就可讓你的APP具備支付寶支付、銀行卡支付、手機充值卡支付和遊戲點卡支付。解決了以前開發者在集成支付時遇到的各類問題,好比:android

  • 與支付平臺簽約時間過長
  • 支付平臺文檔坑太多,導到開發過程很不暢
  • 支付平臺技術支持不足,聯調困難
  • 每個支付通道都要折騰一翻

MixpayAndroidSDK致力於幫助開發者解決以上問題。git

如下經過一個實際項目來講明如何使用MixpayAndroidSDK。github

筆者的開發環境:segmentfault

  • Macbook Pro 10.9.4
  • Android Studio v0.8.2
  • Gradle 1.10
  • JDK 1.7

2、註冊、添加APP

2.1 註冊

註冊地址:https://m.mixpay.cn/registerapi

註冊成功以後會收到Mixpay發出的一封確認郵件,點擊其中的確認連接即完成註冊過程。服務器

2.2 添加APP

登陸到商戶後臺,經過菜單導航到 應用->新建應用 頁面app

https://m.mixpay.cn/application/addmaven

在表單中填寫應用的相關信息,保存便可。以下圖所示:ide

添加APP

其中的"通知地址"是指,Mixpay在完成一筆支付以後,經過這個地址通知給您,您在接收到進行相應的處理,並返回一個字符串'success'以表示接收成功,整個支付過程也就完成了。

APP保存以後,Mixpay會位APP分配一個惟一標識,即APP_KEY,能夠在 APP詳情頁面中看到:

APP詳情

2.3 添加密鑰

操做地址:https://m.mixpay.cn/key/add
密鑰用來對訂單信息進行加密。Mixpay支付兩種加密方式,RSA和MD5。
使用RSA,按頁面上給出的提示操做便可。
使用MD5,直接保存便可。在密鑰詳細信息中會看到secretKey。

在這裏選擇MD5加密方式:

添加密鑰

key信息:

密鑰詳情

2.4 將密鑰綁定至APP

操做地址:https://m.mixpay.cn/key
在key的右邊點擊"加載到應用",在打開的頁面中選擇剛纔新建的APP便可。

3、APP代碼集成

3.1 添加MixpayAndroidSDK的依賴

能夠經過gradle、maven、jar包三種方式添加依賴,開發者能夠根據自身狀況任選。這裏選擇Gradle,在build.gradle中添加如下配置:

apply plugin: 'maven'
repositories {
    maven {
        url 'https://maven.mixpay.cn'
    }
}
...
dependencies {
    compile ('cn.mixpay:android-sdk:1.0.+'){
        exclude group: 'com.google.android', module: 'android'
    }
}

3.2 初始化訂單

引入MixpayAdroidSDK後,便可經過cn.mixpay.Order來表示本身的訂單:

import cn.mixpay.sdk.*;
...

public static final String MD5_SECRET_KEY = "568bd43af00128ee4d1bce2679*****";
private static final String APP_KEY = "60186724345*****";
Order myOrder = null;

//訂單信息
String orderId = "order_id_001";
String userId = "user_id_001";
int amount = 1;
String orderTitle = "瑜伽墊十個";
String orderDesc = "國際健美協會10:00下單";
String productId = "product_id_001";
//初始化訂單界面,此處略去代碼
//簽名
String sign = cn.mixpay.server.MD5SignatureTool.signOrderInfo(amount, APP_KEY, "", orderId, "", orderDesc, orderTitle, "", productId, "", userId
        , MD5_SECRET_KEY);

myOrder = new Order(orderId, userId, amount, orderTitle, orderDesc, productId, sign);

其中的參數依次表示:

訂單編碼、用戶編碼、金額(單位是分)、訂單標題、訂單描述、商品編碼、訂單簽名

3.3 支付

初始化一個cn.mixpay.MixpayAPI對象,這個對象裏提供了具體的支付方法:

public void pay(View view) {
    MixpayAPI api = new MixpayAPI(this, APP_KEY);
    api.startPay(this, myOrder);
}

其中this表示當前的Activity,APP_KEY是在步驟2.2中獲得的應用惟一標識,myOrder就是剛剛生成的訂單。

pay方法綁定給頁面上的支付按鈕,在點擊按鈕時,MixpayAndroidSDK會作如下工做:

  • 檢測當前環境中是否安裝了Mixpay支付插件
  • 沒有的話會提示用戶安裝
  • 如有更新的Mixpay支付插件,提示用戶升級
  • 打開支付界面引導用戶選擇支付方式並完成支付

訂單界面:

訂單

支付界面:

支付

3.4 支付結果處理

經過onActivityResult得到支付結果。MixpayAPI中定義了關於支付結果的各類狀態:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == MixpayAPI.REQUEST_CODE_START_PAY) {
            Long mixpayOrderId = null;
            try {
                mixpayOrderId = data.getLongExtra(MixpayAPI.GET_MIXPAY_ORDER_ID, 0);
            }catch (Exception e) {
                //mixpayOrderId = new Long(0);
                Log.e(TAG, "no order is returned");
            }
            switch (resultCode) {
                case MixpayAPI.ORDER_STATUS_PAY_SUCCESS:
                    //TODO:支付成功,繼續程序邏輯
                    Toast.makeText(this, "支付成功"), Toast.LENGTH_LONG).show();
                    break;
                case MixpayAPI.ORDER_STATUS_UNPAY:
                    ...
                    break;
                case MixpayAPI.ORDER_STATUS_PAYING:
                    ...
                    break;
                case MixpayAPI.ORDER_STATUS_CANCELED:
                    ...
                    break;
                case MixpayAPI.ORDER_STATUS_PAY_FAILURE:
                    ...
                    break;
                case MixpayAPI.ORDER_STATUS_UNKNOWN:
                    ...
                    break;
            }

        }

    }

至此,支付功能集成完畢。

4、更多內容

4.1 關於訂單簽名

Mixpay提供的幫助文檔中詳細說明了如何對訂單信息進行簽名,同時也提供了javaPHPRubyPythonNodeJS五種語言的示例,能夠直接拿來用。

其中對於java還提供了服務器端的sdk,提供了方便的訂單簽名方法。具體請參考這裏:https://www.mixpay.cn/docs/v1/server/java/

在這個示例中,我直接在APP項目裏引入這個服務器端sdk。

4.2 相關連接

Mixpay Android SDK 使用幫助

Mixpay Server SDK For JAVA

Mixpay on Github

相關文章
相關標籤/搜索