订单支付接口

说明:此接口支持二维码,小程序,公众号,吱口令等多场景支付

#

注意-接口调试时候,请一定要注意环境和参数问题,需要区分:富友的测试环境和生产环境
1,富友的接口地址,区分:测试环境(test均为测试)或生产环境
1,富友的测试环境,会提供测试参数及测试秘钥
2,富友的生产环境,需要你们自己申请生产配置(详情请看,接口文档生产参数,按流程操作即可)
3,接口调试时候,请一定要看你们与富友之间接口的加解密流程(接口文档-接口概述-签名算法)
1 请求地址(请求方式:HTTP POST BODY JSON提交(详情请看:案例代码/DEMO下载-如java请打开对应pos文件夹(支持JAVA,PHP,NODE)))
生产地址:[详情请咨询富友对接群]
测试地址:[详情请咨询富友对接群]
2 接口输入
变量名称 字段 长度 说明 是否可必填 样例
商户代码 mchnt_cd MAX(15) 商户在富友入网时生成的商户号 必填 0001000F0040992
报文体 message MAX 报文体密文,详情请看(接口文档-接口概述-签名算法) 必填 OsxV9TKk5NzbD................
2.1 报文体
变量名称 字段 长度 说明 是否可必填 样例
商户号码 mchnt_cd MAX(15) 商户在富友入网时生成的商户号 必填 0001000F0040992
子商户号码 sub_mchnt_cd MAX(15) 商户在富友入网时生成的子商户号 非必填 0001000F0040992
订单日期 order_date MAX(8) 订单日期,由对接商户系统产生,格式:YYYYMMDD 必填 20221110
订单号 order_id MAX(30) 订单号:由商户端生成,条件:唯一,数字和英文组合 必填 2023F1110551545151212
订单金额 order_amt MAX(12) 订单金额:整数,单位:分 必填 10000(分)=100(元)
支付方式 order_pay_type MAX(10) 二维码链接支付[ALIPAY-支付宝,WECHAT-微信];公众号小程序支付[JSAPI-公众号支付,FWC-支付宝小程序,LETPAY-微信小程序];吱口令支付[ZKL-吱口令] ;银联免密支付[UNIONPAY];云微笔笔付[UNIONPAYWX]; 富友聚合码支付[FAPPLET];商户跳转富友小程序支付[TAPPLET] ; 微企付H5支付[WQFPH5]; 微企付小程序支付[WQFPLP]; 拆单支付[SPPAY] 必填 LETPAY
通知地址 back_notify_url MAX(200) 订单支付成功,富友会根据此地址通知对接商户系统(POST) 必填 https://xxxxx.test.com/back.do
商品名称 goods_name MAX(60) 商品名称-大约15个中文 必填 比如:苹果手机
商品描述 goods_detail MAX(200) 商品描述 必填 比如:买了一部苹果手机9000元
终端号 term_id MAX(8) 终端号 非必填 一个终端设备对应一个终端号
微信APPID appid MAX(32) 支付方式为:JSAPI或LETPAY 必填,其他非必填 非必填 微信公众号,微信小程序必填
用户OPENID openid MAX(128) 支付方式为:JSAPI或LETPAY或FWC或ZKL 必填,其他非必填 非必填 微信公众号,微信小程序,支付宝小程序,吱口令 必填
超时时间 order_timeout MAX(4) 按分钟计算,1-360,不传默认120分钟 非必填 比如:1(1分钟)
花呗分期期数 hbfq_num MAX 非必填。花呗分期期数3期6期12期 非必填 只能传3或者6或者12
版本号 ver MAX(5) 版本控制,最新是1.0.1版本 必填 1.0.1
银联签约订单号 sign_order_id MAX(30) 银联小程序签约的订单号。银联免密支付必填。其他支付方式不用填
页面跳转地址 page_notify_url MAX(200) 订单支付成功,有些支付方式。会跳转到商户页面。比如:微信公众号,微企付H5 ,微企付小程序 非必填 https://xxxxx.test.com/back.do或者pages/index/index
分佣参数 bill_params MAX(256) 子商户号收款的钱。分佣给主商户号。分佣参数。 非必填 字符串格式。"{\"allocate_amt\":\"分佣金额\",\"contract_ssn\":\"分佣协议号\"}"
3 接口输出
变量名称 字段 长度 说明 是否可必填 说明
商户代码 mchnt_cd MAX(15) 商户在富友入网时生成的商户号 必填 0001000F0040992
应答码 resp_code MAX(4) 接口通讯应答码 必填 应答码不能当成订单状态码
应答描述 resp_desc MAX(200) 应答描述 必填
报文体 message MAX 报文体(用商户私钥解密,得到明文JSON字符串) 必填 ADp7YzySKDrGI4UG6JcPwMVW3.........
3.1 报文体
变量名称 字段 长度 说明 是否可必填 样例
商户号码 mchnt_cd MAX(15) 同上 必填
订单日期 order_date MAX(8) 同上 必填
订单号 order_id MAX(30) 同上 必填
订单金额 order_amt MAX(12) 同上 必填
支付方式 order_pay_type MAX(10) 同上 必填
订单信息 order_info MAX 不同的支付方式。返回不同的json支付信息。前端用json支付信息。对应的去支付。 必填 字符串
3.2 订单信息(order_info)公众号,小程序返回json字符串格式如下
# {"appId":"wxe2ae77d499999988","timeStamp":"1668466735","signType":"RSA","package":"prepay_id=wx150658551548026d616f3977fc8e8e0000","nonceStr":"40470c46c9fd42da9235ca3c3fd8dff5",
# "paySign":"an5et+twzDnueKq9hQucwf47lMxN4Ui1ZjTOCyrw/5JkIFKlWXFVZqEk9nGM1skIAiCFFISE/g5Zex0eu2Q7zA6vflKKxkMOSL25SwXtzAY+Qh/WHx6OiEQG6ZPkeyPYHVQLP0Vg+ckgbPRc2Oy9SA/FbdT98jxhV2AqY+
# pcAfkMsGpmzltb9Eqy9fP5tWbsNPMEHOwx1Hy861ZK9KfOkkUOKmGjYnglGiE4pPFrhPziehQsYMwL40bh1bMyCUxhQn32wUsczZXqzCB3/NjHQAeztRLCt2Ok0nGkkoA5kHFnfh77iIlrgupGIPyt/ieu2sKuKL/gml46JQzuMAhGRQ=="}
3.3微信小程序支付(支付方式是LETPAY)控件截图
微信官方文档API支付控件文档地址:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5

