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

不過這個值僅僅只是用戶支付的結果,但不意味着支付到帳,因此實際數據的更新,要取決於服務器

相關文章
相關標籤/搜索