支付宝生活号接口

1、修订记录

修订 日期 说明 作者
0.1 2018/01/24 新接口参数定义 郭勇
0.2 2021/04/13 增加子商户ip submer_ip
0.3 2021/10/16 删除出参payer_bank_account_no
0.4 2021/12/27 支持国密 王晶
0.5 2021/12/28 新增支付宝上送门店信息参数(store_id,alipay_store_id,operator_id、terminal_id) 林竞
0.6 2022/01/11 新增支付宝花呗分期专属字段 business_params 刘雷
0.7 2022/01/25 limit_credit_pay 新增花呗相关操作值:2禁用花呗,3禁用花呗分期,4禁用所有信用支付类型 刘雷
0.8 2022/02/17 seller_name修改为非必填 王晶
0.9 2022/03/17 version为3.9时 新增支付成功异步通知营销相关字段 刘雷
1.0 2022/03/18 新增银联259号文条码改造相关字段 刘雷
1.1 2022/07/05 新增实名认证信息 刘雷
1.2 2022/07/27 新增付款方gps信息和付款方ip入参 王晶
1.3 2022/12/14 新增支付宝业务拓展参数extend_params_channel 刘军
1.4 2023/01/09 新增花呗分期期数支持3期,新增分期类型fq_type 林竞
1.5 2023/01/09 新增同步响应参数发往渠道流水号channel_send_sn,渠道返回流水号channel_recv_sn 林竞
1.6 2024/01/12 terminal_ip字段长度限制由8改为64位 康少雄
1.7 2024/11/04 新增请求参数merchant_marketing_info商户自主营销信息 郑世康

2、业务说明

(1)场景说明

帮助商户代创建和代运营生活号。在商户完成对开发者的授权后,开发者即默认添加为商户生活号的操作员,即可通过接口或生活号后台帮商户维护生活号。

(2)接口说明

1、调用此接口前,请确保已开通“生活号第三方应用“

2、代创建提交且支付宝审核通过后,下一步则需商户做代创建的授权确认,商户可登录商家中心b.alipay.com查看待办事项,并确认授权

3、请求地址

环境 HTTPS请求地址
正式环境 https://qrcode.ysepay.com/gateway.do

4、请求参数说明

4.1公共请求参数

参数 类型(字节长度) 必填 参数说明
method String(128) Y 接口名称 固定值 ysepay.online.alijsapi.pay
partner_id String(20) Y 在银盛支付开设的服务商商户号,请联系客户经理提供
timestamp String(19) Y 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" 2014-07-24 03:07:50
charset String(10) Y 商户网站使用的编码格式,如UTF-8、GBK、GB2312等。默认值 UTF-8
sign_type String(10) Y 报文签名算法,RSA、SM
sign String(256) Y 签名字符串,再用Base64编码
notify_url String(190) Y 交易成功异步通知到商户的后台地址,http路径支持多个url进行异步通知,多个url用分隔符“,”分开,格式如:url1,url2,url3,支持TLS1.0、TLS1.1、TLS1.2
version String(3) Y 接口版本3.0/3.4/3.5 当前版本3.5
biz_content String Y 业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递

4.2 业务请求参数

业务参数(参数名biz_content,值为一个json格式对象,下面列表描述json对象的值):

