Android 支付宝后台支付流程
来源:互联网 发布:朝鲜绑架 知乎 编辑:程序博客网 时间:2024/05/18 20:09
很多新手程序员在支付宝开放平台根据开发文档进行开发的时候经常遇到一些问题,今天给大家分享一个简单的支付宝支付的代码,基本上一看就明白了
第一步就是先去支付宝开放平台创建app,我就不做过多演示了
第二部要添加jar包,可以直接去支付宝官方进行下载
下载地址:https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1
可以看到有两个,选择你需要的就行了
导入jar
将demo里面的alipaySdk-20160223.jar拷贝到我们工程的libs下,并添加到依赖中
然后就是在AndroidManifest里进行配置
<activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" />
添加网络权限
<uses-permission android:name="android.permission.INTERNET" />
现在就是代码了
private static final int SDK_PAY_FLAG = 1; //button点击事件 public void onClick(View v) { //走支付方法 paySignFromServer(); } //支付方法 private void paySignFromServer() { //添加参数,url中的ip可以换成我们自己的后台ip String url = "http://169.254.222.214:8080/PayServer/AlipayDemo"; StringBuffer sb = new StringBuffer("?"); sb.append("subject="); sb.append("来自Server测试的商品"); sb.append("&"); sb.append("body="); sb.append("该测试商品的详细描述"); sb.append("&"); sb.append("total_fee="); sb.append("0.01"); url = url + sb.toString(); //到服务器进行订单加密 OkHttpUtils.get().url(url).build().execute(new StringCallback() { @Override public void onError(Request request, Exception e) { Log.i("TAG", e.toString()); } @Override public void onResponse(final String response) { Runnable payRunnable = new Runnable() { @Override public void run() { // 构造PayTask 对象 PayTask alipay = new PayTask(DingdanActivity.this); // 调用支付接口,获取支付结果 String result = alipay.pay(response, true); Log.i("TAG", "走了pay支付方法............."); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }; Thread payThread = new Thread(payRunnable); payThread.start(); } }); } //这里需要一个handler private 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(DingdanActivity.this, "支付成功", Toast.LENGTH_SHORT).show(); } else { // 判断resultStatus 为非"9000"则代表可能支付失败 // "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态) if (TextUtils.equals(resultStatus, "8000")) { Toast.makeText(DingdanActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show(); } else { // 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误 Toast.makeText(DingdanActivity.this, "支付失败", Toast.LENGTH_SHORT).show(); } } break; } default: break; } } ; };
这里还需要一个PayResult,我就直接上代码了
package com.JingDong.pay;import android.text.TextUtils;public class PayResult { private String resultStatus; private String result; private String memo; public PayResult(String rawResult) { if (TextUtils.isEmpty(rawResult)) return; String[] resultParams = rawResult.split(";"); for (String resultParam : resultParams) { if (resultParam.startsWith("resultStatus")) { resultStatus = gatValue(resultParam, "resultStatus"); } if (resultParam.startsWith("result")) { result = gatValue(resultParam, "result"); } if (resultParam.startsWith("memo")) { memo = gatValue(resultParam, "memo"); } } } @Override public String toString() { return "resultStatus={" + resultStatus + "};memo={" + memo + "};result={" + result + "}"; } private String gatValue(String content, String key) { String prefix = key + "={"; return content.substring(content.indexOf(prefix) + prefix.length(), content.lastIndexOf("}")); } /** * @return the resultStatus */ public String getResultStatus() { return resultStatus; } /** * @return the memo */ public String getMemo() { return memo; } /** * @return the result */ public String getResult() { return result; }}
Android 端的代码就完成了,接下来就是后台的代码了,在下载的dome里有个PayServer导入eclipse。
把PID,商户私钥,支付宝公钥替换即可,运行eclipse就可以进行支付宝进行支付。
好了,大概就是这样,如果有什么问题,欢迎大家指点!
阅读全文
1 0
- Android 支付宝后台支付流程
- android支付宝支付流程
- Android 支付宝 支付 流程 详解
- Android支付宝支付开发流程
- Android 支付宝支付开发流程
- 支付宝支付流程
- 支付宝支付流程
- 支付宝支付流程
- 支付宝支付流程
- 支付宝支付流程
- 支付宝 支付流程
- 支付宝支付流程
- 支付宝支付流程
- 支付宝支付流程
- 支付宝支付流程
- 支付宝java后台接入简单流程
- Android 支付宝接入流程
- Android 支付宝接入流程
- Java-反射(一) Class类的使用
- C 和指针第一次考试(改正)
- C语言学习—数组
- python生成器——廖雪峰教程笔记
- 快速排序(分治算法)
- Android 支付宝后台支付流程
- android 基础知识 四大组件之Activity(一)
- SYN和FIN同时设置攻击
- 洛谷P1060 开心的金明(DP,0-1背包)
- (九)Java设计模式之装饰模式
- RecyclerView多布局实现
- 使用jsp读取TXT格式文件
- 第1步:数据库表
- android 使用Dialog实现Toast效果,解决有的机型不显示Toast的问题(保证能用)