# PaySDK-for-Unity3D
**Repository Path**: f1516tiger/PaySDK-for-Unity3D
## Basic Information
- **Project Name**: PaySDK-for-Unity3D
- **Description**: PaySDK-for-Unity3D
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-02-12
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Unity For PaySDK 快速集成文档
## 下载并导入PaySDK
下载[Unity-For-PaySDK](https://github.com/MobClub/PaySDK-for-Unity3D.git), clone整个repo可能会很慢,浪费您的时间,最好加上depth=1参数。
```
git clone -b master --depth=1 https://github.com/MobClub/PaySDK-for-Unity3D.git
```
导入PaySDK.unitypackage到您的项目中。注意该操作可能会覆盖您原来已经存在的文件!
## 配置应用信息
#### iOS配置及注意事项(Android开发者可忽略)
1.配置AppKey和AppSecret,如下图

2.预配置Scheme 找到Unity3D-For-PaySDK - Assets - Plugins - iOS - PaySDK - Editor - PaySDK.mobpds,对其中的CFBundleURLSchemes进行设定,将其设置为您的 URI Scheme (注意不带'://')
```
{
"folders": ["/SDK"],
"buildSettings": {
"OTHER_LDFLAGS" : ["-lz","-ObjC","-lsqlite3"]
}
"URLSchemes" : {
"CFBundleURLSchemes" : ["wxc551587ec5a55ceb","ap2017073107971452","upmoba6b6c6d6"]
}
}
```
3. 添加系统PassKit.frame, 并添加白名单,名单如下

#### Android配置及注意事项(iOS开发者可忽略)
1. 配置AndroidManifest
增加权限
```
```
设置AppKey和AppSecret(在Application标签里)
```
```
初始化,设置Application为MobApplication。
```
```
增加支付渠道的配置信息
```
```
如果您不太熟悉如何配置AndroidManifest文件,可查看我们的Demo里的配置[AndroidManifest配置](https://github.com/MobClub/PaySDK-for-Unity3D/blob/SourceCode/Unity3D-For-PaySDK/Assets/Plugins/Android/AndroidManifest.xml)。或者参考[Unity 文档](https://docs.unity3d.com/Manual/android-manifest.html)
2. PaySDK的是java语言开发的(PaySDK.jar), 这里在jar的基础上做了桥接, 桥接代码是开源的,您可以在Android-Unity-Bridge/UnityBridge目录下看到。UnityBridge项目最终生成PaySDK-Unity.jar和libpaysdk_bridge.so两个文件。涉及本地代码部分PaySDK.unitypackage里面只有armeabi、armeabi-v7a、x86平台的, 除此之外您还需要其它平台,可以自行编译。
## 添加代码(伪代码)
1. 创建订单
```
PaySDKOrder order = new PaySDKOrder ();
order.orderId = DateTime.Now.ToFileTime().ToString();
order.amount = Convert.ToInt64(amount);
order.subject = "支付测试";
order.userId = "1234567890";
order.nickName = "nickName";
order.body = "body";
order.des = "des";
order.metadata = "{\n\t\"meta\": \"meta\"\n}";
PaySDK.payWithOrder (order, PaySDKChannel.PaySDKChannelWechat, this);
```
2. 发起支付
```
PaySDK.payWithOrder (order, PaySDKChannel.PaySDKChannelAlipay, this);
```
3. 支付回调
```
//支付结束 回调结果
public void onPayEnd (PaySDKStatus status, string ticketId, long errorCode, string errorDes) {
Debug.Log ("Status:" + status + " ticketId:" + ticketId + " errorCode:" + errorCode + "errorDes:" + errorDes);
if (status == PaySDKStatus.PaySDKStatusCancel) {
result = "Pay Cancel";
} else if (status == PaySDKStatus.PaySDKStatusSuccess) {
result = "Pay Success";
} else if (status == PaySDKStatus.PaySDKStatusFail) {
result = "Pay Fail Error:" + errorCode + " Des:" + errorDes;
} else {
result = "Pay Result Unknown Error:" + errorCode + " Des:" + errorDes;
}
}
```