摘要:本文将带你了解Android应用开发之Android支付之支付宝封装类,希望本文对大家学Android有所帮助
本文将带你了解Android应用开发之Android支付之支付宝封装类,希望本文对大家学Android有所帮助
今天介绍下在android中如何集成支付宝支付到自己的APP中去。让APP能够拥有方便,快捷的支付功能。
我们在做Android支付的时候肯定会用到支付宝支付,根据官方给出的demo做起来非常费劲,所以我们需要一次简单的封装。只需要一个方法调用便可实现。
如图:
首先,导入需要的支付宝SDK资源放入商户应用工程的libs目录下
Activity支付调用代码:
Java代码 public class PayDemoActivity extends Activity { // 商户PID public static final String PARTNER = Keys.DEFAULT_PARTNER; // 商户收款账号 public static final String SELLER = Keys.DEFAULT_SELLER; // 商户私钥,pkcs8格式 ===支付宝公钥 public static final String RSA_PRIVATE = Keys.PRIVATE; private static final int SDK_PAY_FLAG = 1; private static final int SDK_CHECK_FLAG = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pay_external); findViewById(R.id.pay).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ExternalPartner.getInstance(PayDemoActivity.this,"支付时出现的订单信息" ,"123456", mHandler, "0.1").doOrder(); } }); findViewById(R.id.check).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ExternalPartner.getInstance(PayDemoActivity.this,"物业费", "123456", mHandler, "0.1").check(); } }); } private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case SDK_PAY_FLAG: { PayResult payResult = new PayResult((String) msg.obj); // 支付宝返回此次支付结果及加签,建议对支付宝签名信息拿签约时支付宝提供的公钥做验签 String resultInfo = payResult.getResult(); String resultStatus = payResult.getResultStatus(); // 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档 if (TextUtils.equals(resultStatus, "9000")) { Toast.makeText(PayDemoActivity.this, "支付成功", Toast.LENGTH_SHORT).show(); } else { // 判断resultStatus 为非“9000”则代表可能支付失败 // “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态) if (TextUtils.equals(resultStatus, "8000")) { Toast.makeText(PayDemoActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show(); } else { // 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误 Toast.makeText(PayDemoActivity.this, "支付失败", Toast.LENGTH_SHORT).show(); } } break; } case SDK_CHECK_FLAG: { Toast.makeText(PayDemoActivity.this, "检查结果为:" + msg.obj, Toast.LENGTH_SHORT).show(); break; } default: break; } }; }; } public class PayDemoActivity extends Activity {
// 商户PID
public static final String PARTNER = Keys.DEFAULT_PARTNER;
// 商户收款账号
public static final String SELLER = Keys.DEFAULT_SELLER;
// 商户私钥,pkcs8格式 ===支付宝公钥
public static final String RSA_PRIVATE = Keys.PRIVATE;
private static final int SDK_PAY_FLAG = 1;
private static final int SDK_CHECK_FLAG = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pay_external);
findViewById(R.id.pay).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ExternalPartner.getInstance(PayDemoActivity.this,"支付时出现的订单信息" ,"123456",
mHandler, "0.1").doOrder();
}
});
findViewById(R.id.check).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ExternalPartner.getInstance(PayDemoActivity.this,"物业费", "123456",
mHandler, "0.1").check();
}
});
}
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((String) msg.obj);
// 支付宝返回此次支付结果及加签,建议对支付宝签名信息拿签约时支付宝提供的公钥做验签
String resultInfo = payResult.getResult();
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
if (TextUtils.equals(resultStatus, "9000")) {
Toast.makeText(PayDemoActivity.this, "支付成功",
Toast.LENGTH_SHORT).show();
} else {
// 判断resultStatus 为非“9000”则代表可能支付失败
// “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
if (TextUtils.equals(resultStatus, "8000")) {
Toast.makeText(PayDemoActivity.this, "支付结果确认中",
Toast.LENGTH_SHORT).show();
} else {
// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
Toast.makeText(PayDemoActivity.this, "支付失败",
Toast.LENGTH_SHORT).show();
}
}
break;
}
case SDK_CHECK_FLAG: {
Toast.makeText(PayDemoActivity.this, "检查结果为:" + msg.obj,
Toast.LENGTH_SHORT).show();
break;
}
default:
break;
}
};
};
}
AndroidManifest.xml配置
Html代码 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" /> <application android:allowBackup="true" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar" > <activity android:name="com.example.alipaydemo.PayDemoActivity" android:icon="@drawable/msp_icon" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- alipay sdk begin --> <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" > </activity> <!-- alipay sdk end --> </application> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" />
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar" >
<activity
android:name="com.example.alipaydemo.PayDemoActivity"
android:icon="@drawable/msp_icon"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- alipay sdk begin -->
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>
<!-- alipay sdk end -->
</application>
封装工具类代码代码太多未给出,直接下载即可。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号