版權聲明:本文爲原創文章,轉載請聲明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爲支付成功
不過這個值僅僅只是用戶支付的結果,但不意味着支付到帳,因此實際數據的更新,要取決於服務器