android实现跳转支付宝微信支付,Android接入支付宝和微信支付的方法
前言
很多 APP 都需要支付功能,国内一般就是支付宝和微信了。目前这2 种接入方式对于 APP 端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端。APP 端总结起来就是三步走:
1. 接入支付的库,接受服务端的订单信息。
2. 根据服务端传来的订单信息,进行支付操作。
3. 支付成功后,回调服务端,更新订单状态。
接入支付宝和微信支付的方法
一、接入支付宝支付
1. 下载并集成支付宝 SDK首先,我们需要下载并集成支付宝 SDK。可以从支付宝官方网站下载最新版本的 SDK。
```java// 添加依赖dependencies {
implementation 'com.alipay.sdk:alipaysdk:1.5.0'
}
```
2. 初始化支付宝 SDK在 APP 的入口函数中,初始化支付宝 SDK。
```javapublic class MainActivity extends AppCompatActivity {
private static final String APP_ID = "your_app_id";
private AlipayClient alipayClient;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化支付宝 SDK alipayClient = new AlipayClient(APP_ID, this);
}
}
```
3. 接收服务端的订单信息在 APP 端,需要接收服务端传来的订单信息。可以通过 HTTP 请求或其他方式获取订单信息。
```java// 接收服务端的订单信息String orderId = getIntent().getStringExtra("orderId");
String orderAmount = getIntent().getStringExtra("orderAmount");
```
4. 进行支付操作根据服务端传来的订单信息,进行支付操作。可以通过支付宝 SDK 提供的 API 来实现。
```java// 进行支付操作AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
request.setBizContent("{"trade_no":"" + orderId + "","total_amount":"" + orderAmount + ""}");
try {
AlipayTradeQueryResponse response = alipayClient.execute(request);
if (response.isSuccess()) {
// 支付成功 } else {
// 支付失败 }
} catch (AlipayApiException e) {
// 处理异常}
```
5. 回调服务端,更新订单状态支付成功后,需要回调服务端,更新订单状态。
```java// 回调服务端,更新订单状态String callbackUrl = " {
AlipayTradeQueryResponse response = alipayClient.execute(request);
if (response.isSuccess()) {
// 回调服务端,更新订单状态 HttpPostCallbackRequest callbackRequest = new HttpPostCallbackRequest(callbackUrl, orderId, orderAmount);
try {
callbackRequest.execute();
} catch (AlipayApiException e) {
// 处理异常 }
} else {
// 支付失败 }
} catch (AlipayApiException e) {
// 处理异常}
```
二、接入微信支付
1. 下载并集成微信 SDK首先,我们需要下载并集成微信 SDK。可以从微信官方网站下载最新版本的 SDK。
```java// 添加依赖dependencies {
implementation 'com.tencent.mm.opensdk:wxapi:3.5.0'
}
```
2. 初始化微信 SDK在 APP 的入口函数中,初始化微信 SDK。
```javapublic class MainActivity extends AppCompatActivity {
private static final String APP_ID = "your_app_id";
private IWXAPI wxApi;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化微信 SDK wxApi = WXAPIFactory.createWXAPI(this, APP_ID);
}
}
```
3. 接收服务端的订单信息在 APP 端,需要接收服务端传来的订单信息。可以通过 HTTP 请求或其他方式获取订单信息。
```java// 接收服务端的订单信息String orderId = getIntent().getStringExtra("orderId");
String orderAmount = getIntent().getStringExtra("orderAmount");
```
4. 进行支付操作根据服务端传来的订单信息,进行支付操作。可以通过微信 SDK 提供的 API 来实现。
```java// 进行支付操作PayReq request = new PayReq();
request.appid = APP_ID;
request.partnerid = "your_partner_id";
request.prepayid = orderId;
request.packageValue = "Sign=WXPay";
request.noncestr = UUID.randomUUID().toString();
request.timeStamp = System.currentTimeMillis() /1000 + "";
try {
wxApi.sendReq(request);
} catch (Exception e) {
// 处理异常}
```
5. 回调服务端,更新订单状态支付成功后,需要回调服务端,更新订单状态。
```java// 回调服务端,更新订单状态String callbackUrl = " {
PayReq request = new PayReq();
request.appid = APP_ID;
request.partnerid = "your_partner_id";
request.prepayid = orderId;
request.packageValue = "Sign=WXPay";
request.noncestr = UUID.randomUUID().toString();
request.timeStamp = System.currentTimeMillis() /1000 + "";
wxApi.sendReq(request);
// 回调服务端,更新订单状态 HttpPostCallbackRequest callbackRequest = new HttpPostCallbackRequest(callbackUrl, orderId, orderAmount);
try {
callbackRequest.execute();
} catch (Exception e) {
// 处理异常 }
} catch (Exception e) {
// 处理异常}
```
结论
通过以上步骤,我们可以实现 APP 端的支付功能,支持支付宝和微信支付。需要注意的是,在实际开发中,还需要处理一些其他细节,如安全校验、订单状态更新等。