Android 微信 支付宝支付,2行代码实现支付
Android 微信支付宝支付,2行代码实现支付
在移动应用开发中,集成第三方支付功能已经成为必备的功能之一。微信支付和支付宝支付是两大流行的支付平台,很多App都需要将它们集成进来。今天,我们就来讲解如何快速集成微信支付和支付宝支付到Android App中。
环境和工具
* Android Studio4.0+
* Java或Kotlin编程语言* 微信支付 SDK(v5.3.1+)
* 支付宝支付 SDK(v6.2.0+)
集成微信支付
步骤一:添加依赖
在 `build.gradle` 文件中,添加以下依赖:
```groovydependencies {
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:$wechatVersion'
}
```
其中 `$wechatVersion` 是微信支付 SDK 的版本号。
步骤二:初始化微信支付
在应用入口处(如 `MainActivity`),添加以下代码:
```javaimport com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
public class MainActivity extends AppCompatActivity {
private static final String APP_ID = "your_app_id";
private IWXAPI api;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化微信支付 api = WXAPIFactory.createWXAPI(this, APP_ID, true);
}
}
```
其中 `APP_ID` 是您的微信应用 ID。
步骤三:实现支付
在需要支付的地方(如按钮点击事件),添加以下代码:
```javaimport com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXPayUtil;
public class MainActivity extends AppCompatActivity {
private static final String APP_ID = "your_app_id";
private IWXAPI api;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化微信支付 api = WXAPIFactory.createWXAPI(this, APP_ID, true);
}
public void pay(View view) {
//生成预付订单 String prepayId = generatePrepayId();
// 组装支付参数 PayReq req = new PayReq();
req.appid = APP_ID;
req.partnerid = "your_partner_id";
req.prepayid = prepayId;
req.packageValue = "Sign=WXPay";
req.noncestr = generateNonceStr();
req.timeStamp = String.valueOf(System.currentTimeMillis() /1000);
req.sign = getSignature(req);
// 发起支付 api.sendReq(req, new IWXAPI.OnQRCodeListener() {
@Override public void onQRCodeReady(Bitmap qrCode) {
// 显示二维码 ImageView imageView = findViewById(R.id.qr_code);
imageView.setImageBitmap(qrCode);
}
});
}
private String generatePrepayId() {
//生成预付订单 return "your_preaty_id";
}
private String generateNonceStr() {
//生成随机数 return UUID.randomUUID().toString();
}
private String getSignature(PayReq req) {
// 组装签名参数 Map
params.put("appid", APP_ID);
params.put("noncestr", generateNonceStr());
params.put("partnerid", "your_partner_id");
params.put("prepayid", generatePrepayId());
params.put("packagevalue", "Sign=WXPay");
params.put("timestamp", String.valueOf(System.currentTimeMillis() /1000));
// 计算签名 return WXPayUtil.generateSignature(params, "your_app_secret_key", false);
}
}
```
其中 `generatePrepayId()` 方法生成预付订单,`generateNonceStr()` 方法生成随机数,`getSignature(PayReq req)` 方法计算签名。
步骤四:处理支付结果
在需要支付的地方(如按钮点击事件),添加以下代码:
```javaimport com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXPayUtil;
public class MainActivity extends AppCompatActivity {
private static final String APP_ID = "your_app_id";
private IWXAPI api;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化微信支付 api = WXAPIFactory.createWXAPI(this, APP_ID, true);
}
public void pay(View view) {
//生成预付订单 String prepayId = generatePrepayId();
// 组装支付参数 PayReq req = new PayReq();
req.appid = APP_ID;
req.partnerid = "your_partner_id";
req.prepayid = prepayId;
req.packageValue = "Sign=WXPay";
req.noncestr = generateNonceStr();
req.timeStamp = String.valueOf(System.currentTimeMillis() /1000);
req.sign = getSignature(req);
// 发起支付 api.sendReq(req, new IWXAPI.OnQRCodeListener() {
@Override public void onQRCodeReady(Bitmap qrCode) {
// 显示二维码 ImageView imageView = findViewById(R.id.qr_code);
imageView.setImageBitmap(qrCode);
}
});
// 处理支付结果 api.handleIntent(getIntent(), new IWXAPI.OnActivityResultListener() {
@Override public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==0 && resultCode == RESULT_OK) {
// 支付成功 Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
} else {
// 支付失败 Toast.makeText(MainActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
}
return true;
}
});
}
private String generatePrepayId() {
//生成预付订单 return "your_preaty_id";
}
private String generateNonceStr() {
//生成随机数 return UUID.randomUUID().toString();
}
private String getSignature(PayReq req) {
// 组装签名参数 Map
params.put("appid", APP_ID);
params.put("noncestr", generateNonceStr());
params.put("partnerid", "your_partner_id");
params.put("prepayid", generatePrepayId());
params.put("packagevalue", "Sign=WXPay");
params.put("timestamp", String.valueOf(System.currentTimeMillis() /1000));
// 计算签名 return WXPayUtil.generateSignature(params, "your_app_secret_key", false);
}
}
```
其中 `handleIntent(Intent intent)` 方法处理支付结果。
集成支付宝支付
步骤一:添加依赖
在 `build.gradle` 文件中,添加以下依赖:
```groovydependencies {
implementation 'com.alipay.sdk:alipaysdk:$alipayVersion'
}
```
其中 `$alipayVersion` 是支付宝 SDK 的版本号。
步骤二:初始化支付宝支付
在应用入口处(如 `MainActivity`),添加以下代码:
```javaimport com.alipay.sdk.app.PayTask;
public class MainActivity extends AppCompatActivity {
private static final String APP_ID = "your_app_id";
private PayTask payTask;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化支付宝支付 payTask = new PayTask(this, APP_ID, true);
}
}
```
其中 `APP_ID` 是您的支付宝应用 ID。
步骤三:实现支付
在需要支付的地方(如按钮点击事件),添加以下代码:
```javaimport com.alipay.sdk.app.PayTask;
public class MainActivity extends AppCompatActivity {
private static final String APP_ID = "your_app_id";
private PayTask payTask;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化支付宝支付 payTask = new PayTask(this, APP_ID, true);
}
public void pay(View view) {
//生成预付订单 String prepayId = generatePrepayId();
// 组装支付参数 Map
params.put("appid", APP_ID);
params.put("partnerid", "your_partner_id");
params.put("prepayid", prepayId);
params.put("packagevalue", "Sign=WXPay");
params.put("timestamp", String.valueOf(System.currentTimeMillis() /1000));
// 计算签名 String sign = AlipaySignature.rsa256(params, "your_app_secret_key");
// 发起支付 payTask.pay(params, new PayResultListener() {
@Override public void onPaySuccess(String result) {
// 支付成功 Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
}
@Override public void onPayFailure(String result) {
// 支付失败 Toast.makeText(MainActivity.this, "支付失败",