支付宝支付接入+微信支付
来源:互联网 发布:linux安装.xz 编辑:程序博客网 时间:2024/04/29 19:09
去年写的支付宝支付,今年项目里需要又接入了一遍,发现开发文档更新有点慢啊。自己写个demo吧,省的下次又忘记了怎么抄。
下载sdk导入
支付宝:
微信:
//微信支付compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
AndroidManifest
<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" />
<!-- ====================== 支付宝支付 ============================================== --> <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> <!-- ====================== 支付宝支付 end =========================================== --> <!-- ====================== 微信支付 ======================================== --> <activity android:name=".wxapi.WXPayEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:launchMode="singleTop" android:screenOrientation="portrait"/> <!-- ====================== 微信 end ======================================== -->
OrderPayActivity
public class OrderPayActivity extends BaseActivity { @Bind(R.id.headLeftImg) ImageView headLeftImg; @Bind(R.id.headTitleView) TextView headTitleView; @Bind(R.id.tv_name) TextView tvName; @Bind(R.id.tv_price) TextView tvPrice; @Bind(R.id.iv_weixin) ImageView ivWeixin; @Bind(R.id.rl_weixin) RelativeLayout rlWeixin; @Bind(R.id.iv_alipay) ImageView ivAlipay; @Bind(R.id.rl_alipay) RelativeLayout rlAlipay; private static final int SDK_PAY_FLAG = 1; private String paytype;//alipay:支付宝 tenpay:微信 private String name; private String totalprice; private String orderno; private String orderid; MyOderBean.DataBean orderBean; @Override public int getLayoutId() { return R.layout.activity_orderpay; } @Override public void initView(Bundle savedInstanceState) { headLeftImg.setVisibility(View.VISIBLE); headTitleView.setText("订单支付"); } @Override public void initData() { // clientId= SpUtil.getSpString(Constant.SpConstants.USER_INFO,Constant.SpConstants.ClientId,""); orderBean = (MyOderBean.DataBean) getIntent().getSerializableExtra("orderBean"); if (orderBean != null) { name = orderBean.getItemName(); totalprice = orderBean.getTotalPrice() + ""; orderid = orderBean.getOrderId() + ""; orderno = orderBean.getOrderNum(); } else { name = getIntent().getStringExtra("name"); totalprice = getIntent().getStringExtra("totalprice"); orderno = getIntent().getStringExtra("orderno"); orderid = getIntent().getStringExtra("orderid"); } } @Override public void ctlDV() { tvName.setText(name); tvPrice.setText("¥" + totalprice); } @Override public boolean haveEventBus() { return false; } boolean isweixinChose = false; boolean isalipayChose = false; @OnClick({R.id.headLeftImg, R.id.rl_weixin, R.id.rl_alipay, R.id.gopay}) public void onClick(View view) { switch (view.getId()) { case R.id.headLeftImg: finish(); break; case R.id.rl_weixin: if (!isweixinChose) { ivWeixin.setImageResource(R.mipmap.chose); isweixinChose = true; isalipayChose = false; ivAlipay.setImageResource(R.mipmap.nochose); } else { ivWeixin.setImageResource(R.mipmap.nochose); isweixinChose = false; } break; case R.id.rl_alipay: if (!isalipayChose) { ivAlipay.setImageResource(R.mipmap.chose); isalipayChose = true; isweixinChose = false; ivWeixin.setImageResource(R.mipmap.nochose); } else { ivAlipay.setImageResource(R.mipmap.nochose); isalipayChose = false; } break; case R.id.gopay: //去支付 if (isalipayChose) { alipay(); } else if (isweixinChose) { tenpay(); } break; } } private void alipay() { showProgressDialog(); ApiWrapper apiWrapper = new ApiWrapper(); apiWrapper.pay("alipay", orderno, "0.01", orderid).enqueue(new Callback<msg_d_s_Bean>() { @Override public void onResponse(Call<msg_d_s_Bean> call, Response<msg_d_s_Bean> response) { dismissProgressDialog(); msg_d_s_Bean msgDSBean = response.body(); if (msgDSBean.isSuccess()) { payAli(msgDSBean.getData()); } else { ToastUtils.showToast(mContext, msgDSBean.getMessage()); } } @Override public void onFailure(Call<msg_d_s_Bean> call, Throwable t) { dismissProgressDialog(); } }); } private void tenpay() { showProgressDialog(); ApiWrapper apiWrapper = new ApiWrapper(); apiWrapper.tenpay("tenpay", orderno, "0.01", orderid).enqueue(new Callback<WxpayBean>() { @Override public void onResponse(Call<WxpayBean> call, Response<WxpayBean> response) { dismissProgressDialog(); WxpayBean wxpayBean = response.body(); if (wxpayBean.isSuccess() && wxpayBean.getData() != null) { WxpayBean.DataBean dataBean = wxpayBean.getData(); wxPay(dataBean); } else { ToastUtils.showToast(mContext, wxpayBean.getMessage()); } } @Override public void onFailure(Call<WxpayBean> call, Throwable t) { dismissProgressDialog(); } }); } //支付宝支付 private void payAli(final String orderInfo) { Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask(OrderPayActivity.this); Map<String, String> map = alipay.payV2(orderInfo, true); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = map; payhandler.sendMessage(msg); } }; // 必须异步调用 Thread payThread = new Thread(payRunnable); payThread.start(); } /** * 支付宝支付结果 */ @SuppressLint("HandlerLeak") private Handler payhandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); PayResult payResult = new PayResult((Map<String, String>) msg.obj); /** 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。 */ String resultInfo = payResult.getResult();// 同步返回需要验证的信息 String resultStatus = payResult.getResultStatus(); Log.i("TAG", "=====handleMessage: " + resultInfo + "====" + resultStatus); // 判断resultStatus 为9000则代表支付成功 if (TextUtils.equals(resultStatus, "9000")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。 Toast.makeText(mContext, "支付成功", Toast.LENGTH_SHORT).show(); Intent intent1 = new Intent(mContext, MyOderActivity.class); startActivity(intent1); finish(); } else { // 该笔订单真实的支付结果,需要依赖服务端的异步通知。 //Toast.makeText(mContext, "支付失败..", Toast.LENGTH_SHORT).show(); } } }; //微信支付 private IWXAPI api; private void wxPay(final WxpayBean.DataBean orderInfo) { // spUtil.putStringValue("app_id", orderInfo.getAppid()); SpUtil.saveSpString(Constant.SpConstants.USER_INFO, "app_id", orderInfo.getAppid()); api = WXAPIFactory.createWXAPI(this, null); api.registerApp(orderInfo.getAppid()); new Thread(new Runnable() { @Override public void run() { PayReq req = new PayReq(); req.partnerId = orderInfo.getPartnerid(); req.sign = orderInfo.getSign(); req.prepayId = orderInfo.getPrepayid(); req.appId = orderInfo.getAppid(); req.timeStamp = orderInfo.getTimestamp(); req.packageValue = orderInfo.getPackageX(); req.nonceStr = orderInfo.getNoncestr(); api.sendReq(req); } }).start(); }}
PayResult
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; }}
微信支付回调
package com.espar.www.esparclientios.wxapi;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.Toast;import com.espar.www.esparclientios.activity.mine.MyOderActivity;import com.espar.www.esparclientios.constants.Constant;import com.espar.www.esparclientios.utils.SpUtil;import com.tencent.mm.opensdk.modelbase.BaseReq;import com.tencent.mm.opensdk.modelbase.BaseResp;import com.tencent.mm.opensdk.openapi.IWXAPI;import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;import com.tencent.mm.opensdk.openapi.WXAPIFactory;public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler { private Context mContext = this; private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("TAG", "onCreate:==== 回调"); String app_id = SpUtil.getSpString(Constant.SpConstants.USER_INFO,"app_id",""); api = WXAPIFactory.createWXAPI(this, app_id, false); api.handleIntent(getIntent(), this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } @Override public void onReq(BaseReq req) { } @Override public void onResp(BaseResp resp) { Log.i("TAG", "onResp:============ " + resp.errCode); if (resp.errCode == 0) {//成功 Intent intent1 = new Intent(mContext, MyOderActivity.class); startActivity(intent1); finish(); } else { boolean b = resp.checkArgs(); String errStr = resp.errStr; String openId = resp.openId; Log.i("TAG", "onResp: " + errStr + "+" + openId + "+" + resp.toString()); finish(); } } /** * 显示一个Toast信息 * * @param content */ private Toast mToast = null; public void showToast(String content) { if (mToast == null) { mToast = Toast.makeText(this, content, Toast.LENGTH_SHORT); } else { mToast.setText(content); } mToast.show(); }}
阅读全文
0 0
- 支付宝支付接入+微信支付
- Android 接入微信支付宝支付
- Android 接入微信支付宝支付
- Android 接入微信支付宝支付
- Android 接入微信支付宝支付
- Android 接入微信支付宝支付
- Android 接入微信支付宝支付
- Android 接入微信支付宝支付
- Android 微信支付和支付宝支付 快速接入
- Android 微信支付和支付宝支付 快速接入
- Android 微信支付和支付宝支付 快速接入
- Android接入微信支付和支付宝支付(1)
- Android接入微信支付和支付宝支付(2)
- Android 支付宝支付、微信支付、银联支付 整合第三方支付接入方法
- ReactNative接入微信API 接入支付宝支付
- 微信支付商户-APP支付接入
- 支付宝-银联-微信支付接入总结
- Android 支付宝以及微信支付快速接入流程
- push代码:Updates were rejected because the tip of your current branch is behind
- 抽象类和接口
- 自定义的签到View
- Linux驱动之多路监听
- 二进制中1的个数
- 支付宝支付接入+微信支付
- 文章标题
- Android_非UI:AsyncTask
- poj-2051-Argus
- Acticle 22:从指向(this)看JavaScript之一:this的几种基本指向
- C++对象内存布局
- FreeBSD下的VLAN配置
- 波的一种分类:机械波和电磁波
- [eclipse]Syntax error on token ";",{ expected after this token