先给出可用demo吧
支付宝可用demo下载地址
前段时间公司项目需要集成支付宝支付,蚂蚁金服的文档和demo可以说是非常清晰的,经过一些时间的摸索,也是把支付宝支付集成到了项目中。不可缺少的是去蚂蚁金服申请产品签约,这些就不多说了,按照文档一步一步来,应该是没有什么问题的。我们会得到下面几个参数
public static final String PARTNER = ""; public static final String SELLER = ""; public static final String RSA_PRIVATE = ""; public static final String RSA_PUBLIC = "";
准备工作做好了,接下来就是开发了。先把支付宝jar包导进去,然后需要在manifest注册一一下
<activityandroid:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize"android:exported="false"android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" > </activity>
还有一些权限需要申请的
<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" />
把支付宝demo中的类拷贝到自己的项目中
下一步就是通过线程调起支付了,请注意,这里签名都是在本地,私钥都是放在本地,实际开发中都是要在服务端完成的。
/** * 支付宝支付异步任务 * * @author Simon */ private class AliPayThread extends Thread { @Override public void run() { String result = AlipayAPI.pay(MainActivity.this, "测试的商品", "测试商品的详细描述", "0.01"); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }
支付的结果
private Handler mHandler=new Handler() { @Override 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(); if (TextUtils.equals(resultStatus, "9000")) { Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show(); } else { if (TextUtils.equals(resultStatus, "8000")) { Toast.makeText(MainActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "支付失败" + resultStatus, Toast.LENGTH_SHORT) .show(); } } break; } } }; };
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
下面贴出整个代码
package com.alpha.alipay;import com.ali.alipay.AlipayAPI;import com.ali.alipay.PayResult;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity { private static final int SDK_PAY_FLAG = 1; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button) findViewById(R.id.bt_submit); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new AliPayThread().start(); } }); } private Handler mHandler=new Handler() { @Override 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(); if (TextUtils.equals(resultStatus, "9000")) { Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show(); } else { if (TextUtils.equals(resultStatus, "8000")) { Toast.makeText(MainActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "支付失败" + resultStatus, Toast.LENGTH_SHORT) .show(); } } break; } } }; }; /** * 支付宝支付异步任务 * * @author Simon */ private class AliPayThread extends Thread { @Override public void run() { String result = AlipayAPI.pay(MainActivity.this, "测试的商品", "测试商品的详细描述", "0.01"); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
运行下,就可以调起支付宝了。
0 0