参数 类型(字节长度) 必填 参数说明
out_trade_no String(1,32) Y 商户系统生成的订单号,须保证在商户端不重复,生成规则前8位必须为交易日期,如20220525,范围跨度支持包含当天在内的前后一天,且只能由大小写英文字母、数字、下划线及横杠组成,示例值:202205256843192280647118
shopdate String(8,8) N 商户系统的交易发生日期格式yyyyMMdd 20180525
subject String(1,250) Y 订单备注
total_amount Number(10,2) Y 该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。Number(10,2)指10位长度,2位精度 ,100
currency String(3) N 默认CNY(人民币)
seller_id String(1,20) Y 收款商户号
seller_name String(1,50) N 收款商户号对应商户名称
timeout_express String(2,6) Y 设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭,取值范围:1m~15d。m-分钟,h-小时,d-天。该参数数值不接受小数点,如1.5h,可转换为90m。注意:设置了未付款交易超时时间的情况下,若我司在限定时间内没有收到成功支付通知,则会关闭交易,关闭后该笔交易若付款方支付成功的情况下,会自动原路退款至付款方。96h
extend_params String(500) N 业务扩展参数,一个json字符串,order_mode订单模式,暂时可选的值为:00 代表购物车模式;seller_list参与分账的收款方信息数组,每个元素包含seller_id收款方银盛支付用户号。实时分账业务,order_mode和seller_list均不能为空,order_mode的值必须为00。示例值:样例9.1
extra_common_param String(2000) N 公用回传参数
business_code String(1,10) Y 业务代码 ,请联系银盛客户经理获取。注意:业务代码非固定值,不同到账方式需要传不同的业务代码
buyer_logon_id String(100) N 该字段于2023-9-1已不支持使用,请使用buyer_id对接,如有疑问请咨询银盛技术支持!
buyer_id String(100) N 买家支付宝用户ID,和buyer_logon_id不能同时为空。buyer_id获取方法:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.8ujLD6&treeId=115&articleId=104114&docType=1通过网页授权获取用户信息,同步响应结果中的user_id对应文档中的buyer_id。
sub_merchant SubMerchantInfo N 二级商户信息, Json格式,暂包括merName、merShortName、merAddr、mobileNo、merNo、category、mrchntCertId 如果有值则二级商户信息都不能为空,如果没值则都不能有值 示例值:样例9.2
consignee_info ConsigeeInfo N 收货人信息json格式 示例值:样例9.3
limit_credit_pay String(2) N 是否限制信用卡。值为1表示禁用信用卡,0或为空表示不限制,2禁用花呗,3禁用花呗分期,4禁用所有信用支付类型
hb_fq_num String(2) N 花呗分期期数,仅在支付宝支付的时候生效,目前期数支持3,6,12
fq_type String(2) N 分期类型,值为00表示花呗分期,值01表示信用卡分期。不填默认为花呗分期
allow_repeat_pay String(2) N 是否允许多次支付,Y:允许;N:不允许(参数为空或者Y时,默认该笔订单交易状态非成功状态时,支持选择其他支付方式继续付款, 当为N时表示该笔订单交易状态为失败状态时,不支持选择其他支付方式继续付款)
fail_notify_url String(190) N 失败通知地址(交易状态为失败时,银盛支付服务器主动通知商户网站里指定的页面http路径,支持多个url进行异步通知,多个url用分隔符“,”分开,格式如:url1,url2,url3)注:只有不允许重复支付的交易才会通知
aliGoodsDetails List N 支付宝营销单品详情列表
submer_ip String(16) N 子商户ip 112.112.112.112
store_id String(32) N 商户门店编号
alipay_store_id String(32) N 支付宝的店铺编号
operator_id String(28) N 商户操作员编号
terminal_id String(32) N 商户机具终端编号
business_params String N 支付宝花呗分期专属字段
union_qrcode_259_params UnionQrCodeBaseRequest N 银联259号文条码改造字段,json格式
buyer_realname_info buyer_realname_info N 实名认证信息 :有证件类型、证件姓名、证件号,非必填,如果三个字段一个填写就都必填,要么就都不上送
gps GpsInformation N 付款方gps信息 ,结构见4.2.6
payer_ip String N 付款方ip
extend_params_channel String N 支付宝业务拓展参数json格式 示例值:样例9.4
merchant_marketing_info String N 商户自主营销信息,json格式。coupon_id优惠券id、marketing_source_id营销来源id,示例值:merchant_marketing_info: {"coupon_id": "231", "marketing_source_id": "23232" }

4.2.1 二级商户 SubMerchantInfo

参数 类型(字节长度) 必填 参数说明
merName String(50) N 二级商户名称,支持25个中文
merShortName String(50) N 二级商户简称,支持25个中文
merAddr String(200) N 二级商户地址,支持100个中文
telephone String(13) N 固定电话/手机号码二选一
merNo String(32) N 二级商户编号
category String(20) N 类目,按附件内容输入类目编号
mrchntCertId String(15,18) N 身份证号,只支持身份证格式(如果签名方式为RSA,则用DES加密,密钥为商户号前8位,不足8位在商户号前补空格;如果签名方式为SM,则用SM加密)

