android短信支付平台,Android微信支付,支付宝支付

微信支付,和支付宝支付流程大体都是一样的

1.向自己的服务器请求订单号

2.获取订单信息后,把信息传给微信或支付宝sdk,掉起支付

3.微信或支付宝sdk返给支付成功或失败的回调

4.若回调成功请求服务器二次确认支付是否成功

一.支付宝

我们先说程序员应该做的事情,后全面再说申请账号,创建应用(产品干的)

1.下载支付宝jar包,目前只提供jar包,放入到我们libs目录

8f9098844149

image.png

下载目录

https://docs.open.alipay.com/54/104509/

8f9098844149

image.png

2.清单配置

android:name="com.alipay.sdk.app.H5PayActivity"

android:configChanges="orientation|keyboardHidden|navigation|screenSize"

android:exported="false"

android:screenOrientation="behind"

android:windowSoftInputMode="adjustResize|stateHidden" />

android:name="com.alipay.sdk.app.H5AuthActivity"

android:configChanges="orientation|keyboardHidden|navigation"

android:exported="false"

android:screenOrientation="behind"

android:windowSoftInputMode="adjustResize|stateHidden" />

3.这是我项目中用到的支付宝调用的utils,支付宝的回调是通过handler完成的,所以要传入一个handler

import android.app.Activity;

import android.os.Handler;

import android.os.Message;

import com.alipay.sdk.app.PayTask;

import java.util.Map;

/**

* Created by Lenovo on 2017/10/19.

*

* by:苏艳

*

* 支付宝支付,集成

*/

public class PayZhifubaoUtils {

Activity mActivity;

Handler mHandler;

private static PayZhifubaoUtils instance;

private PayZhifubaoUtils(Activity mActivity, Handler mHandler) {

this.mActivity = mActivity;

this.mHandler = mHandler;

}

public static PayZhifubaoUtils getInstance(Activity mActivity, Handler mHandler) {

if (instance == null) {

synchronized (PayZhifubaoUtils.class) {

if (instance == null) {

instance = new PayZhifubaoUtils(mActivity,mHandler);

}

}

}

return instance;

}

/**

* 支付宝支付业务 ,服务器调好后这些重要数据都不可以放在客户端

*/

public void payZhibaoMoney(String order_string) {

// EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX); //

// 沙箱环境测试,生产环境是需要注释掉,沙箱指南中居然没有提到

final String orderInfo = order_string;

Runnable payRunnable = new Runnable() {

@Override

public void run() {

PayTask alipay = new PayTask(mActivity);

LogUtils.d("suyan", "=============当前的orderString" + orderInfo);

Map result = alipay.payV2(orderInfo, true);

LogUtils.d("msp", result.toString());

Message msg = new Message();

// msg.what = SDK_PAY_FLAG;

msg.obj = result;

mHandler.sendMessage(msg);

}

};

Thread payThread = new Thread(payRunnable);

payThread.start();

}

}

4.在activity中创建回调的handler,拿到支付状态

Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

PayResult payResult = new PayResult((Map) msg.obj);

String resultInfo = payResult.getResult();

String resultStatus = payResult.getResultStatus();

if (TextUtils.equals(resultStatus, "9000")) {//支付成功,请求接口确定成功

//进行成功的操作(一般请求自己的服务器确定支付成功)

} else if (TextUtils.equals(resultStatus, "6001")) {//支付取消

//进行取消操作

}

} else { //支付失败

//进行失败操作

}

}

LogUtils.d("suyan", "========信息:" + resultInfo + "=======状态码" + resultStatus);

}

};

5.在Activity中请求自己服务器拿到订单信息调用支付宝sdk

if (payZhifubaoUtils == null) {

payZhifubaoUtils = PayZhifubaoUtils.getInstance(PaymentOptionsActivity.this, mHandler);

}

payZhifubaoUtils.payZhibaoMoney(entity.getContent().getKey());

参数entity.getContent().getKey()是服务器给的,也就是说掉起支付宝支付的sdk的是从服务器获取的,不要写在本地,(支付宝和微信支付的参数不太一样,支付宝是把所有的参数都拼接成一个串给sdk,微信是分开给的)

微信支付

微信支付相对于支付宝支付,有点麻烦,还要申请开发者资质,(需要交钱,否则支付跑不通)

