**版权声明:**本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/8405044.html
支付宝的sdk接入方式和微信支付比较类似,大部分的工作也基本是由服务端去做,客户端只负责支付部分
调用支付宝支付的java核心代码其实只有一行:alipay.payV2()(如果不需要支付的结果的话。。。)
1public class AliPay { 2 private static final int SDK_PAY_FLAG = 1; 3 4 @SuppressLint("HandlerLeak") 5 private static Handler mHandler = new Handler() { 6 @SuppressWarnings("unused") 7 public void handleMessage(Message msg) { 8 switch (msg.what) { 9 case SDK_PAY_FLAG: { 10 @SuppressWarnings("unchecked") 11 PayResult payResult = new PayResult((Map<String, String>) msg.obj); 12 /** 13 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。 14 */ 15 String resultInfo = payResult.getResult();// 同步返回需要验证的信息 16 String resultStatus = payResult.getResultStatus(); 17 // 判断resultStatus 为9000则代表支付成功 18 if (TextUtils.equals(resultStatus, "9000")) { 19 UnityPlayer.UnitySendMessage("ThirdPartySdkManager", "AliPayCallback", "true"); 20 } else { 21 UnityPlayer.UnitySendMessage("ThirdPartySdkManager", "AliPayCallback", "false"); 22 } 23 break; 24 } 25 default: 26 break; 27 } 28 } 29 }; 30 31 //收到来自服务端返回的orderInfo后,向支付宝发起支付 32 public static void SendPay(final String orderInfo,final Context context) { 33 Runnable payRunnable = new Runnable() { 34 @Override 35 public void run() { 36 PayTask alipay = new PayTask((Activity) context); 37 Map<String, String> result = alipay.payV2(orderInfo, true); 38 39 Message msg = new Message(); 40 msg.what = SDK_PAY_FLAG; 41 msg.obj = result; 42 mHandler.sendMessage(msg); 43 } 44 }; 45 46 Thread payThread = new Thread(payRunnable); 47 payThread.start(); 48 } 49}
值得一提的是,相对于微信支付,支付宝支付除了需要订单信息外,还需要传入context参数,context就是当前的Activity
下面附上c#调用代码
1public void SendAliPay(string info) 2{ 3 AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 4 AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); 5 AndroidJavaObject utils = new AndroidJavaObject("com.my.ugcf.alipay.AliPay"); 6 utils.CallStatic("SendPay", info, currentActivity); 7}
恩。。。写到这里,突然发现这几个sdk的ios版忘了写了。。。后面补上。。。