4.2.2 收货人信息 ConsigeeInfo

参数 类型(字节长度) 必填 参数说明
consigneeName String(150) N 收货人姓名
consigneeAddr String(200) N 收货地址
transportationInfo String(200) N 物流配送信息(物流名称+订单号)
commodityName String(150) N 商品名称
commodityNumber String(10) N 商品数量,

4.2.3 支付宝营销 AliGoodsDetail

参数 类型(字节长度) 必填 参数说明
goods_id String(32) Y 商品编号
alipay_goods_id String(32) N 支付宝定义的统一商品编号
goods_name String(256) Y 营销单品名称
quantity String(10) Y 营销单品数量 不超过10位的正整数
price String(12) Y 营销单品单价 [0,999999999] 左闭右闭区间,小数点后最多允许两位
goods_category String(24) N 营销单品类目
categories_tree String(128) N 营销单品类目树
body String(1000) N 营销单品描述
show_url String(400) N 营销单品展示地址

4.2.4 银联259号文条码改造字段 UnionQrCodeBaseRequest

参数 类型(字节长度) 必填 参数说明
terminal_no String(8) Y 终端号,收单机构为商户终端分配的唯一编号
terminal_type String(2) Y 终端类型(线下交易场景必填):01 自动柜员机(含 ATM 和 CDM)和多媒体自助终端、02 传统 POS、03 mPOS、04 智能 POS、05 II 型固定电话、06 云闪付终端、07 保留使用、08 手机 POS、09 刷脸付终端、10 条码支付受理终端、11 辅助受理终端、12 行业终端(公交、地铁用于指定行业的终端)、13 MIS 终端
serial_num String(50) O 终端序列号,备注:终端类型为 02;03;04;05;06;08;09或10时,必须填写终端序列号
network_license String(5) N 银行卡受理终端产品入网认证编号,备注:终端类型为 02;03;04;05;06;08;09或10时,终端设备如果有相关参数,建议填写
app_version String(5) N 终端应用程序的版本号,备注:终端类型为 02;03;04;05;06;08;09或10时,建议填写。终端应用程序的版本号,应用程序变更应保证版本号不重复。
terminal_gps String(32) O 交易设备位置信息,格式:纬度/经度,东经为正数,西经为负数;北纬为正数,南纬为负数,线下交易场景、terminal_ip和terminal_gps 二者选其一 必填
terminal_ip String(64) O 商户端终端设备 IP 地址。注:如经、维度信息未上送,该字段必送。
encryp_rand_num String(10) N 加密随机因子
secret_text String(16) N 密文数据

4.2.5 购买人实名认证信息 buyer_realname_info

参数 类型(字节长度) 必填 参数说明
id_no String Y 证件号,只支持身份证格式(如果签名方式为RSA,则用DES加密,密钥为商户号前8位,不足8位在商户号前补空格;如果签名方式为SM,则用SM加密)
id_type String Y 证件类型,只支持身份证,枚举值:1
id_name String Y 证件姓名

4.2.6 付款方GPS信息 GpsInformation

参数 类型 必填 参数说明
latitude Double N 纬度,范围-90~90
longitude Double N 经度,范围-180~180

5、响应参数说明

银盛支付对商户的请求数据处理完成后,会将处理的结果数据同步回执给商户。

请注意:银盛后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。

5.1 公共响应参数

参数 类型(字节长度) 必填 参数说明
sign String Y 签名字符串,Base64编码
ysepay_online_alijsapi_pay_response String Y 业务响应参数的集合,最大长度不限

5.2 业务响应参数

