Android支付宝-2016最新版支付宝,实现支付功能

最近刚做了最新版的支付宝支付功能。先去支付宝开发平台下载最新的支付宝SDK。

到下面这里看

App支付Android集成流程详解

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.fZ7Qyu&treeId=193&articleId=105296&docType=1

根据要求,把自己的工程给配置好。



我只看到这里,把上面的按照要求放到我的工程里面。

然后把支付宝的demo导入开发工具中


因为是第一次做支付宝,所以我也不太清楚那些是不要的,所以我全部复制到了我的工程里面,再把改导的包导出来。

最重要的地方来了,打开PayDemoActivity这个类把下面的东西复制到了我的点击支付的那个类里面:

/** 支付宝支付业务:入参app_id */
public static final String APPID = "";

/** 支付宝账户登录授权业务:入参pid值 */
public static final String PID = "";

/** 支付宝账户登录授权业务:入参target_id值 */
public static final String TARGET_ID = "";


/** 商户私钥,pkcs8格式 */
public static final String RSA_PRIVATE = "";

private static final int SDK_PAY_FLAG = 1;
private static final int SDK_AUTH_FLAG = 2;


@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(PayDemoActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
} else {
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
Toast.makeText(PayDemoActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
}
break;
}
case SDK_AUTH_FLAG: {
@SuppressWarnings("unchecked")
AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
String resultStatus = authResult.getResultStatus();


// 判断resultStatus 为“9000”且result_code
// 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
// 获取alipay_open_id,调支付时作为参数extern_token 的value
// 传入,则支付账户为该授权账户
Toast.makeText(PayDemoActivity.this,
"授权成功\n" + String.format("authCode:%s", authResult.getAuthCode()), Toast.LENGTH_SHORT)
.show();
} else {
// 其他状态值则为授权失败
Toast.makeText(PayDemoActivity.this,
"授权失败" + String.format("authCode:%s", authResult.getAuthCode()), Toast.LENGTH_SHORT).show();


}
break;
}
default:
break;
}
};
};

........

/**
* 支付宝支付业务

* @param v
*/
public void payV2(View v) {
if (TextUtils.isEmpty(APPID) || TextUtils.isEmpty(RSA_PRIVATE)) {
new AlertDialog.Builder(this).setTitle("警告").setMessage("需要配置APPID | RSA_PRIVATE")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i) {
//
finish();
}
}).show();
return;
}

/**
* 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成;
* 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成;
* 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险; 

* orderInfo的获取必须来自服务端;
*/
Map<String, String> params = OrderInfoUtil2_0.buildOrderParamMap(APPID);
String orderParam = OrderInfoUtil2_0.buildOrderParam(params);
String sign = OrderInfoUtil2_0.getSign(params, RSA_PRIVATE);
final String orderInfo = orderParam + "&" + sign;

Runnable payRunnable = new Runnable() {


@Override
public void run() {
PayTask alipay = new PayTask(PayDemoActivity.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);
}
};


Thread payThread = new Thread(payRunnable);
payThread.start();
}

.......

/**
* get the sdk version. 获取SDK版本号

*/
public void getSDKVersion() {
PayTask payTask = new PayTask(this);
String version = payTask.getVersion();
Toast.makeText(this, version, Toast.LENGTH_SHORT).show();
}

这些都拉进去以后更具要求填上要填的东西,因为业务要求,我只填了一个APPID和RSA_PRIVATE。

到这里已经完成一大半了:

接下来找到OrderInfoUtil2_0这个类,里面我只填了appid:

//商户签约拿到的app_id,如:2013081700024223
keyValues.put("app_id", app_id);

下图红色框的那个去掉


改为自己的商品订单号,total_amount是自己的订单价格,例如我这样,

orderSN=goodssn(订单号)和price(价格)是我在这里传过去的(如下面),你要把你的这两个作为全局变量


到这里我已经可以调用支付宝结单了。

比较粗糙的博客,希望看到我写得不对的地方多多指教,下次我写一个国际支付宝的文章

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值