unity探索者之微信支付,非第三方插件

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

相比微信的登陆和分享功能,微信支付sdk的接入显得至关简单,由于大部分的事情须要由服务端或者后台来作java

基本流程以下:json

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

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

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

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

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

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

核心函数只有一个微信支付

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

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

相关文章
相关标签/搜索