参数 类型(字节长度) 必填 参数说明
out_trade_no String(32) Y 商户唯一订单号 2018012500001
trade_no String(30) N 银盛支付交易流水号
trade_status String Y 交易状态,成功的值: TRADE_SUCCESS 示例值:附录10.1
total_amount Number Y 该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。100
currency String(3) N 交易币种 默认CNY
extra_common_param String N 商户自定义数据域,原样返回
jsapi_pay_info String Y Json格式字符串,作用于原生态的js支付时的参数
channel_send_sn String(50) N 发往渠道流水号
channel_recv_sn String(50) N 渠道返回流水号

6、服务器交易成功异步通知参数说明

银盛支付对商户的请求数据处理完成后,会将处理的结果数据通过服务器主动通知的方式通知给商户网站。这些处理结果数据就是服务器异步通知参数。

请注意:银盛后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。

参数 类型(字节长度) 必填 参数说明
sign_type String Y 签名类型,交易请求时传入的签名类型RSA/SM
sign String Y 签名字符串,Base64编码
notify_type String Y 通知类型默认 directpay.status.sync
notify_time String(19) Y 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"
out_trade_no String(32) Y 商户生成的订单号
total_amount Number N 该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。
trade_no String(30) N 银盛支付交易流水号
trade_status String Y 交易目前所处的状态。成功状态的值: TRADE_SUCCESS\ TRADE_CLOSED 示例值:附录10.1
account_date String(10) N 入账的时间,格式"yyyyMMdd"
payer_fee Number N 该笔订单的付款方手续费(参考),单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。
payee_fee Number N 该笔订单的收款方手续费(参考),单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。
partner_fee Number N 该笔订单的合作方手续费(参考),单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。
fee Number N 该笔订单的手续费总和(参考),单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。
channel_send_sn String(50) N 发往渠道流水号
paygate_no String(16) N 支付网关编号
channel_recv_sn String(50) N 渠道返回流水号
card_type String N 卡类型credit:信用卡debit:借记卡
buyer_user_id String N 支付宝用户Uid
buyer_logon_id String N 支付宝账户
extra_common_param String N 公用回传参数 商户自定义数据域,原样返回
alipay_trx_resp_coupon_info String N 支付宝优惠信息,版本号3.5及以上支持
ali_merchant_amount String N 支付宝商家优惠金额,版本号3.5及以上支持
ali_platform_dis_amount String N 支付宝平台优惠金额,版本号3.5及以上支持
ali_goods_details String N ListJSON字符串 支付宝营销单品信息,版本3.5及以上支持
preferential_amount Number N 营销优惠金额 版本3.9及以支持 示例值:样例1.2
preferential_fee Number N 营销优惠手续费 版本3.9及以支持 示例值:样例0.02
marketing_rule_json String N 营销规则信息json 版本3.9及以支持

6.1 支付宝营销 GoodsDetail

参数 类型(字节长度) 必填 参数说明
id String(64) Y 记录编号,唯一标识
tradesn String(30) Y 银盛交易流水
seq Integer(4) Y 银盛交易流水序列号
createtime Date Y 记录创建时间
wxpayGoodsId String(32) N 渠道单品标识
goodsName String(256) N 营销单品名称
goodsId String(32) Y 营销单品标识
goodsRemark String(256) N 营销单品备注
quantity NUMBER(10) N 营销单品数量
price NUMBER(15,4) N 营销单品价格
type String(32) N 记录类型 “WXREQ”:微信单品营销请求;“WXRESP”:微信单品营销渠道响应;“ALIREQ”:支付宝单品营销请求;“ALIRESP”:支付宝单品营销渠道响应
discountAmount NUMBER(15,4) Y 抵扣金额
goodsDetailJson String(3000) N type为WXREQ/ALIREQ请求类型时,为原始传入的单品营销参数JSON字符串。type为WXRESP/ALIRESP时为渠道返回的单品营销响应原始信息JSON字符串

7、交易失败异步通知

银盛支付对商户的请求数据处理完成后,会将处理的结果数据通过服务器主动通知的方式通知给商户网站。这些处理结果数据就是服务器异步通知参数。

请注意:银盛后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。

