微信支付
1.首先要在微信开放平台上申请支付功能 获取到appid
2. 在自己的项目上添加 微信支付的jar 添加 wxapi文件夹 添加
WXPayEntryActivity
文件(从官方demo 里面 复制就可以)
在AndroidManifest
.xml文件里修改 和 添加权限
3.
WXPayEntryActivity
.java 主要是支付成功的回调
//支付
package com.hongrenguan.yl;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.tencent.mm.sdk.modelpay.PayReq;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;
import okhttp3.Call;
public class MainActivity extends AppCompatActivity {
public IWXAPI wxapi;
public PayReq req;
private String wxUrl="微信支付接口";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wxapi= WXAPIFactory.createWXAPI(this, Constants.APP_ID);
wxapi.registerApp(Constants.APP_ID);
req= new PayReq();
}
/**
* 微信支付
* @param view
*/
public void wxToPay(View view) {
OkHttpUtils.post().url(wxUrl)
.addParams("userid","")
.addParams("roomcar","").build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
System.out.println("-----+失败"+e.toString());
}
@Override
public void onResponse(String s) {
System.out.println("------string"+s);
JSONObject object = JSON.parseObject(s);
String msg = object.getString("msg");
JSONObject payData = JSON.parseObject(msg);
toPay(payData);
}
});
}
/**
* 向微信发起支付
*/
public void toPay(JSONObject jsonObject){
req.appId = jsonObject.getString("appid");
req.partnerId = jsonObject.getString("partnerid");
req.prepayId = jsonObject.getString("prepayid");
req.nonceStr = jsonObject.getString("noncestr");
req.timeStamp = jsonObject.getString("timestamp");
req.packageValue = jsonObject.getString("package");
req.sign = jsonObject.getString("sign");
req.extData = "app data";
//发送支付请求
wxapi.sendReq(req);
}
}
-------------------------------------------------------------------------------------------------------------------
支付宝支付
1. 导入 支付宝 jar 修改 AndroidManifest.xml 文件 添加权限
<activity
android:name=
"com.alipay.sdk.app.H5PayActivity"
android:configChanges=
"orientation|keyboardHidden|navigation|screenSize"
android:exported=
"false"
android:screenOrientation=
"behind"
android:windowSoftInputMode=
"adjustResize|stateHidden"
>
</activity>
<activity
android:name=
"com.alipay.sdk.app.H5AuthActivity"
android:configChanges=
"orientation|keyboardHidden|navigation"
android:exported=
"false"
android:screenOrientation=
"behind"
android:windowSoftInputMode=
"adjustResize|stateHidden"
>
</activity>
//支付回调界面
package com.hongrenguan.yl;
import android.text.TextUtils;
import java.util.Map;
public class PayResult {
private String resultStatus;
private String result;
private String memo;
public PayResult(Map<String, String> rawResult) {
if (rawResult == null) {
return;
}
for (String key : rawResult.keySet()) {
if (TextUtils.equals(key, "resultStatus")) {
resultStatus = rawResult.get(key);
} else if (TextUtils.equals(key, "result")) {
result = rawResult.get(key);
} else if (TextUtils.equals(key, "memo")) {
memo = rawResult.get(key);
}
}
}
@Override
public String toString() {
return "resultStatus={" + resultStatus + "};memo={" + memo
+ "};result={" + result + "}";
}
/**
* @return the resultStatus
*/
public String getResultStatus() {
return resultStatus;
}
/**
* @return the memo
*/
public String getMemo() {
return memo;
}
/**
* @return the result
*/
public String getResult() {
return result;
}
}
------------
/**
* 调用 阿里支付
*
*/
public void aliPay(String aliurl,String name,String nameValue,String money,String moneyValue){
OkHttpUtils.post().url(aliurl)
.addParams(name,nameValue)
.addParams(money,moneyValue)
.build().execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
Toast.makeText(MainActivity.this,"网络异常请稍后重试",Toast.LENGTH_LONG).show();
}
@Override
public void onResponse(String s) {
orderInfo=s;
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask aliPay = new PayTask(MainActivity.this);
Map<String, String> result = aliPay.payV2(orderInfo, true);
System.out.println("------" + result.toString());
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
}
});
}
//-----------------------------------------------
支付回调 方法