android接入原生的支付宝支付(真的灰常简单,工具类)
2017-03-18 16:19
387 查看
首先把官方demo的payResult拷进代码工具中,然后添加官方jar包
public class AliPayUtils {
private static final int SDK_PAY_FLAG = 1;
private static Context ctx;
private static String order_id;
@SuppressLint("HandlerLeak")
private static Handler mHandler = new Handler() {
// @SuppressWarnings("unused")
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((String) msg.obj);
/**
* 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
* docType=1) 建议商户依赖异步通知
*/
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
if (TextUtils.equals(resultStatus, "9000")) {
Toast.makeText(ctx, "支付成功", Toast.LENGTH_SHORT).show();
} else {
// 判断resultStatus 为非"9000"则代表可能支付失败
// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
if (TextUtils.equals(resultStatus, "8000")) {
Toast.makeText(ctx, "支付结果确认中", Toast.LENGTH_SHORT)
.show();
} else {
// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
Toast.makeText(ctx, "支付失败", Toast.LENGTH_SHORT).show();
}
}
break;
}
default:
break;
}
}
};
//这个是 我们做项目的时候要上传服务器的数据,如果是你们用的话,可以把这些参数直接掠过
public static void pay(final Context context, String user_id, String user_phone, String design_name, final int font_id, float price,
int is_flash, String demeand, int pay_id, String target_data, String phone_type, int update_number) {
ctx = context;
OkHttpUtils.post().url(HttpUrl.submitOrder)
.addParams("user_id", user_id)
.addParams("user_phone", user_phone).
addParams("design_name", design_name)
.addParams("font_id", font_id + "")
.addParams("price", price + "")
.addParams("is_flash", is_flash + "")
.addParams("demeand", demeand)
.addParams("pay_id", pay_id + "")
.addParams("phone_type", phone_type)
.addParams("target_date", target_data)
.addParams("update_number", update_number + "")
.build()
.execute(new StringCallback() {
@Override
public void onResponse(String response) {
parseJson(response);
Log.i("xys", response);
}
@Override
public void onError(Request request, Exception e) {
Toast.makeText(ctx, "网络连接超时", Toast.LENGTH_SHORT)
.show();
}
});
}
protected static void parseJson(String response) {
Gson gson = new Gson();
AliPayBean json = gson.fromJson(response, AliPayBean.class);
alipay(json.info);
}
public static void alipay(String sign_order) {
Log.e("wch", sign_order);
final String payInfo = sign_order;
Runnable payRunnable = new Runnable() {
@Override
public void run() {
// 构造PayTask 对象
PayTask alipay = new PayTask((Activity) ctx);
// 调用支付接口,获取支付结果
String result = alipay.pay(payInfo, true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
}
最后直接在需要调用的接口使用就可以,很简单
public class AliPayUtils {
private static final int SDK_PAY_FLAG = 1;
private static Context ctx;
private static String order_id;
@SuppressLint("HandlerLeak")
private static Handler mHandler = new Handler() {
// @SuppressWarnings("unused")
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((String) msg.obj);
/**
* 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
* docType=1) 建议商户依赖异步通知
*/
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
if (TextUtils.equals(resultStatus, "9000")) {
Toast.makeText(ctx, "支付成功", Toast.LENGTH_SHORT).show();
} else {
// 判断resultStatus 为非"9000"则代表可能支付失败
// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
if (TextUtils.equals(resultStatus, "8000")) {
Toast.makeText(ctx, "支付结果确认中", Toast.LENGTH_SHORT)
.show();
} else {
// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
Toast.makeText(ctx, "支付失败", Toast.LENGTH_SHORT).show();
}
}
break;
}
default:
break;
}
}
};
//这个是 我们做项目的时候要上传服务器的数据,如果是你们用的话,可以把这些参数直接掠过
public static void pay(final Context context, String user_id, String user_phone, String design_name, final int font_id, float price,
int is_flash, String demeand, int pay_id, String target_data, String phone_type, int update_number) {
ctx = context;
OkHttpUtils.post().url(HttpUrl.submitOrder)
.addParams("user_id", user_id)
.addParams("user_phone", user_phone).
addParams("design_name", design_name)
.addParams("font_id", font_id + "")
.addParams("price", price + "")
.addParams("is_flash", is_flash + "")
.addParams("demeand", demeand)
.addParams("pay_id", pay_id + "")
.addParams("phone_type", phone_type)
.addParams("target_date", target_data)
.addParams("update_number", update_number + "")
.build()
.execute(new StringCallback() {
@Override
public void onResponse(String response) {
parseJson(response);
Log.i("xys", response);
}
@Override
public void onError(Request request, Exception e) {
Toast.makeText(ctx, "网络连接超时", Toast.LENGTH_SHORT)
.show();
}
});
}
protected static void parseJson(String response) {
Gson gson = new Gson();
AliPayBean json = gson.fromJson(response, AliPayBean.class);
alipay(json.info);
}
public static void alipay(String sign_order) {
Log.e("wch", sign_order);
final String payInfo = sign_order;
Runnable payRunnable = new Runnable() {
@Override
public void run() {
// 构造PayTask 对象
PayTask alipay = new PayTask((Activity) ctx);
// 调用支付接口,获取支付结果
String result = alipay.pay(payInfo, true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
}
}
最后直接在需要调用的接口使用就可以,很简单
相关文章推荐
- 关于android webview 端调原生app 的支付宝接口实现 还有BeeCloud(秒支付) 的接入使用
- Android支付接入(一):支付宝
- Android支付接入(一):支付宝
- Android支付接入(一):支付宝
- Android中的微信、支付宝支付功能的简单实现
- Android支付接入(一):支付宝
- Android支付接入(一):支付宝
- Android支付接入(一):支付宝
- 浅谈android接入银联,支付宝支付平台的方式
- Android支付接入(一):支付宝
- Android——支付宝SDK调用(移动应用接入支付宝支付,提供安全、便捷的支付能力)
- Android支付接入(一):支付宝
- Android支付接入(一):支付宝
- Android支付接入(一):支付宝
- Android支付接入(一):支付宝
- Android支付接入(一):支付宝
- android 接入支付宝支付 "订单签名错误,请检查PARTNER对应的密钥是否正确"
- Android支付接入:支付宝
- Android支付接入(一):支付宝
- Android支付接入(一):支付宝