聚易付移動支付服務(MixpayAndroidSDK)的目標就是使開發者很輕鬆地在本身的APP中集成支付功能,從而節約時間和精力用在自己的業務當中。java
只需15分鐘,就可讓你的APP具備支付寶支付、銀行卡支付、手機充值卡支付和遊戲點卡支付。解決了以前開發者在集成支付時遇到的各類問題,好比:android
MixpayAndroidSDK致力於幫助開發者解決以上問題。git
如下經過一個實際項目來講明如何使用MixpayAndroidSDK。github
筆者的開發環境:segmentfault
註冊地址:https://m.mixpay.cn/registerapi
註冊成功以後會收到Mixpay發出的一封確認郵件,點擊其中的確認連接即完成註冊過程。服務器
登陸到商戶後臺,經過菜單導航到 應用->新建應用 頁面app
https://m.mixpay.cn/application/addmaven
在表單中填寫應用的相關信息,保存便可。以下圖所示:ide
其中的"通知地址"是指,Mixpay在完成一筆支付以後,經過這個地址通知給您,您在接收到進行相應的處理,並返回一個字符串'success'以表示接收成功,整個支付過程也就完成了。
APP保存以後,Mixpay會位APP分配一個惟一標識,即APP_KEY,能夠在 APP詳情頁面中看到:
操做地址:https://m.mixpay.cn/key/add
密鑰用來對訂單信息進行加密。Mixpay支付兩種加密方式,RSA和MD5。
使用RSA,按頁面上給出的提示操做便可。
使用MD5,直接保存便可。在密鑰詳細信息中會看到secretKey。
在這裏選擇MD5加密方式:
key信息:
操做地址:https://m.mixpay.cn/key
在key的右邊點擊"加載到應用",在打開的頁面中選擇剛纔新建的APP便可。
能夠經過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' } }
引入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);
其中的參數依次表示:
訂單編碼、用戶編碼、金額(單位是分)、訂單標題、訂單描述、商品編碼、訂單簽名
初始化一個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會作如下工做:
訂單界面:
支付界面:
經過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; } } }
至此,支付功能集成完畢。
Mixpay提供的幫助文檔中詳細說明了如何對訂單信息進行簽名,同時也提供了java
、PHP
、Ruby
、Python
、NodeJS
五種語言的示例,能夠直接拿來用。
其中對於java還提供了服務器端的sdk,提供了方便的訂單簽名方法。具體請參考這裏:https://www.mixpay.cn/docs/v1/server/java/
在這個示例中,我直接在APP項目裏引入這個服務器端sdk。