一、Android 快速集成
二、在项目中添加SDK
i. 从官网下载SDK包。将PaySDK下面的jar包和so库导入自己的libs下。
导入完后如下图所示
其中alipaysdk开头的jar是支付宝要用的,UPPay开头的jar是银联支付要使用的,wechat开头的jar包是微信支付要使用的jar;
三、 配置Android ManiFest.xml文件
i. 设置Application为MobApplication,也可设置成MobApplication的子类(如果您不想这么做,可以参照第五部分的ii小节)。在其中添加PaySDK的Appkey:
1 2 3 4 5 |
<application android:name="com.mob.MobApplication"> <meta-data android:name="Mob-AppKey" android:value="您的mob的Appkey"/> <meta-data android:name="Mob-AppSecret" android:value="您的Mob的appsecret"/> </application> |
ii添加基本权限配置
1 2 3 4 5 6 7 8 9 10 |
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" /> <uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android.hardware.nfc.hce"/> |
继续添加activity的配置
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 42 43 44 45 46 47 48 |
<activity android:name="com.mob.paysdk.PaymentActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="true" android:launchMode="singleTask" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"></activity> <activity android:name="com.mob.tools.MobUIShell" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:windowSoftInputMode="stateHidden|adjustResize" /> <!--支付宝支付所需配置--> <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="false" android:screenOrientation="behind"></activity> <activity android:name="com.alipay.sdk.auth.AuthActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="false" android:screenOrientation="behind"></activity> <!--微信支付所需配置--> <activity-alias android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:targetActivity="com.mob.paysdk.PaymentActivity" /> <uses-library android:name="org.simalliance.openmobileapi" android:required="false" /> <!--银联支付所需配置--> <activity android:name="com.unionpay.uppay.PayActivity" android:configChanges="orientation|keyboardHidden" android:excludeFromRecents="true" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize" /> <activity android:name="com.unionpay.UPPayWapActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize" /> |
四、添加代码
i. 创建订单, 设置订单号、支付金额等相关信息。
1 2 3 4 5 |
PayOrder order = new PayOrder(); order.setOrderNo("订单号"); order.setAmount(支付金额); order.setSubject("支付标题"); order.setBody("支付主体"); |
ii. 创建对应支付api。
1 2 3 4 5 6 7 8 |
// 如果想获取支付宝的支付api,可以这样子做: AliPayAPI alipay = PaySDK.createMobPayAPI(AliPayAPI.class); // 如果想获取微信的支付api,可以这样子做: WXPayAPI wxpay = PaySDK.createMobPayAPI(WXPayAPI.class); //如果想获取银联支付api,可以这样做,注意:从1.1.0版本开始支持 UnionPayAPI unpay = PaySDK.createMobPayAPI(UnionPayAPI.class); |
iii. 发起支付。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
payApi.pay(order, new OnPayListener<PayOrder>() { @Override public boolean onWillPay(String ticketId, PayOrder payOrder, MobPayAPI mobPayAPI) { // TODO 保存本次支付操作的 ticketId // 返回false表示不阻止本次支付 return false; } @Override public void onPayEnd(PayResult payResult, PayOrder payOrder, MobPayAPI mobPayAPI) { // TODO 处理支付的结果,成功或失败可以在payResult中获取 } }); |
iv. 主要类型:
类型 | 说明 |
---|---|
PayResult | 支付结果 |
PayOrder | 订单对象 |
MobPayApi | 支付API对象 |
OnPayListener | 支付过程监听对象 |
支付结果 | 说明 |
---|---|
PayResult | getPayChannelCode()
返回支付渠道错误码.(只有支付码返回1300( PAYCODE_CHANNEL_ERROR),即返回失败的时候才有意义)
|
getPayChannelMessage()
返回支付渠道错误消息.(只有支付码返回1300( PAYCODE_CHANNEL_ERROR),即返回失败的时候才有意义)
|
|
getPayCode() 返回支付码(返回码请看下面表格) |
|
getPayMessage()
返回支付码信息
|
返回支付码说明
限定符和类型 | 支付码常量字段 | 值 |
---|---|---|
public static final int |
PAYCODE_CANCEL |
1200 |
public static final int |
PAYCODE_CHANNEL_ERROR |
1300 |
public static final int |
PAYCODE_INVALID_CHANNEL |
1100 |
public static final int |
PAYCODE_NETWORK_EXCEPTION |
1000 |
public static final int |
PAYCODE_OK |
0 |
public static final int |
PAYCODE_UNSUPPORT |
1101 |
可以参考SDK包中的ApiDoc或者github的ApiDoc。
五、关于SDK初始化的特殊说明
SDK初始化有两种方式:
i. 通过AndroidManifest配置Application为MobApplication或者其子类
1 2 3 |
<application android:name="com.mob.MobApplication"> </application> |
ii. 通过代码配置, 在您Application的onCreate方法中,增加如下代码
1 |
MobSDK.init(this); |
以上两种方式任选其一即可,但我们强烈建议您使用第一种方式进行初始化, 它会帮助您减少很多工作量。