3.4商户跳转富友小程序支付[TAPPLET] 说明:下单接口返回order_info=32位字符串。就是一个token给前端跳转富友小程序自动拉起支付。
    //1.先调后台接口下单。order_pay_type=TAPPLET (不用传appid和openid)
    //2.返回order_info字段(就是一个32位字符串${token})。给前端跳转拉起支付。以下appid和path和小程序原始id联系富友获取。

    //---------------H5浏览器客户端这样跳转支付---------------------------------
    // t=621f1d71870f4a28557cea15a57da56f 从后台接口获取
    $(document).ready(function() {
        $(".btn").click(function() {
            location.href = 'weixin://dl/business/?appid=wxe2ae77d4cbxxxxxx&path=pages/xxxxxx/xxxxxx&query=t=${token}';
        });
    });

    //-------------------------小程序客户端这样跳转支付---------------------------------
    // 如果要半屏打开的话, 要在你的微信后台开权限【设置-第三方设置-半屏小程序管理-添加, 输入对应的 appId】
    // 建议此处添加节流判断,不然多次点击会连续打开,可能有非预期的 bug 
    wx.openEmbeddedMiniProgram({ 
        appId: 'wxe2ae77d4cbxxxxxx', 
        path: `/pages/xxxxxx/xxxxxx?t=${token}`
    })
    // 支付结果在 app.js 的 onshow 中获取。通过 options.referrerInfo.extraData 获取支付结果
    console.log(options.referrerInfo.extraData);
    // 支付成功 输出 { code: 'success' }  取消 输出 { code: 'cancel' }  失败 输出 { code: 'fail', errmsg: '微信原生错误', errMsg: '微信原生错误' }

    //--------------------------app客户端这样跳转支付-----------------------------------------------
    //参考微信官方文档https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Launching_a_Mini_Program/Android_Development_example.html
    String appId = "wxd930ea5d5axxxxxx"; // 填商户移动应用(App)的 AppId,非小程序的 AppID
    IWXAPI api = WXAPIFactory.createWXAPI(context, appId);
    WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
    req.userName = "gh_b5b3eaxxxxxx"; // 填小程序原始id
    req.path = "pages/xxxxx/xxxxx?t=${token}"; 
    api.sendReq(req);
