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


版權聲明:本文為原創文章,轉載請聲明http://www.cnblogs.com/unityExplorer/p/8405044.html

支付寶的sdk接入方式和微信支付比較類似,大部分的工作也基本是由服務端去做,客戶端只負責支付部分

調用支付寶支付的java核心代碼其實只有一行:alipay.payV2()(如果不需要支付的結果的話。。。)

public class AliPay {
    private static final int SDK_PAY_FLAG = 1;

    @SuppressLint("HandlerLeak")
    private static Handler mHandler = new Handler() {
        @SuppressWarnings("unused")
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SDK_PAY_FLAG: {
                    @SuppressWarnings("unchecked")
                    PayResult payResult = new PayResult((Map<String, String>) msg.obj);
                    /**
                     對於支付結果,請商戶依賴服務端的異步通知結果。同步通知結果,僅作為支付結束的通知。
                     */
                    String resultInfo = payResult.getResult();// 同步返回需要驗證的信息
                    String resultStatus = payResult.getResultStatus();
                    // 判斷resultStatus 為9000則代表支付成功
                    if (TextUtils.equals(resultStatus, "9000")) {
                        UnityPlayer.UnitySendMessage("ThirdPartySdkManager", "AliPayCallback", "true");
                    } else {
                        UnityPlayer.UnitySendMessage("ThirdPartySdkManager", "AliPayCallback", "false");
                    }
                    break;
                }
                default:
                    break;
            }
        }
    };

    //收到來自服務端返回的orderInfo后,向支付寶發起支付
    public static void SendPay(final String orderInfo,final Context context) {
        Runnable payRunnable = new Runnable() {
            @Override
            public void run() {
                PayTask alipay = new PayTask((Activity) context);
                Map<String, String> result = alipay.payV2(orderInfo, true);

                Message msg = new Message();
                msg.what = SDK_PAY_FLAG;
                msg.obj = result;
                mHandler.sendMessage(msg);
            }
        };

        Thread payThread = new Thread(payRunnable);
        payThread.start();
    }
}

值得一提的是,相對於微信支付,支付寶支付除了需要訂單信息外,還需要傳入context參數,context就是當前的Activity

下面附上c#調用代碼

public void SendAliPay(string info)
{
    AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
    AndroidJavaObject utils = new AndroidJavaObject("com.my.ugcf.alipay.AliPay");
    utils.CallStatic("SendPay", info, currentActivity);
}

恩。。。寫到這里,突然發現這幾個sdk的ios版忘了寫了。。。后面補上。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM