蜻蜓设备+支付宝会员的开发笔记
开发前准备
- 商户拥有蜻蜓设备;
- 商户需要开通支付宝商户会员卡功能;
- 商户准备好应用的AppId;
- 商户配置好授权回调地址;
- 商户下载支付宝签名工具配置应用的私钥、公钥;
准备好要用的参数
private static final String SERVER_URL="https://openapi.alipay.com/gateway.do";//支付宝网关地址
private static final String APPID="你的应用ID";
private static final String PRIVATE_KEY="你的私钥";
private static final String PUBLIC_KEY="你的支付宝公钥";
所有方法开头第一句都用到了里面的参数(多个商户改造成从数据库提取这些保存的参数)
一、上传会员卡模板需要的图片
//上传照片和视频
public static String getImageUploadId(){
AlipayClient alipayClient=new DefaultAlipayClient(SERVER_URL,APPID,PRIVATE_KEY,"JSON","utf-8",PUBLIC_KEY,"RSA2");
AlipayOfflineMaterialImageUploadRequest request=new AlipayOfflineMaterialImageUploadRequest();
request.setImageType("jpg");
request.setImageName("logo");
FileItem imageContent=new FileItem("C:\\Users\\Administrator\\Downloads\\67662e05fb1285966ecb999ca9239def.jpg");
request.setImageContent(imageContent);
try{
AlipayOfflineMaterialImageUploadResponse response = alipayClient.execute(request);
if (response.isSuccess()){
System.out.println("调用成功"+response.getImageId());
return response.getImageId();
}else {
System.out.println("调用失败");
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
保存好返回的图片ID后面会用到。
二、创建会员卡模板
public static String getTemplateCreateId(){
AlipayClient alipayClient=new DefaultAlipayClient(SERVER_URL,APPID,PRIVATE_KEY,"JSON","utf-8",PUBLIC_KEY,"RSA2");
AlipayMarketingCardTemplateCreateRequest request=new AlipayMarketingCardTemplateCreateRequest();
//公共请求参数
Map<String,Object> biz_content=new HashMap<>();
String requestId=System.currentTimeMillis()+ RandomUtil.randomNumbers(10);
String logo_id="zaEyRrsXTdasc9vZBwfcYgAAACMAAQED";//由第一步返回的图片Id设置
String background_id="zaEyRrsXTdasc9vZBwfcYgAAACMAAQED";//图片Id
System.out.println(requestId);
biz_content.put("request_id",requestId);//请求ID,由开发者生成并保证唯一性
biz_content.put("card_type","OUT_MEMBER_CARD");//卡类型为外部权益卡
biz_content.put("biz_no_suffix_len","14");//业务卡号尾缀
biz_content.put("write_off_type","qrcode");//扫用户卡中二维码显示额外传入的卡号
//规则是数组形式
List<Map<String,String>> field_rule_list=new ArrayList<>();
Map<String,String> field_rule_list_map=new HashMap<>();//规则列表
field_rule_list_map.put("field_name","OpenDate");
field_rule_list_map.put("rule_name","ASSIGN_FROM_REQUEST");//规则
field_rule_list_map.put("rule_value","OpenDate");
field_rule_list.add(field_rule_list_map);
biz_content.put("field_rule_list",field_rule_list);
//栏位信息是数组格式
List<Map<String,String>> column_info_list=new ArrayList<>();
Map<String,String> column_info_list_map=new HashMap<>();
column_info_list_map.put("code","BENEFIT_INFO");//支付宝分配各栏信息
column_info_list_map.put(