支付宝怎么获取_支付宝的id码在哪里看

(2) 2024-06-21 11:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
支付宝怎么获取_支付宝的id码在哪里看,希望能够帮助你!!!。

背景:
  • 最近需要利用支付宝中alipay.trade.create 这个接口,做企业版固定收款码。(我们作为服务商)。
  • 在交易过程中,发现需要上送buyer_id,辗转多处得知,buyer_id就是用户的user_id,需要使用用户信息授权接口https://docs.open.alipay.com/289/。
  • 注意:如果在用户无感的情况下获取user_id,需要将scope参数传入auth_base是静默授权。(开始就是这个错了,导致一直需要用户点击授权)。
      参考:https://openclub.alipay.com/read.php?tid=7078&fid=72&ant_source=zsearch
    下面开始写完整步骤,步骤有点繁琐,逐步耐心地对着沙箱看:
1. 首先申请沙箱环境。
  • 1.1. 进入支付宝开放平台(https://docs.open.alipay.com/200/),点击蓝色沙箱字样后进入登录界面,使用个人账户登录,选择自主研发者,注册后得到沙箱环境的PID(即UID)和APPID。
    支付宝怎么获取_支付宝的id码在哪里看_https://bianchenghao6.com/blog__第1张

  • 1.2按照操作指南,设置公钥。
    支付宝怎么获取_支付宝的id码在哪里看_https://bianchenghao6.com/blog__第2张

  • 1.3 设置授权回调地址。
    支付宝怎么获取_支付宝的id码在哪里看_https://bianchenghao6.com/blog__第3张
    这个地址,只要求配置到域名就行

  • 1.4 授权回调地址作用:
    我们的授权分为2步。总体说 拼接授权链接—>发送接口alipay.system.oauth.token接口

  • 1.4.1 第一步,拼接授权链接
    拼接授权链接(链接中有redirect_url, redirect_uri与应用配置的授权回调地址域名部分必须一致),访问该链接,支付宝会把响应参数auth_code回调跳转到这个redirect_url上。。这一步获取到auth_code,并保存。
    示例授权链接:https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=2016101800718925&scope=auth_base&redirect_uri=https%3A%2F%2Fwww.baidu.com%2F
    注意:

    • a. 沙箱环境,是alipaydev.com 正式的是alipay.com。
    • b. 链接中的scope一定设置为auth_base。才能做到用户无感知,不需要手动点击授权应用。
  • 1.4.2 第二步,利用第一步获取到的auth_code,发送接口alipay.system.oauth.token。既可以得到user_id。代码如下。

//https://openapi.alipaydev.com/gateway.do 。莫要跟正式环境弄混。正式的不带dev //APP_ID位沙箱里面写的appid。APP_PRIVATE_KEY为自己的私钥,用于报文签名. ALIPAY_PUBLIC_KEY 这个是支付宝公钥,用于验签 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); request.setCode("2e4248c2f50b4653bf18ecee3466UC18");//这个就是第一步获取的auth_code request.setGrantType("authorization_code");//这个固定值,参考https://docs.open.alipay.com/api_9/alipay.system.oauth.token try { 
    AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request); System.out.println(oauthTokenResponse.getBody()); System.out.println(oauthTokenResponse.getUserId()); } catch (AlipayApiException e) { 
    //处理异常 e.printStackTrace(); } 

打印如下,返回user_id:79015

{"alipay_system_oauth_token_response":{"access_token":"authbseBa58e6242acbda52X01","alipay_user_id":"79015","expires_in":,"re_expires_in":,"refresh_token":"authbseB14f174b8efa4ffd2A01","user_id":"79015"},"sign":"GgOx60CAy56LvQ8TPnaTZqUZfvgvFnlvwLH2I3XJ6vfygBqbf0gqBkfI1krVZ702XTLRwfExcUW7D6Wlprz/u+AF4YBUhaMhbXXp9D/MOO/Kn7ITti3g3qsltLU2uK3WIDG9Jn86kNUnencrxw2fmBSeCMZv20C6WQhZtc76U7hEEVM+7Qys4glYVtM8pFIq1F4GSP0FY6xXQPYKfBGq5R5VTNLOz4I1t3ynuVPu8iZprCEPRpybNXBLAW3Pny27LWsIbo2wSeCKW6SR/Z8JaIVl+0uHTbm3O2357e01k8aA1dwSfk+0XfZqpHk6bJ2NjD5Yt6QqoA2zatmXMHdfgQ=="} 79015 
  • 1.5 思考,如何做固定收款码?
    分为2步
  • 1.5.1 我们在拼接授权链接时,可以把后面的redirect_url,配置成我们自己的h5支付页面,那么,当用支付宝扫码访问这个链接后,支付宝会自动返回到这个h5支付页面,回调带参数auth_code,此时我们就已经获取到了auth_code。
    注:链接中还有个参数state。需要的业务参数可以统一通过state参数传递。如果该二维码的对应商户号。当然也可以拼在redirect_url后面。
  • 1.5.2接着在当前h5页面填写金额,然后发后台交易,可以在后台连续发2步接口,先发上面的alipay.system.oauth.token接口,利用上一步的auth_code获取到user_id,即buyer_id;再发下单接口alipay.trade.create。 返回trade_no
  • 1.6 利用1.5接口返回的trade_no,唤醒支付宝。唤醒js使用支付宝自带的方法。https://docs.open.alipay.com/common/
    https://openclub.alipay.com/read.php?tid=248&fid=56&ant_source=zsearch
    https://myjsapi.alipay.com/alipayjsapi/
    为方便阅读,这里写了个现成的。只需要把tradeNo代入。支付宝内扫码访问该页面,页面内即可唤醒支付宝支付
<html> <head> <script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script> <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.min.js"></script> <script type="text/javascript"> // 调试时可以通过在页面定义一个元素,打印信息,使用alert方法不够优雅 function log(obj) { 
      $("#result").append(obj).append(" ").append("<br />"); } $(document).ready(function(){ 
      // 页面载入完成后即唤起收银台 // 此处${tradeNO}为模板语言语法,实际调用样例类似为tradePpay("000752") tradePay("059043");//这里就是tradeNo }); // 由于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> </head> <body> </body> </html> 

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复