.NET版支付宝商户会员卡接入
2017-12-15 12:04
579 查看
最近公司计划对接支付宝会员卡功能,而任务恰巧由领导安排给我这边,小弟之前也未做过支付宝接口,研究了三天,终于将支付宝会员卡API接口大体上调通了,现将其整理下,以供参考。
蚂蚁金服开发平台-商户会员卡文档地址:https://docs.open.alipay.com/251
支付宝会员卡接口我大体上分为四块:
1、会员卡模板管理:包括会员卡模板创建,会员卡模板查询,会员卡模板修改
2、会员卡开卡模块:会员卡开卡表单模板配置,获取会员卡领卡投放链接,查询用户提交的开卡表单数据信息,会员卡的增删改查(会员卡开卡接口,会员卡查询接口,会员卡更新,会员卡删除)
3、会员卡消费记录同步
4、会员卡依赖的接口:图片资料上传接口,用户信息授权接口
调用接口直接使用支付宝提供的SDK,下来来针对这四块分别说明。
会员卡模板管理
这块儿需要注意的点是:卡模板的栏位信息中的自定义栏位的展现形式如果是openWeb,必须要填写more_info字段的信息,主要是url的信息需要填写。这儿打开二级页面的展现方式我这边没用到,就没写,有兴趣的同学可以自己尝试。支付宝文档还是比较全,凡是按照支付宝标准接口文档说明来开发,大问题应该没。注意这个接口安接口文档上来说,logo_id和background_id必填,并且其ID是图片资料上传接口返回的结果图片image_id,但我开始几次调用的时候都是随便传的值,也调用成功并且没看出来哪里受影响(貌似会员卡开卡后用户支付宝上显示的会员卡哪里是张灰色的图片),我也就不纠结这个了。直接上一段我调用修改卡模板的代码:
因为我这里是写的示例,所有构建的实体对象的字段都是直接写死的。实际开发中一般都是从配置或其他来源的数据读取的值。
View Code
未完待续。
蚂蚁金服开发平台-商户会员卡文档地址:https://docs.open.alipay.com/251
支付宝会员卡接口我大体上分为四块:
1、会员卡模板管理:包括会员卡模板创建,会员卡模板查询,会员卡模板修改
2、会员卡开卡模块:会员卡开卡表单模板配置,获取会员卡领卡投放链接,查询用户提交的开卡表单数据信息,会员卡的增删改查(会员卡开卡接口,会员卡查询接口,会员卡更新,会员卡删除)
3、会员卡消费记录同步
4、会员卡依赖的接口:图片资料上传接口,用户信息授权接口
调用接口直接使用支付宝提供的SDK,下来来针对这四块分别说明。
会员卡模板管理
这块儿需要注意的点是:卡模板的栏位信息中的自定义栏位的展现形式如果是openWeb,必须要填写more_info字段的信息,主要是url的信息需要填写。这儿打开二级页面的展现方式我这边没用到,就没写,有兴趣的同学可以自己尝试。支付宝文档还是比较全,凡是按照支付宝标准接口文档说明来开发,大问题应该没。注意这个接口安接口文档上来说,logo_id和background_id必填,并且其ID是图片资料上传接口返回的结果图片image_id,但我开始几次调用的时候都是随便传的值,也调用成功并且没看出来哪里受影响(貌似会员卡开卡后用户支付宝上显示的会员卡哪里是张灰色的图片),我也就不纠结这个了。直接上一段我调用修改卡模板的代码:
因为我这里是写的示例,所有构建的实体对象的字段都是直接写死的。实际开发中一般都是从配置或其他来源的数据读取的值。
/// <summary> /// 会员卡开卡-Test /// </summary> public void OpenCard() { IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", CardTemplateManage.APPID, CardTemplateManage.APP_PRIVATE_KEY, "json", "1.0", "RSA2", CardTemplateManage.ALIPAY_PUBLIC_KEY, CardTemplateManage.CHARSET, false); AlipayMarketingCardOpenRequest request = new AlipayMarketingCardOpenRequest(); //client MemberOpenCard openCard=new MemberOpenCard(); openCard.out_serial_no = DateTime.Now.ToString("yyyyMMddHHmmss") + "001"; //保证唯一 WriteFileLog.WriteLog("会员卡开卡商户流水号:" + openCard.out_serial_no);// openCard.card_template_id = CardTemplateManage.template_id; openCard.card_user_info = new CardUserInfo(); openCard.card_user_info.user_uni_id = "208850281750000"; //openCard.card_user_info.user_uni_id = "12121UserID"; openCard.card_user_info.user_uni_id_type = "UID"; openCard.card_ext_info =new MerchantCard(); openCard.card_ext_info.external_card_no = "1002017121100001"; openCard.card_ext_info.open_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); openCard.card_ext_info.valid_date = DateTime.Now.AddYears(10).ToString("yyyy-MM-dd HH:mm:ss"); string auth_token = "composeB66e2a9aba0ac4ec3b2976cdb222dbX52"; //访问令牌 if (string.IsNullOrEmpty(auth_token)) { //这里要有个回调地址,接收支付宝的回调参数 string auth_url = string.Format( "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id={0}&scope={1}&redirect_uri={2}", CardTemplateManage.APPID, "auth_user,auth_ecard", "https://www.baidu.com/"); auth_token = System.Web.HttpContext.Current.Request.QueryString["auth_code"]; string scope = System.Web.HttpContext.Current.Request.QueryString["auth_code"]; string app_id = System.Web.HttpContext.Current.Request.QueryString["auth_code"]; } request.BizContent = Newtonsoft.Json.JsonConvert.SerializeObject(openCard); if(string.IsNullOrEmpty(auth_token)) return; AlipayMarketingCardOpenResponse response = client.Execute(request, auth_token); if (!string.IsNullOrEmpty(response.Body)) WriteFileLog.WriteLog("会员卡开卡模板返回信息:" + response.Body); Console.WriteLine(response.Body); }
View Code
未完待续。
相关文章推荐
- 支付宝七(商户会员卡之发放卡券)
- 商户PC端接入支付宝支付(java)
- 支付宝六(商户会员卡之模板创建)
- 【移动支付】.NET支付宝App支付接入
- PHP接入支付宝下单接口
- 支付宝接入原理
- 腾讯接入支付宝 京东、苏宁易购在等是什么
- 支付宝接入总结
- 支付宝接口--.Net系列
- Android 接入支付宝接口
- ReactNative接入支付宝支付
- 支付宝接入Thinkphp
- 支付宝-银联-微信支付接入总结
- 网站接入支付宝实例教程
- 网站如何接入支付宝(转)
- iOS 接入微信 支付宝 参数设置
- 支付宝手机网站支付接入详细教程
- Cocos2dx-支付宝SDK接入
- Woocomerce接入支付宝支付功能(一)——创建应用以及请求支付
- 支付宝支付接入指南