1.下载微信的sdk,放入到自己的libs目录

8f9098844149

image.png

8f9098844149

image.png

2.清单配置

android:name=".wxapi.WXPayEntryActivity"

android:exported="true"

android:launchMode="singleTop" />

3.封装微信支付的utils

import com.jyjt.ydyl.application.MyApplication;

import com.tencent.mm.opensdk.modelpay.PayReq;

import com.tencent.mm.opensdk.openapi.IWXAPI;

import com.tencent.mm.opensdk.openapi.WXAPIFactory;

/**

* Created by Lenovo on 2017/10/20.

* by:suyan

* 微信支付开发平台集成 苏艳

*/

public class PayWeixinUtils {

/**

* 微信支付请求

*/

private PayReq req;

/**

* 注册商户号到微信平台

*/

private final IWXAPI msgApi = WXAPIFactory.createWXAPI(MyApplication.getmApplication(), null);

private static PayWeixinUtils instance;

private PayWeixinUtils() {

req = new PayReq();

}

public static PayWeixinUtils getInstance() {

if (instance == null) {

synchronized (PayZhifubaoUtils.class) {

if (instance == null) {

instance = new PayWeixinUtils();

}

}

}

return instance;

}

/**

* 拼接微信请求参数

*/

public void genPayReqAndSend(String APP_ID, String MCH_ID, String prepayId, String packageValue, String nonceStr, String timeStamp, String sign) {

msgApi.registerApp(APP_ID);

req.appId = APP_ID;

req.partnerId = MCH_ID;

req.prepayId = prepayId;

req.packageValue = packageValue;

req.nonceStr = nonceStr;

req.timeStamp = timeStamp;

req.sign = sign;

msgApi.sendReq(req); // 发送请求参数

}

}

微信支付的沙箱环境配置复杂,不在这里说了

4.在activity中,请求自己的服务器,获取到订单信息调用微信sdk

if (mPayWeixinUtils == null) {

mPayWeixinUtils = PayWeixinUtils.getInstance();

}

mPayWeixinUtils.genPayReqAndSend(wechat_key.getAppid(), wechat_key.getPartnerid(), wechat_key.getPrepayid(), wechat_key.getPack_age(), wechat_key.getNoncestr(), wechat_key.getTimestamp(), wechat_key.getSign());

实体类wechat_key是服务器给的,也就是说掉起微信支付的sdk的参数都是从服务器获取的,不要写在本地。

5.微信支付的回调

8f9098844149

image.png

根据文档在项目的根目录下创建wxapi包

在包下创建 WXPayEntryActivity页面

/**

* Created by Lenovo on 2017/10/20.

*

* by:苏艳

* 微信支付回掉页面

*/

public class WXPayEntryActivity extends BaseActivity implements IWXAPIEventHandler {

private IWXAPI api;

@BindView(R.id.bt_back_app)

Button bt_back_app;

String order_id = "";

@BindView(R.id.tv_suc)

TextView tv_suc;

@BindView(R.id.ll_err)

LinearLayout ll_err;

@BindView(R.id.iv_pay_zhifubao)

ImageView iv_pay_zhifubao;

@BindView(R.id.iv_back)

ImageView iv_back;

String urlNow = "";

@Override

public void onReq(BaseReq baseReq) {

}

@Override

public void onResp(BaseResp baseResp) {

if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {

if (baseResp.errCode == 0) {//支付成功

//进行请求自己的服务器,二次确认

}

} else if (baseResp.errCode == -2) {//取消

} else {//失败

}

} else {//失败

}

}

@Override

protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

setIntent(intent);

api.handleIntent(intent, this);

}

@Override

public void showLoading() {

setShowLoading(true);

}

@Override

public void hideLoading() {

setShowLoading(false);

}

@Override

protected PaymentWXpayActivityPresenter loadPresenter() {

return new PaymentWXpayActivityPresenter();

}

@Override

protected void initData() {

//微信相关判断

api = WXAPIFactory.createWXAPI(this, Constans.WEICHAT_APP_ID);

api.handleIntent(getIntent(), this);

}

@Override

protected void initListener() {

}

@Override

protected void initView() {

}

@Override

protected int getLayoutId() {

return R.layout.activity_pay_suc_zhifu_bao;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值