android客户端调用支付宝,主要是获取订单信息后,唤起对应支付平台进行支付业务
操作流程,小白表示对整体的流程不是很清楚,这里只是大致说下测通支付流程
第一步:仿照文档上写,
地址:支付宝集成流程
导入jar包,配置写进去,混淆一般都要写的,写好之后
回去看看支付宝的demo,看看PayDemoActivity
我标记了orderInfo ,这个是订单,这个很重要,
不需要支付宝登录的话里面的授权就无视他就好了,还有的就是那个H5pay也可以无视,demo里面只是为了展示,sdk里面有所以项目中就不用在写了,
在看下面这句话
是启动的方法,请求数据的时候用到,
准备好了之后就开始写了
假如你有一个按钮 你写了一个方法
flag是判断方法,请无视呢,
先定义订单:String orderInfo= "";
把demo的全部复制过来吧,一行一行写估计很多人不明白
我要说几点NetUtils 是项目中封装的请求数据的类,CardPay是一个bean,自己写的,
我这个是购卡,请求后台一个用户id和卡的编号,这些都是自己项目的需求写的。
主要是拿到数据后发送请求,
Thread payThread = new Thread( payRunnable );
payThread.start();
那个PayResult直接从demo复制过来就行,
这样就能吊起支付宝了
String orderInfo = "";
private void zhifubaopay() {
setProgressContent("请求中");
showProgressDialog();
Pay z = new Pay();
z.setAccount_Id(mUser.getAccount_Id());
z.setMerName(merName);
z.setMerCode(merCode);
z.setSerCode(serCode);
z.setPayMethod(2);
NetUtils.getInstance().post(Constant.ServicePayment, z, new NetUtils.NetDataBack() {
@Override
public void onback(String s, Call call, Response response) {
Gson gson = new Gson();
PayWeixin p = gson.fromJson( s, PayWeixin.class );
if (p.getResultCode().equals( Login.RIGHT_CODE )) {
orderInfo = p.getJsonData().getOrdercode();//从Ordercode中拿到数据
Thread payThread = new Thread( payRunnable );
payThread.start();
dissmissProgressDialog();
} else {
showToast( "支付失败" );
}
}
@Override
public void onError(String error) {
}
} );
}
private static final int SDK_PAY_FLAG = 1;
@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
@SuppressWarnings("unused")
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
@SuppressWarnings("unchecked")
PayResult payResult = new PayResult( (Map<String, String>) msg.obj );
/**
对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
*/
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals( resultStatus, "9000" )) {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
Toast.makeText(PayActivity.this, "支付成功", Toast.LENGTH_SHORT ).show();
} else {
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
Toast.makeText(PayActivity.this, "支付失败", Toast.LENGTH_SHORT ).show();
}
break;
}
}
}
};
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(PayActivity.this );
Map<String, String> result = alipay.payV2( orderInfo, true );
Log.i( "msp", result.toString() );
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage( msg );
}
};