参数 类型(字节长度) 必填 参数说明
sign_type String Y 签名类型 RSA、SM
sign String Y 签名字符串,Base64编码
notify_type String Y 通知类型 默认 failpay.status.sync
notify_time String(19) Y 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" 2014-07-24 03:07:50
out_trade_no String(32) Y 商户唯一订单号 6843192280647118
total_amount Number N 该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。
trade_no String(30) N 银盛交易流水号。
trade_status String Y 交易目前所处的状态。成功状态的值: TRADE_SUCCESS\ TRADE_CLOSED 示例值:附录10.1
result_note String N 交易结果描述,当交易失败时,保存错误描述

8、Jsapi支付

//下单完成,拿到支付串后进行jsapi支付,并唤起支付控件
<p id="result">result: </p>
<script type="application/javascript">
    // 调试时可以通过在页面定义一个元素,打印信息,使用alert方法不够优雅
    function log(obj) {
        $("#result").append(obj).append(" ").append("<br />");
    }

    $(document).ready(function(){
        // 页面载入完成后即唤起收银台
        // 此处${tradeNO}为模板语言语法,实际调用样例类似为
         tradePay("2016072621001004200000000752")
        //这个值即取自上面jsapi_pay_info参数里的tradeNO的值
         tradePay("${tradeNO}"); 

         // 点击payButton按钮后唤起收银台
         $("#payButton").click(function() {
            tradePay("${tradeNO}");
         });

         // 通过jsapi关闭当前窗口,仅供参考,更多jsapi请访问
         // /aod/54/104510
         $("#closeButton").click(function() {
            AlipayJSBridge.call('closeWebview');
         });
     });

    // 由于js的载入是异步的,所以可以通过该方法,当AlipayJSBridgeReady事件发生后,再执行callback方法
     function ready(callback) {
         if (window.AlipayJSBridge) {
             callback && callback();
         } else {
             document.addEventListener('AlipayJSBridgeReady', callback, false);
         }
     }

     function tradePay(tradeNO) {
        ready(function(){
             // 通过传入交易号唤起快捷调用方式(注意tradeNO大小写严格)
             AlipayJSBridge.call("tradePay", {tradeNO: tradeNO
             }, function (data) {
                 log(JSON.stringify(data));
                 if ("9000" == data.resultCode) {
                     log("支付成功");
                 }
             });
        });
    }
</script>
result.resultCode  
支付结果:
9000∶ 订单支付成功;
8000∶正在处理中;
4000∶ 订单支付失败∶
6001∶用户中途取消;
6002∶网络连接出错;
99∶用户点击忘记密码快捷界面退出(onlyiOS sice9.5)

9、样例

9.1 业务扩展 extend_params

{
    "cartTYpe": "00",
    "order_mode": "01",
    "seller_list": [{
        "seller_id": "123"
    }, {
        "seller_id": "456"
    }]
}

9.2 二级商户 sub_merchant

{
    "merName": "二级商户名称",
    "merShortName": "二级商户简称",
    "merAddr": "二级商户地址",
    "mobileNo": "二级商户服务电话",
    "merNo": "二级商户编号",
    "category": "类目",
    "mrchntCertId": "身份证号"
}

9.3 收货人 consignee_info

{
    "consigneeName": "收货人姓名",
    "consigneeAddr": "收货地址",
    "transportationInfo": "物流配送信息",
    "commodityName": "商品名称",
    "commodityNumber": "商品数量"
}

9.4 支付宝业务拓展参数extend_params_channel

{
    "food_order_type": "qr_order"
}

