Android 微信支付开发

微信支付开发

  1. 申请APP_ID,添加依赖库

  2. 在app包下新建wxapi包,在包下新建WXPayEntryActivity,继承自任意Activity实现微信支付回调接口。该Activity用以接收支付结果回调

     public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
     
         private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
     
         private IWXAPI api;
         private static final String APP_ID = "your app id";
     
         @Override
         public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.pay_result);
     
             api = WXAPIFactory.createWXAPI(this, APP_ID);
             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.d(TAG, "onPayFinish, errCode = " + resp.errCode);// 支付结果码
         }
     }
    

清单声明此Activity的格式为

    <activity
           android:name=".wxapi.WXPayEntryActivity"
           android:exported="true"
           android:launchMode="singleTop"/>
  1. 统一下单

注:统一下单接口由自己服务器的去请求下单,我们只需要请求自己服务器端定义的下单的接口,从而达到去微信服务器进行下单的操作,并拿到返回的数据

  1. 根据自己服务器定义的下单接口拿到调起微信支付的参数数据,从而调起第三方微信支付,示例代码如下:

     //实例化IWXAPI
     IWXAPI mWxApi = WXAPIFactory.createWXAPI(mContext, WX_APPID, true);
     mWxApi.registerApp(WX_APPID);
    

拿到下单返回数据调用支付接口

            /**
             * 请求自己的App服务器自定义的下单接口,
             * 让自己App服务器那边去WeiXin服务器进行下单
             * 并得到的返回的回调数据
             */
            @Override
            public void onGet(JSONObject jsonObject) {
                if (mWxApi != null) {
                    PayReq req = new PayReq();

                    req.appId = WX_APPID;// 微信开放平台审核通过的应用APPID
                    try {
                        req.partnerId = jsonObject.getString("partnerid");// 微信支付分配的商户号
                        req.prepayId = jsonObject.getString("prepayid");// 预支付订单号,app服务器调用“统一下单”接口获取
                        req.nonceStr = jsonObject.getString("noncestr");// 随机字符串,不长于32位,服务器小哥会给咱生成
                        req.timeStamp = jsonObject.getString("timestamp");// 时间戳,app服务器小哥给出
                        req.packageValue = jsonObject.getString("package");// 固定值Sign=WXPay
                        req.sign = jsonObject.getString("sign");// 签名,服务器小哥给出,他会根据:         https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3指导得到这个
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    mWxApi.sendReq(req);
                    Log.d("发起微信支付申请");
                }

            }

微信支付功能改进

WXPayUtils微信支付工具类

WXPay自定义回调接口类

微信支付官方回调类WXPayEntryActivity

调用:

WXPayUtils.getInstance().doPay(req, new WXPayResultCallBack() {
    @Override
    public void onSuccess() {
        view.paySuccess(orderResponse.getPayFlowNo());
    }

    @Override
    public void onError(int error_code,String erroStr) {
        view.payFail(erroStr);
        if(error_code == WXPayUtils.ERROR_NOT_SUPPORT){
            ToastUtils.showToast(erroStr);
            return;
        }
        ToastUtils.showToast(" errorCode:"+error_code+" erroStr:"+erroStr);
    }

    @Override
    public void onCancel() {
        ToastUtils.showToast("支付取消");
    }
});

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值