android自动微信支付平台,Android实现微信支付功能
Android实现微信支付功能详细描述
在开发Android APP微信支付功能时,需要完成三个步骤:第一步生成预支付订单、第二步生成微信支付参数、第三步调起微信APP支付。除了需要审核通过的APP应用外,还需要获得微信支付接口权限,然后获取对应的商户号、API密钥等信息。
第一步:生成预支付订单
在生成预支付订单时,我们需要向微信支付平台发送一个请求,包含以下参数:
* appid: APPID(应用ID),是微信支付平台为我们分配的唯一标识符。
* mch_id: 商户号,用于区分不同的商户。
* nonce_str: 随机字符串,用于防止重复请求。
* body: 商品描述,描述商品或服务的名称。
* total_fee:金额,表示支付金额(以分为单位)。
* notify_url: 通知URL,用于接收微信支付平台发送的通知。
我们可以使用以下代码生成预支付订单:
```javaimport java.net.URLEncoder;
import java.util.Random;
public class PayUtil {
public static String genPrepayId(String appid, String mch_id, String body, int total_fee) throws Exception {
//生成随机字符串 Random random = new Random();
String nonce_str = URLEncoder.encode(random.nextLong() + "", "UTF-8");
// 构造请求参数 Map
params.put("appid", appid);
params.put("mch_id", mch_id);
params.put("nonce_str", nonce_str);
params.put("body", body);
params.put("total_fee", total_fee + "");
// 对请求参数进行签名 String sign = genSign(params);
// 构造预支付订单请求 String prepayIdUrl = " Map
headers.put("Content-Type", "application/x-www-form-urlencoded");
headers.put("sign", sign);
headers.put("nonce_str", nonce_str);
// 发送请求并获取预支付订单ID HttpPostRequest request = new HttpPostRequest(prepayIdUrl, headers, params);
String response = request.execute();
JSONObject jsonObject = JSON.parseObject(response);
return jsonObject.getString("prepay_id");
}
}
```
第二步:生成微信支付参数
在生成微信支付参数时,我们需要向微信支付平台发送一个请求,包含以下参数:
* appid: APPID(应用ID),是微信支付平台为我们分配的唯一标识符。
* mch_id: 商户号,用于区分不同的商户。
* nonce_str: 随机字符串,用于防止重复请求。
* package: 包名,表示支付包类型(例如:Sign=WXPay)。
* partnerid:服务商ID,表示微信支付平台为我们分配的服务商ID。
* prepay_id: 预支付订单ID,表示生成预支付订单时返回的ID。
* timestamp: 时间戳,表示当前时间(以秒为单位)。
我们可以使用以下代码生成微信支付参数:
```javaimport java.net.URLEncoder;
import java.util.Random;
public class PayUtil {
public static String genPayParams(String appid, String mch_id, String packageValue, String partnerid, String prepayId, int timestamp) throws Exception {
//生成随机字符串 Random random = new Random();
String nonce_str = URLEncoder.encode(random.nextLong() + "", "UTF-8");
// 构造请求参数 Map
params.put("appid", appid);
params.put("mch_id", mch_id);
params.put("nonce_str", nonce_str);
params.put("package", packageValue);
params.put("partnerid", partnerid);
params.put("prepay_id", prepayId);
params.put("timestamp", timestamp + "");
// 对请求参数进行签名 String sign = genSign(params);
// 构造微信支付参数 Map
payParams.put("sign", sign);
payParams.put("nonce_str", nonce_str);
return JSON.toJSONString(payParams);
}
}
```
第三步:调起微信APP支付
在调起微信APP支付时,我们需要向微信支付平台发送一个请求,包含以下参数:
* appid: APPID(应用ID),是微信支付平台为我们分配的唯一标识符。
* mch_id: 商户号,用于区分不同的商户。
* nonce_str: 随机字符串,用于防止重复请求。
* **package**: 包名,表示支付包类型(例如:Sign=WXPay)。
* **partnerid**:服务商ID,表示微信支付平台为我们分配的服务商ID。
* **prepay_id**: 预支付订单ID,表示生成预支付订单时返回的ID。
* **timestamp**: 时间戳,表示当前时间(以秒为单位)。
* **sign**: 签名,表示对请求参数进行签名后的结果。
我们可以使用以下代码调起微信APP支付:
```javaimport android.content.Intent;
import android.os.Bundle;
public class PayActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pay);
// 获取微信支付参数 String payParams = getPayParams();
// 构造微信APP支付请求 Intent intent = new Intent(this, WeChatPayActivity.class);
intent.putExtra("pay_params", payParams);
startActivity(intent);
}
private String getPayParams() {
// 获取appid、mch_id等信息 String appid = "your_appid";
String mch_id = "your_mch_id";
//生成随机字符串 Random random = new Random();
String nonce_str = URLEncoder.encode(random.nextLong() + "", "UTF-8");
// 构造请求参数 Map
params.put("appid", appid);
params.put("mch_id", mch_id);
params.put("nonce_str", nonce_str);
// 对请求参数进行签名 String sign = genSign(params);
// 构造微信支付参数 Map
payParams.put("sign", sign);
payParams.put("nonce_str", nonce_str);
return JSON.toJSONString(payParams);
}
}
```
以上是开发Android APP微信支付功能的详细描述。需要注意的是,除了需要审核通过的APP应用外,还需要获得微信支付接口权限,然后获取对应的商户号、API密钥等信息。