9.5 SDK调用示例

  • 银盛将与服务端交互的接口封装在开发工具包(SDK)中,开发者无需自行实现同服务端交互的复杂逻辑,直接将SDK导入自己的工程后,通过sdk示例代码实现同银盛服务端的交互。
    @Test
    public void alipayTest() throws Exception {
        /**1、组装调用支付宝生活服务窗支付接口 ScanCodePayApi.alipay需要的参数*/
        OnlineReqDataVo reqDataVo = new OnlineReqDataVo();
        //请求路径,具体见文档
        reqDataVo.setReqUrl("https://qrcode.ysepay.com/gateway.do");

        //商户在银盛支付平台开设的用户号[商户号]
        reqDataVo.setPartnerId("hyfz_test2");

        //银盛支付服务器主动通知商户网站里指定的页面http路径,支持多个url进行异步通知,多个url用分隔符“,”分开,格式如:url1,url2,url3
        reqDataVo.setNotifyUrl("http://127.0.0.1");

        //客户端私钥证书路径: 证书是在入网流程中自己申请的
        reqDataVo.setPrivateKeyFilePath("D:/cer/hyfz_test2.pfx");

        //客户端私钥密钥: 私钥密钥在入网流程中自己申请私钥证书时填写的
        reqDataVo.setPrivateKeyPassword("123456");

        //银盛公钥证书路径: 证书入网申请后随邮件发放
        reqDataVo.setYsPublicKeyFilePath("D:/cer/businessgate.cer");

        //交易类型,说明:1或者空:即时到账,2:担保交易
        reqDataVo.setTranType("1");
        /** -----------组装业务参数,并设置到入参里面reqDataVo.setParamData(bizContentMap): 业务参数说明详细见接口文档 -------------*/
        Map<String, Object> bizContent = new HashMap<>();
        //商户生成的订单号,生成规则前8位必须为交易日期,如20180525,范围跨度支持包含当天在内的前后一天,且只能由大小写英文字母、数字、下划线及横杠组成
        bizContent.put("out_trade_no", "201805256843192280647118");
        //商户日期(该参数做交易与查询时需要一致) 该日期需在当日的前后一天时间范围之内
        bizContent.put("shopdate", "20211013");
        //商品的标题/交易标题/订单标题/订单关键字等。该参数最长为250个汉字
        bizContent.put("subject", "支付宝生活服务窗支付接口测试");
        //该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。Number(10,2)指10位长度,2位精度
        bizContent.put("total_amount", "2.99");
        //支持币种:CNY(人民币)、HKD(港币)、USD(美元)、EUR(欧元)、JPY(日元)
        //注:不填默认是CNY(人民币),如是非跨境商户,币种不能填HKD(港币)、USD(美元)、EUR(欧元)、JPY(日元)中的任意一种外币币种
        bizContent.put("currency", "CNY");
        //收款方银盛支付用户号
        bizContent.put("seller_id", "hyfz_test2");
        //收款方银盛支付客户名
        bizContent.put("seller_name", "银盛支付服务股份有限公司行业发展部");
        //设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。
        //(需申请业务权限,权限未开通情况下该参数不生效,默认未付款交易的超时时间为7d)取值范围:1m~15d。m-分钟,h-小时,d-天。该参数数值不接受小数点,如1.5h,可转换为90m。
        //注意:设置了未付款交易超时时间的情况下,若我司在限定时间内没有收到成功支付通知,则会关闭交易,关闭后该笔交易若付款方支付成功的情况下,会自动原路退款至付款方
        bizContent.put("timeout_express","96h");
        //业务扩展参数,一个json字符串,order_mode订单模式,暂时可选的值为:00 代表购物车模式;seller_list参与分账的收款方信息数组,每个元素包含seller_id收款方银盛支付用户号。
        //实时分账业务,order_mode和seller_list均不能为空,order_mode的值必须为00
        bizContent.put("extend_params","{\"cartTYpe\": \"00\",\"order_mode\": \"01\",\"seller_list\": [{\"seller_id\": \"123\"},{\"seller_id\": \"456\"}]}");
        //公用回传参数
        bizContent.put("extra_common_param", "extra_common_param");
        //业务代码
        bizContent.put("business_code", "00510080");
        //买家支付宝账号,和buger_id不能同时为空(可空)
        bizContent.put("buyer_logon_id", "233423423");
        //买家支付宝用户ID,和buyer_logon_id不能同时为空。
        //buyer_id获取方法:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.8ujLD6&treeId=115&articleId=104114&docType=1通过网页授权获取用户信息,同步响应结果中的user_id对应文档中的buyer_id
        bizContent.put("buyer_id", "23342342233");


        //=================二级商户信息, Json格式=================
        //如果有值则二级商户信息都不能为空,如果没值则都不能有值
        JSONObject subMerchantInfoJson = new JSONObject();
        subMerchantInfoJson.put("merName","");//二级商户名称,支持25个中文
        subMerchantInfoJson.put("merShortName","");//二级商户简称,支持25个中文
        subMerchantInfoJson.put("merAddr","");//二级商户地址,支持100个中文
        subMerchantInfoJson.put("telephone","");//固定电话/手机号码二选一
        subMerchantInfoJson.put("merNo","");//二级商户编号
        subMerchantInfoJson.put("category","");//类目,按附件内容输入类目编号
        subMerchantInfoJson.put("mrchntCertId","");//身份证号,只支持身份证格式(DES加密,密钥为商户号前8位,不足8位在商户号前补空格)
        //二级商户json格式
        bizContent.put("sub_merchant",subMerchantInfoJson);


        //=================收货人信息json格式(可空)=================
        JSONObject consigneeInfoJson = new JSONObject();
        subMerchantInfoJson.put("consigneeName","");//收货人姓名
        subMerchantInfoJson.put("consigneeAddr","");//收货地址
        subMerchantInfoJson.put("transportationInfo","");//物流配送信息(物流名称+订单号)
        subMerchantInfoJson.put("commodityName","");//商品名称
        subMerchantInfoJson.put("commodityNumber","");//商品数量
        //收货人信息json格式
        bizContent.put("consignee_info",consigneeInfoJson);


        //订单所属省编号(省市编号必须同时为空或者同时非空、并且需要符合层级关系)(特殊可空)
        bizContent.put("province",null);
        //订单所属市编号(省市编号必须同时为空或者同时非空、并且需要符合层级关系)(特殊可空)
        bizContent.put("city",null);
        //是否限制信用卡。值为1表示禁用信用卡,0或为空表示不限制
        bizContent.put("limit_credit_pay","0");
        //花呗分期期数,仅在支付宝支付的时候生效,目前期数支持6,12
        bizContent.put("hb_fq_num","6");
        //是否允许多次支付,Y:允许;N:不允许(参数为空或者Y时,默认该笔订单交易状态非成功状态时,支持选择其他支付方式继续付款,适用于收银台模式。 当为N时表示该笔订单交易状态为失败状态时,不支持选择其他支付方式继续付款,收银台模式下建议该参数为空)
        bizContent.put("allow_repeat_pay","N");
        //失败通知地址(交易状态为失败时,银盛支付服务器主动通知商户网站里指定的页面http路径,支持多个url进行异步通知,多个url用分隔符“,”分开,格式如:url1,url2,url3)注:只有不允许重复支付的交易才会通知
        bizContent.put("fail_notify_url","http://127.0.0.1");


        //================支付宝营销单品详情列表(可空    )=================
        JSONArray aliGoodsDetails = new JSONArray();
        //================支付宝营销单品详情aliGoodsDetail=================
        JSONObject aliGoodsDetail = new JSONObject();
        aliGoodsDetail.put("goods_id","Shouji_abcef_001-001");//营销单品编号
        aliGoodsDetail.put("alipay_goods_id","1001");//营销单品支付宝侧编号
        aliGoodsDetail.put("goods_name","手机");//营销单品名称
        aliGoodsDetail.put("quantity",1000);//数量,只能是正整数
        aliGoodsDetail.put("price",100.20);//[0,999999999] 左闭右闭区间,小数点后最多允许两位
        aliGoodsDetail.put("goods_category","");//营销单品类目
        aliGoodsDetail.put("categories_tree","");//营销单品类目树
        aliGoodsDetail.put("body","");//营销单品描述
        aliGoodsDetail.put("show_url","");//营销单品展示地址
        aliGoodsDetails.add(aliGoodsDetail);
        //支付宝营销单品详情列表
        bizContent.put("aliGoodsDetails",aliGoodsDetails);

        bizContent.put("submer_ip","112.112.112.112");//子商户ip(可空    )

        //设置业务参数到biz_content
        reqDataVo.setParamData(bizContent);

        /** 2、调用ScanCodePayApi.alipay方法 */
        String result = null;
        try{
            System.out.println("支付宝生活服务窗支付接口-调用sdk接口alipay请求入参为:"+ JSONObject.toJSONString(reqDataVo));
            result = ScanCodePayApi.alipay(reqDataVo);
            //根据返回结果处理自己的业务逻辑,result内容详见接口文档
        }catch (Exception e){
            System.out.println("支付宝生活服务窗支付接口-失败:"+e.getCause().getMessage());
            e.printStackTrace();
        }
        System.out.println("支付宝生活服务窗支付接口-调用sdk接口alipay返回结果为:"+result);
    }

