客户端接入(安卓:微信,支付宝,钱包[简配:引导下载钥匙])

安卓客户端接口人: 刘贝liubei@wifi.com

配置 AndroidManifest.xml

必须完成 基本接入步骤(必接) 相应的配置项,除此之外还需要配置

<manifest … >
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />

    <application>
        <activity
            android:name="com.alipay.sdk.app.H5PayActivity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
            android:exported="false"
            android:screenOrientation="behind"
            android:windowSoftInputMode="adjustResize|stateHidden" />
        <activity
            android:name="com.wifi.open.xpay.PayActivity"
            android:theme="@style/Theme_Transparent_Pay" />

        <!-- 必须是应用包名下wxapi包内建同名WXPayEntryActivity, 
             此Activity只需继承自com.wifi.open.xpay.PayResultActivity, 无需其他任何实现-->
        <activity android:name="{应用包名}.wxapi.WXPayEntryActivity"
                android:exported="true"
                android:launchMode="singleTop"/>

            <activity android:name="com.wifi.open.xpay.wallet.WalletPayResultActivity">
            <intent-filter>
                <action android:name="wifi.intent.action.SDK_RESULT" />

                <category android:name="android.intent.category.DEFAULT" />
                <data
                    android:host="wallet"
                    android:path="/WalletPayResultActivity"
                    android:scheme="xpay" />
            </intent-filter>

        </activity></application>    
</manifest>

导入资源文件

  • 将res-pay.zip解压后合并到App工程目录下的res目录中
  • 将pay-libs/alipaySdk-20151215.jar和wechat-sdk-android-without-mta-5.1.6.jar放到工程目录libs下
  • 需要加入 simpleWallet/libs/callwifi-3.0.8.jar

调用收银台界面

//支付时传入payParam JSON字符串
WKXPay.pay(activity, payParam, new XPay.Callback() {
    @Override 
    public void onPayResult (int payStatus, String msg){
        Log.e("XPay", "pay result: " + payStatus + "; msg:" + msg);
    }
});

payParam

payBizData

名字 类型 描述 是否可选
security_type String(6) Sign字段签名方式 ,目前为RSA NO
sign String(128) 商户签名,签名生规则见 签名、加密机制 章节 NO
pay_token String(128) 支付平台支付凭证PayToken,由生成支付交易服务生成,用来验证支付请求的有效性 NO
out_trade_id String(64) 外部订单号,第三方商户自己生成的订单标识,必须要唯一不能重复 NO
transaction_id String(64) 业务流水号,商户应保证唯一;业务流水号,和订单号不一样;只是个唯一的流水号 NO

payBaseData

名字 类型 描述 是否可选
appid String(32) 游戏传 appid NO
out_user_id string(64) 连尚账户相关:union_id...uhid... 二选一可为空
guest_id string(64) 1.CP方给出的:openid ;用openid + unionid 在支付端进行 查询连尚统一账户信息:uhid;2.游客:传给定值:GUESTER 二选一可为空
client_user_id string(64) 1.游客时:游戏cp方必传该字段;2.cp方定义的用户id;其他接入渠道不是必传项 NO
version String(6) 服务版本号,传 2 NO
request_id String(64) 请求信息标识,商户应保持唯一 NO
service_name String(32) 服务名称,跳转支付服务为"paymentAccessRequest" NO
platform String(10) 最终支付来源,即商户使用何种方式调用支付平台支付 H5/Online/Native SDK/Offline/Android/iOS NO
time_stamp String(14) 时间戳(请求时的时间) NO
compress_type String(2) 压缩类型:0(不压缩),1(gzip) NO
language Int 语言 填0=中文 NO
merchant_id String(32) 支付平台商户ID,第三方接入支付平台支付前向支付平台支付申请获得 NO

Example

{
    "payBizData": {
        "pay_token": "",
        "sign": "...",
        "out_trade_id": "",
        "transaction_id": "",
        "security_type": "RSA"
    },
    "payBaseData": {
        "appid": "",
        "out_user_id": "",
        "request_id": "",
        "version": "2",
        "service_name": "paymentAccessRequest",
        "client_user_id": "",
        "platform": "Android",
        "time_stamp": "",
        "language": 0,
        "compress_type": "0",
        "merchant_id": "",
        "guest_id": ""
    }
}

PayStatus

参数值 参数名称 描述
0 PAY_CANCEL 支付取消
1 PAY_SUCCESS 支付成功
-1 PAY_INVALID 支付无效,不需要等待结果,一定是失败的
-2 PAY_ERROR 支付异常,可能支付成功也可能支付失败
2 PAY_LIFE_CYCLE 支付页面生命周期

设置生产\测试环境

XPayConfig.IS_TEST = BuildConfig.DEBUG;

混淆设置

# Alipay
-dontwarn android.net.**
-keep class android.net.SSLCertificateSocketFactory{*;}

-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}
-keep class com.alipay.sdk.app.H5PayCallback {
    <fields>;
    <methods>;
}
-keep class com.alipay.android.phone.mrpc.core.** { *; }
-keep class com.alipay.apmobilesecuritysdk.** { *; }
-keep class com.alipay.mobile.framework.service.annotation.** { *; }
-keep class com.alipay.mobilesecuritysdk.face.** { *; }
-keep class com.alipay.tscenter.biz.rpc.** { *; }
-keep class org.json.alipay.** { *; }
-keep class com.alipay.tscenter.** { *; }
-keep class com.ta.utdid2.** { *;}
-keep class com.ut.device.** { *;}

# Weixin Pay
-keep class com.tencent.mm.opensdk.** {*;}
-keep class com.tencent.mm.sdk.** {*;}

# wifi pay
-keep class callwifi**{*;}
-keep class com.sdpopen.**{*;}