3.5微信公众号(支付方式是JSAPI)后台获取支付参数后。给前端这样拉起支付。
    //微信公众号如下:
    //参考微信官方文档https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_4.shtml
    function onBridgeReady(){+
        WeixinJSBridge.invoke(
         'getBrandWCPayRequest',{
         "appId":"wxfa089da95020ba1a"   ,
         "timeStamp":"1721724593",
         "nonceStr":"e17b540b65a74ca2802908447397cdb1",
         "package":"prepay_id=wx23164953889663cb015139fe2c06210001",     
         "signType":"RSA",
         "paySign":"MajaY6AEkVslEAcjsRaD3CUSyoiGB0Oyxs7qEL9eKVUKi6KNUSu0EOvYJhXECjEZ8Kj9ode9jsgOkTcCgknwj/Tn0eMZXAsgh+UCEfc04khlS+ph1xrovxPNw+Rod53ndXPtzraOrwRyZbT4EgRO/XWzqebi/bPejKGcXyEOiC9ZaHPhk/zZ+DFITLZMxsEA7tef7L27KTcpAhJFgVYS14VI2n2Ofhz/Z9bc5ae1USAsCmgqdpGuAykBPU4if3N8CMdg75cBU/9G2TzwZ5hAWKnj7teNpuJC+usoX2GUddLVyCsutbPvCiPKUZWJbKB8Fx5xbkuZV2gIwdPFfrukDQ=="
        },                        
        function(res){
        if(res.err_msg == "get_brand_wcpay_request:ok" ){
          // 使用以上方式判断前端返回,微信团队郑重提示:
        //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 form到成功通知
            //支付成功
        }else if(res.err_msg == "get_brand_wcpay_request:cancel" ){
              //用户取消支付
        }else if(res.err_msg == "get_brand_wcpay_request:fail" ){
              //支付失败
        }
    }); 
    }
    if (typeof WeixinJSBridge == "undefined"){
       if( document.addEventListener ){
           document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
       }else if (document.attachEvent){
           document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
           document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
       }
    }else{
       onBridgeReady();
    }

    //支付宝生活号如下:
    //参考支付宝官方文档https://opendocs.alipay.com/mini/05xhsr?pathHash=d4709298&ref=api
    //引用src="https://a.alipayobjects.com/g/h5-lib/alipayjsapi/3.0.6/alipayjsapi.min.js">
    function ready(callback) {
      if (window.AlipayJSBridge) {
        callback && callback();
      } else {
        document.addEventListener('AlipayJSBridgeReady', callback, false);
      }
    }
    ready(function(){
      document.querySelector('.tradeno').addEventListener('click', function() {
        AlipayJSBridge.call("tradePay", {
          tradeNO: "2024041822001456041435701645"
        }, function(result) {
          alert(JSON.stringify(result));
        });
      });
    });     

results matching ""

    No results matching ""