支付寶小程序:代開發模式接入獲取會員手機號

小編:啊南 56閱讀 2020.12.28

簡介

獲取會員手機號旨在幫助商家便捷獲取用戶聯系方式,在獲得用戶充分授權和認可,且充分保護用戶隱私的前提下快速創建會員體系或開展其他業務。更多能力的介紹,請參見?獲取會員手機號。

準入條件
  • 開發者需充分尊重用戶個人隱私,妥善使用手機號碼的使用范圍,不得隨意打擾用戶。若發現信息存在超出約定范圍使用或者不合理使用等情況,平臺有權永久收回接口權限。

  • 為進一步規約和確認安全資質,開發者需加入?螞蟻數據安全與隱私保障聯盟,并嚴格遵守《支付寶開放平臺用戶信息處理規范》、《開放平臺第三方應用安全開發指南》。

收費模式

免費。

接入流程

代開手機號.png

重要說明:

  • 代開發模式需 ISV 引導商戶 入駐開放平臺 并 創建小程序 應用。

  • ISV 需在第三方應用 功能管理 > 能力列表 頁面添加 獲取會員手機號 和 應用AES密鑰管理 功能,再向商家發起 ?代開發授權。

  • ISV 代商家申請用戶信息前,需代商家 設置 AES 密鑰設置小程序主營類目。

  • ISV 在小程序端調用 my.getPhoneNumber 代商家獲取用戶手機號信息時需傳入 isvAppID 參數(即第三方應用 APPID)。

  • 為進一步規約和確認安全資質,開發者需加入 螞蟻數據安全與隱私保障聯盟,并嚴格遵守《支付寶開放平臺用戶信息處理規范》、《開放平臺第三方應用安全開發指南》。

第一步:創建應用商戶創建小程序應用

代開發模式中 ISV 需引導商戶或商戶自主完成 入駐開放平臺 并在開放平臺中 創建小程序 應用。

服務商創建第三方應用
  1. ISV 需根據 創建第三方應用 指引 創建、配置并綁定第三方應用,完成后可在第三方應用 功能管理 > 能力列表 頁面添加 獲取會員手機號 和 應用AES密鑰管理 功能。

  2. ISV 需為第三方應用配置 接口內容加密方式(即 AES 密鑰)。Image 1.png

  1. 添加功能并完成配置第三方應用后,ISV 可 發起代開發授權 獲取商戶應用授權。

    image

  2. 完成授權后,ISV 調用接口 alipay.open.app.members.create (需傳入授權 app_auth_token),添加 ISV 側開發人員的支付寶賬號為商家小程序應用的開發者。

第二步:代商家配置應用

ISV 可通過第三方應用自調用(即不傳 app_auth_token)方式代商家設置其小程序應用 接口內容加密方式(即 AES 密鑰),用于后續解密手機號。

配置 AES 密鑰設置 AES 密鑰

若商家應用未設置 接口內容加密方式(即 AES 密鑰)或 AES 密鑰需要更新,ISV 可調用 alipay.open.auth.app.aes.set (授權應用 AES 密鑰設置接口)代商家為其小程序設置或者更新 AES 密鑰。詳情參見 設置/更新 AES 密鑰。

注意:

  • ISV 在構造 alipayClient 時,構造方法中需傳入 encryptKey 和 encryptType,encryptKey 為當前三方應用的 AES 密鑰,encryptType 為固定值 AES。

  • 無需傳入 app_auth_token(第三方應用授權令牌)。

  • ISV 需謹慎設置或更新商家應用密鑰;若商家應用已上線,更新商家應用的密鑰可能會影響商家的線上業務。

示例代碼(以 Java 語言為例):

// encryptKey填入當前第三方應用的AES密鑰,encryptType為"AES" AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","第三方應用APPID","第三方應用 private_key","json","GBK","alipay_public_key","RSA2","encryptKey","encryptType");AlipayOpenAuthAppAesSetRequest request = new AlipayOpenAuthAppAesSetRequest();request.setBizContent ("{"   +       //為商家小程序APPID        ""merchant_app_id":"20191223601234500""   +     "}");AlipayOpenAuthAppAesSetResponse response = alipayClient.execute(request);if (response.isSuccess ()){      System.out.println ( response.getAesKey());      System.out.println ("調用成功");}  else  {      System.out.println ("調用失敗");}
查詢 AES 密鑰

