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

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

  • 相关阅读:
    【转】随机函数的rand、srand用法
    realloc,malloc,calloc函数的区别
    c语言中time相关函数
    C语言strdup函数
    c语言strtod()函数的用法
    (转)从拜占庭将军问题谈谈为什么pow是目前最好的共识机制
    Linux命令行编辑快捷键
    少走弯路的10条忠告
    centos6下升级git版本的操作记录
    (转)Ctrl+H 浪潮Raid配置文档
  • 原文地址:https://www.cnblogs.com/unityExplorer/p/8404604.html
Copyright © 2011-2022 走看看