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为支付成功

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

  • 相关阅读:
    计算机网络的三种通讯模式(单播,广播,组播)
    java字符串面试题
    java使用纯命令行打包项目
    java字节码的工具(含IDEA插件)
    Spring配置之context:annotation与、component-scan以及annotation-driven
    Java ThreadLocal的使用案例
    对称平方数(to_string函数,stoi函数真香)
    字符串最后一位长度
    缺失的括号
    数三角形
  • 原文地址:https://www.cnblogs.com/unityExplorer/p/8404604.html
Copyright © 2011-2022 走看看