若商家小程序已設置 接口內容加密方式(即 AES 密鑰),ISV 可調用 alipay.open.auth.app.aes.get (授權應用 AES 密鑰查詢接口)查詢商家小程序的 AES 密鑰。詳情參見 查詢商家 AES 密鑰。

示例代碼(以 Java 語言為例):

//encryptKey填入當前第三方應用的AES密鑰,encryptType為"AES" AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","第三方應用APPID","第三方應用 private_key","json","GBK","alipay_public_key","RSA2","encryptKey","encryptType");AlipayOpenAuthAppAesGetRequest request = new AlipayOpenAuthAppAesGetRequest();request.setBizContent ("{"   +     ""merchant_app_id":"20191223601234500""   + //填寫需查詢密鑰的應用APPID  "}" );AlipayOpenAuthAppAesGetResponse response = alipayClient.execute(request);if (response.isSuccess ()){  System.out.println(response.getAesKey());  System.out.println( "調用成功" );}  else  {  System.out.println( "調用失敗" );}
配置主營行業

申請用戶信息前需配置商家小程序主營行業類目,否則商戶小程序后臺不會展示用戶信息申請入口且 ISV 的代申請用戶信息將被駁回。

  1. ISV 可代調用 alipay.open.mini.category.query(小程序類目樹查詢)接口,查詢商家小程序可用主營行業類目。

    示例代碼:

    AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");AlipayOpenMiniCategoryQueryRequest request = new AlipayOpenMiniCategoryQueryRequest();request.putOtherTextParam("app_auth_token", "your_app_auth_token"); //授權tokenrequest.setBizContent("{" +""is_filter":true" +"  }");AlipayOpenMiniCategoryQueryResponse response = alipayClient.execute(request);if(response.isSuccess()){System.out.println("調用成功");} else {System.out.println("調用失敗");}

    重要參數說明:

    is_filter:是否過濾小程序不可用類目,傳入 Boolean 值 true。

    更多參數及響應詳情參見 alipay.open.mini.category.query(小程序類目樹查詢)接口文檔。

  1. ISV 可代調用 alipay.open.mini.baseinfo.modify(小程序修改基礎信息)接口,為商家小程序添加 mini_category_ids(小程序前臺類目)即小程序主營行業。

    AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");AlipayOpenMiniBaseinfoModifyRequest request = new AlipayOpenMiniBaseinfoModifyRequest();request.putOtherTextParam("app_auth_token", "your_app_auth_token");//授權tokenrequest.setAppName("小程序demo");request.setAppEnglishName("demoexample");request.setAppSlogan("這是一個小程序示例");FileItem AppLogo = new FileItem("C:/Downloads/ooopic_963991_7eea1f5426105f9e6069/16365_1271139700.jpg");request.setAppLogo(AppLogo);request.setAppDesc("這是一個小程序的描述這是一個小程序的描述這是一個小程序的描述這是一個小程序的描述");request.setServicePhone("13110101010");request.setServiceEmail("example@mail.com");request.setMiniCategoryIds("XS1001_XS2001_XS3002;XS1011_XS2089;XS1002_XS2008_XS3024");AlipayOpenMiniBaseinfoModifyResponse response = alipayClient.execute(request);if(response.isSuccess()){System.out.println("調用成功");} else {System.out.println("調用失敗");}

    重要參數說明:

    • app_english_name:可選,小程序應用英文名稱。若小程序應用未設置該項內容時必傳,若小程序應用已設置且無需修改則無需傳入。

    • app_slogan:可選,小程序應用簡介,一句話描述小程序功能。若小程序應用未設置該項內容時必傳,若小程序應用已設置且無需修改則無需傳入。

    • app_desc:可選,小程序應用描述,20~200 個字。若小程序應用未設置該項內容時必傳,若小程序應用已設置且無需修改則無需傳入。

    • service_phone:可選,小程序客服電話。若小程序應用未設置該項內容時必傳,若小程序應用已設置且無需修改則無需傳入。

    • service_email:可選,小程序客服郵箱。若小程序應用未設置該項內容時必傳,若小程序應用已設置且無需修改則無需傳入。

    • mini_category_ids:新小程序前臺類目(即主營行業類目),獲取會員手機號場景必填。格式為第一個一級類目_第一個二級類目;第二個一級類目_第二個二級類目_第二個三級類目。詳細類目可以通過 alipay.open.mini.category.query(小程序類目樹查詢)接口查詢 mini_category_list。

    更多參數及響應詳情參見 alipay.open.mini.baseinfo.modify(小程序修改基礎信息)接口文檔。

