No description, website, or topics provided.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Demo 上传demo代码到master Sep 12, 2018
.gitignore 忽略不需要提交的文件 Apr 3, 2018
PaySDK.unitypackage update Sep 12, 2018
README.md 提交package和readme Sep 4, 2018

README.md

Unity For PaySDK 快速集成文档

下载并导入PaySDK

下载Unity-For-PaySDK, 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,如下图

image.png

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"]
    }
}
  1. 添加系统PassKit.frame, 并添加白名单,名单如下 image.png

Android配置及注意事项(iOS开发者可忽略)

  1. 配置AndroidManifest

增加权限

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" />
    <uses-permission android:name="android.permission.NFC" />
    <uses-feature android:name="android.hardware.nfc.hce"/>

设置AppKey和AppSecret(在Application标签里)

        <meta-data android:name="Mob-AppKey" android:value="您的AppKey"/>
        <meta-data android:name="Mob-AppSecret" android:value="您的AppSecret"/>

初始化,设置Application为MobApplication。

    <application
        android:name="com.mob.MobApplication" />

增加支付渠道的配置信息

        <activity
            android:name="com.mob.paysdk.PaymentActivity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
            android:exported="true">
        </activity>

        <!-- 支付宝 -->
        <activity
            android:name="com.alipay.sdk.app.H5PayActivity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
            android:exported="false"
            android:screenOrientation="behind" >
        </activity>
        <activity
            android:name="com.alipay.sdk.auth.AuthActivity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
            android:exported="false"
            android:screenOrientation="behind" >
        </activity>

        <!-- 微信支付 -->
        <activity-alias
            android:name="${applicationId}.wxapi.WXPayEntryActivity"
            tools:node="replace"
            android:exported="true"
            android:targetActivity="com.mob.paysdk.PaymentActivity" />

        <activity
            android:name="com.mob.tools.MobUIShell"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:windowSoftInputMode="stateHidden|adjustResize" />
            
        <!-- 银联支付 -->
        <uses-library
            android:name="org.simalliance.openmobileapi"
            android:required="false" />

        <activity
            android:name="com.unionpay.uppay.PayActivity"
            android:configChanges="orientation|keyboardHidden"
            android:excludeFromRecents="true"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustResize" />

        <activity
            android:name="com.unionpay.UPPayWapActivity"
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustResize" />

如果您不太熟悉如何配置AndroidManifest文件,可查看我们的Demo里的配置AndroidManifest配置。或者参考Unity 文档

  1. 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);
  1. 发起支付
PaySDK.payWithOrder (order, PaySDKChannel.PaySDKChannelAlipay, this);
  1. 支付回调
//支付结束 回调结果
	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;
		}
	}