9.5 API接口代码示例

  • 需要开发者自己封装调用逻辑,实现调用银盛api接口同银盛服务端交互,该示例没有加签验签及发送http请求代码,需自行下载demo查看。
public static void main(String[] args) {
        Map<String,String> mapData = new HashMap<>();
        //组装公共参数
        mapData.put("method", MethodConstants.Order.ALIJSAPI_PAY);
        mapData.put("partner_id","hyfz_test2");//发起方商户号
        mapData.put("timestamp", DateUtil.getDateNow());
        mapData.put("charset","utf-8");
        mapData.put("sign_type","RSA");//签名类型
        mapData.put("notify_url","http://127.0.0.1");//异步通知地址,需要外网可访问,接受到通知后需要返回success
        mapData.put("version","3.0");

        //组装业务参数
        JSONObject json = new JSONObject();
        json.put("out_trade_no", SerialGenerator.getOrder());//商户的订单号
        json.put("shopdate",DateUtil.getDateNowYmd());
        json.put("subject","支付宝生活服务窗支付测试");
        json.put("timeout_express","96h");//超时时间,需要申请权限后,该参数才会生效,否则默认7d,超出时间后,银盛会关闭渠道方的预支付订单。
        json.put("total_amount","0.01");
        json.put("currency","CNY");
        json.put("seller_id","hyfz_test2");//收款方
        json.put("seller_name","银盛支付服务股份有限公司行业发展部");
        json.put("business_code","01000010");//发起方商户的业务代码
        json.put("buyer_logon_id","19967567859");

        mapData.put("biz_content",json.toString());
        //对参数进行签名
        try{
            log.info("待签名参数:"+ CommonUtil.mapToString(mapData));
            String sign = YsPaySignUtils.sign(mapData);
            mapData.put("sign",sign);
        } catch (Exception e){
            log.info("签名失败:"+e);
        }
        //请求二维码支付接口
        log.info("请求参数:"+CommonUtil.mapToString(mapData));
        String result = HttpRequest.sendPost("https://qrcode.ysepay.com/gateway.do",CommonUtil.mapToString(mapData));
        log.info("接口回执:"+result);
        if(StringUtil.isBlank(result) ||null == result){
            log.info("接口返回结果为空!");
        }
        //对接口回执进行验签
        JSONObject resultJson = JSONObject.parseObject(result, Feature.OrderedField);
        String resultContent = resultJson.getString("ysepay_online_alijsapi_pay_response");
        String resultSign = resultJson.getString("sign");
        boolean resultVerify = false;
        try{
            resultVerify = YsPaySignUtils.resultVerify1(resultContent,resultSign);

        } catch (Exception e){
            log.info("验签异常:"+e);
        }
        if(!resultVerify){
            log.info("接口验签失败");
        }
    }

10.附录

10.1 交易状态

枚举名称 枚举说明
WAIT_BUYER_PAY 交易创建,等待买家付款。
TRADE_CLOSED 在指定时间段内未支付时关闭的交易;客户主动关闭订单。
TRADE_SUCCESS 交易成功,且可对该交易做操作,如:多级分润、退款等。
TRADE_PART_REFUND 部分退款成功。
TRADE_ALL_REFUND 全部退款成功。
TRADE_FAILD 交易失败

10.2 支付网关编号

支付渠道代码 支付渠道
900000001 银联-支付宝
9000010 银联-微信
10810001 银联扫码-银联云闪付
10010001 网联-微信
10000012 网联-支付宝

results matching ""

    No results matching ""