代申請用戶信息
  1. 登錄 支付寶開放平臺,進入 控制臺 > 第三方應用詳情 > 功能管理 > 獲取會員手機號,點擊 代申請用戶信息。

    image

  1. 選擇需要申請用戶信息的商家小程序。

    image

  2. 選擇類目和用戶信息,點擊 下一步。

    image

  3. 閱讀了解相關規范,并如實詳細填寫申請信息。確認無誤后,點擊 提交申請。

    image

  4. 審核時長約為 2~3 個工作日,審核通過后可獲得該信息字段的權限?傻卿 支付寶開放平臺,進入 控制臺 > 第三方應用詳情 > 功能管理 > 獲取會員手機號,點擊 代申請用戶信息 ,點擊 已提交的申請,進入頁面后,查看 狀態 列,即可獲取當前審核狀態。image

第三步:小程序端開發

ISV 幫助商戶在小程序開發工具(IDE)內完成 獲取會員手機號 功能開發,調用 my.getPhoneNumber 接口時需入參 protocols#isvAppId (即第三方應用 APPID),再將接口返回的結果通過 my.request 接口傳入第三方應用的網關。

my.getPhoneNumber({    protocols:{       // 小程序模板所屬的第三方應用APPID       isvAppId: '第三方應用APPID'   },    success: (res) => {        let encryptedData = res.response;        my.request({            url: '你的服務端地址',            data: encryptedData,        });    },    fail: (res) => {        console.log(res);        console.log('getPhoneNumber_fail');   },});
第四步:服務端解密

ISV 通過 獲取應用 AES 密鑰 功能,按照文檔指引使用response.getAesKey()獲取商戶小程序的 AES 密鑰。后續 ISV 可通過商戶的 AES 密鑰解密第三方應用網關收到的返回值,即可代商戶解密用戶手機號。

解密示例代碼如下,更多語言解密及驗簽示例參見 驗簽與解密指引:

public void decryptPhoneNum(){r        String response ="";// 前端接口返回的加密信息        r//1. 獲取解密所需要的參數        rMap<String, String> openapiResult = JSON.parseObject(response,r      new TypeReference<Map<String, String>>() {r        }, Feature.OrderedField);r        String charset = "UTF-8";r        String encryptType = "AES";r        String content = openapiResult.get("response");r        // 判斷是否為加密內容        r        boolean isDataEncrypted = !content.startsWith("{");r        String decryptKey = "your_AES_KEY"; // 商戶小程序AES密鑰,即小程序后臺設置的接口內容加密方式。        r        // 解密        r        String plainData = null;r        if (isDataEncrypted) {r            try {r                System.out.println("AlipayEncrypt");r                plainData = AlipayEncrypt.decryptContent(content, encryptType, decryptKey,charset);r                System.out.println("AlipayEncrypt Trance done");r            } catch (AlipayApiException e) {r                //解密異常, 記錄日志                r                try {r                    throw new Exception("解密異常");r                } catch (Exception e1) {r                    // TODO Auto-generated catch block                    r                    e1.printStackTrace();r                }r            }r        } else {r            plainData = content;r        }r        System.out.println(plainData);r}
擴展功能

開發者根據需求獲取到用戶手機號信息后可用于自身業務。例如:在 商戶會員卡 功能中,用戶開取會員卡時自動獲取用戶手機號信息無需用戶手動填寫,為用戶提供便利、提升用戶體驗。參考流程如下(更多場景需開發者根據自身情況接入):

  1. 開發者調用 alipay.marketing.card.template.create(會員卡模板創建接口)創建好會員卡模板;

  2. 用戶授權商戶獲取其手機號場景下開發者可調用 alipay.marketing.card.formtemplate.set (會員卡開卡表單模板配置接口 )配置該模板無需用戶填寫手機號。示例代碼:

    AlipayMarketingCardFormtemplateSetRequest request = new AlipayMarketingCardFormtemplateSetRequest();rrequest.putOtherTextParam("app_auth_token", "your_app_auth_token"); //授權toke
    rrequest.setBizContent("{" +r   //會員卡模板id。使用會員卡模板創建接口(alipay.marketing.card.template.create)返回的結果r   ""template_id":"20200507000000002285737000300291"," +r   ""fields":{" +r   ""required":"{"common_fields":["OPEN_FORM_FIELD_NAME","OPEN_FORM_FIELD_CITY"]}"," +r   ""optional":"{"common_fields":["OPEN_FORM_FIELD_GENDER","OPEN_FORM_FIELD_EMAIL","OPEN_FORM_FIELD_MOBILE"]}"" +r   "}" +r   "}");r   AlipayMarketingCardFormtemplateSetResponse response;r   try {r    response = alipayClient.execute(request);r    if(response.isSuccess()){r     System.out.println("調用成功");r     System.out.println(response.getBody());r    } else {r     System.out.println("調用失敗");r    }r   } catch (AlipayApiException e) {r    // TODO Auto-generated catch blockr    e.printStackTrace();r   }
  3. 配置完成后開發者需調用 alipay.marketing.card.activateurl.apply( 獲取會員卡領卡投放鏈接接口)生成該會員卡模板領卡鏈接 apply_card_url ,在小程序端調用 my.addCardAuth 接口傳入 decode 后的 apply_card_url 參數喚起開卡頁面。

    小程序端示例代碼如下:

    onOpenCard(){r  my.addCardAuth({r// alipay.marketing.card.activateurl.apply 接口返回值需decode后再入參r  url: 'https://memberprod.alipay.com/account/openform/activecard.htm?app_id=201911156900000&template_id=202005070000000000000000&__webview_options__=canPullDown%3dNO%26transparentTitle%3dauto&out_string=20192839300001&follow_id=20150000000000000',r  success: (res) => {r    console.log(JSON.stringify(res));r  },r  fail: (res) => {r    console.log(JSON.stringify(res));r  },r});r},
  4. 用戶填寫完信息提交開卡申請后,開發者調用 alipay.marketing.card.activateform.query (查詢用戶提交的會員卡表單信息接口)獲取填寫信息,連同用戶授權后獲取到的手機號信息一同傳入 alipay.marketing.card.open(會員卡開卡接口)中完成會員卡開卡操作。用戶即使不填寫手機號會員卡中也會附帶會員手機號信息。開卡接口示例代碼如下:

    AlipayMarketingCardOpenRequest request = new AlipayMarketingCardOpenRequest();r    request.putOtherTextParam("app_auth_token", "your_app_auth_token"); //授權tokenr    request.setBizContent("{" +r    ""out_serial_no":"202006120000002545454"," +r// 外部商戶流水號(商戶需要確保唯一性控制,類似request_id唯一請求標識)r    ""card_template_id":"20191126000000002143823000300299"," +r    ""card_user_info":{" +r    //20880016667403408024050432912929r    ""user_uni_id":"2088531802445291"," +r    ""user_uni_id_type":"UID""+r    "}," +r   ""card_ext_info":{"external_card_no":"DEMO001","http:// 商戶會員卡卡號r         + ""open_date":"2019-10-08 14:20:00","valid_date":"2022-02-20 21:20:46","level":"VIP1","point":"88","balance":"124.89"},"r         +""member_ext_info":{"name":"支小寶","city":"杭州","cell":"18111111111"}}");r    AlipayMarketingCardOpenResponse response;r    try {r   //accessTokenr   response = alipayClient.execute(request,"composeB2c5a108b82d14e39945c493959703D29");r   if(response.isSuccess()){r    System.out.println(response.getBody());r    System.out.println("調用成功");r   } else {r    System.out.println("調用失敗");r   }r    } catch (AlipayApiException e) {r   // TODO Auto-generated catch blockr   e.printStackTrace();r    }
關聯標簽:
欧美日韩在线精品视频二区_日本高清在线精品一区_天天看片天天av免费观看