zoukankan      html  css  js  c++  java
  • unity探索者之微信支付,非第三方插件

    版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/8404604.html

    相比微信的登录和分享功能,微信支付sdk的接入显得相当简单,因为大部分的事情需要由服务端或者后台来做

    基本流程如下:

      1、客户端向服务端发起购买商品请求

      2、服务端计算实际支付金额,向微信请求订单

      3、微信返回预支付订单信息,服务端将该信息传给客户端

      4、客户端解析预支付订单信息json,向微信发起支付请求

      5、支付成功后,微信向服务端预设的url和客户端返回支付结果

      6、服务端刷新用户商品数据,并向客户端推送支付结果

    核心函数只有一个

        public static void SendPay(String appId, String partnerId, String prepayId, String nonceStr, String timeStamp, String packageValue, String sign) {
            PayReq req = new PayReq();
            req.appId = appId;
            req.partnerId = partnerId;
            req.prepayId = prepayId;
            req.nonceStr = nonceStr;
            req.timeStamp = timeStamp;
            req.packageValue = packageValue;
            req.sign = sign;
            api.sendReq(req);
        }

    回调的处理和分享类似,java类文件名为WXPayEntryActivity,该类继承Activity并实现IWXAPIEventHandler,同样需要放在wxapi文件夹中

    public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler   {
        private IWXAPI api;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if(api == null) {
                api = WXAPIFactory.createWXAPI(this, "APP_ID");
                api.registerApp("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) {
            if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
                UnityPlayer.UnitySendMessage("ThirdPartySdkManager","WechatPayCallback", String.valueOf(resp.errCode));
                finish();
            }
        }
    }

    支付返回的errCode为int型:

      -2对应取消支付

      -1对应支付失败

      0为支付成功

    不过这个值仅仅只是用户支付的结果,但不意味着支付到账,所以实际数据的更新,要取决于服务器

  • 相关阅读:
    maven报错【Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of】
    Srping框架中使用@query注解实现复杂查询
    FreeMarker自定义TemplateDirectiveModel
    SpringMVC和Freemarker整合,带自定义标签的使用方法
    关于FreeMarker自定义TemplateDirectiveModel
    滑块验证码【插件待研究】
    注册页面 注册码【欠缺较多 待完善】
    IO流-文件的写入和读取
    Date、String、Calendar相互转化
    Runtime类
  • 原文地址:https://www.cnblogs.com/unityExplorer/p/8404604.html
Copyright © 2011-2022 走看看