支付宝Unity

说明:支付宝Android的SDK接入只有一个接口,付费。

1. Android代码的修改:最新版的SDK封装的比较彻底,把demo中的代码,Keys.java中的代码相应的参数填写上去。把getNewOrderInfo里面需要的支付参数填写上去,就ok了。

2. 参考这个链接 http://book.51cto.com/art/201308/406554.htm 配置Android里面的class.jar。eclipse里面调试运行ok之后,用控制台定位到bin/classes目录下,执行jar -cvf class.jar *, class.jar 就是导出的jar包的名字,可以随意命名。

3. 导入到Unity:把Demo中的资源文件和jar包等copy到Unity中, AndroidManifest.xml也得copy,要保证那个继承UnityPlayer的的Activity在android.intent.action.MAIN的配置里。
大体复制的部分包括:assets,bin,libs,res,AndroidManifest等。

4. 在Unity中调用测试Android的代码
 if(GUI.Button(new Rect(100,100, 100, 100), "点击支付"))
  {
   using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
   {
    using (AndroidJavaObject curActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
    {
     //curActivity.Call("Test");
     curActivity.Call("aliPay", new object[] { Random.Range(1, 1000000000).ToString(), 0.01f, "*****放假的撒", "威武"});

    }
   }
  }

5. 由于新版的支付宝SDK需要引入一个android的libary,因此如果直接打包的话,会有问题,必须从Unity中先打包成eclipse工程,然后把demo中的alipay_lib关联上去,关联方法右键Property,选择Library,add。


6. 由于gen文件夹下的类库可能与之前导出的jar包冲突,因此需要修改一下这个包的名字,在主配置文件里


7. 打包游戏,导入相应的签名文件,就ok了。

### Unity 集成支付宝支付 SDK 接入指南 在Unity中集成支付宝支付功能,主要涉及Android和iOS平台的原生SDK接入、Unity与原生代码之间的桥接通信、以及支付流程的实现。以下是一个详细的接入方案。 #### 1. 支付宝开发者账号准备 首先需要注册支付宝开放平台账号,并完成企业认证[^1]。接着创建应用并获取相应的AppID和密钥信息,同时配置支付权限和回调通知地址等信息。 #### 2. SDK资源准备 从支付宝官方下载适用于Android和iOS的支付SDK包: - **Android**:使用Alipay SDK for Android,通常包含`.aar`文件或源码形式的Demo工程。 - **iOS**:使用Alipay SDK for iOS,通常为`.framework`格式。 确保将SDK正确导入到Unity项目的原生插件目录中(如`Assets/Plugins/Android` 和 `Assets/Plugins/iOS`)。 #### 3. Android平台接入 在Android端,需通过Unity的Java调用接口与支付宝SDK交互。以下是关键步骤: - 在Unity中编写Android Java接口类,用于接收Unity传入的订单信息并启动支付宝支付流程。 - 将支付宝SDK的`.aar`文件放入Unity项目的`Plugins/Android`目录,并配置`AndroidManifest.xml`添加必要的权限和Activity声明。 - 示例调用Unity C#代码如下: ```csharp public void StartAliPay(string orderInfo) { #if UNITY_ANDROID using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity")) { using (var pluginClass = new AndroidJavaClass("com.example.alipay.AliPayPlugin")) { pluginClass.CallStatic("startPayment", currentActivity, orderInfo); } } } #endif } ``` 对应的Java插件类示例: ```java public class AliPayPlugin { public static void startPayment(final Activity activity, final String orderInfo) { // 调用支付宝SDK进行支付 PayTask payTask = new PayTask(activity); Map<String, String> result = payTask.payV2(orderInfo, true); // 处理结果并回调回Unity } } ``` #### 4. iOS平台接入 iOS平台需要使用Objective-C或Swift编写插件,并通过Unity的`DllImport("__Internal")`机制调用: - 导入AlipaySDK.framework至Xcode项目。 - 编写桥接类处理支付请求和回调: ```objective-c #import <AlipaySDK/AlipaySDK.h> extern "C" { void _StartAliPay(const char* orderInfo) { [[AlipaySDK defaultService] payOrder:std::string(orderInfo) fromScheme:@"your_scheme" callback:^(NSDictionary *resultDic) { // 解析支付结果并回调Unity }]; } } ``` 在Unity中调用该函数: ```csharp [DllImport("__Internal")] private static extern void _StartAliPay(string orderInfo); public void StartAliPay(string orderInfo) { _StartAliPay(orderInfo); } ``` #### 5. 支付回调处理 无论Android还是iOS,都需要监听支付结果并将其返回给Unity进行逻辑处理: - Android可通过UnitySendMessage方式传递结果字符串。 - iOS可通过UnitySendMessage或委托回调方式实现。 例如,在Android Java插件中发送消息回Unity: ```java UnityPlayer.UnitySendMessage("PaymentManager", "OnAliPayResult", resultJson); ``` 在Unity中监听: ```csharp public void OnAliPayResult(string resultJson) { // 解析JSON结果 Debug.Log("支付结果:" + resultJson); } ``` #### 6. 测试与合规注意事项 - 使用沙箱环境测试支付流程是否正常。 - 确保签名验证、订单安全生成等工作在服务器端完成,避免客户端伪造。 - 注意不同国家地区的支付限制和合规要求。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值