您的位置:首页 > 其它

.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,但我开始几次调用的时候都是随便传的值,也调用成功并且没看出来哪里受影响(貌似会员卡开卡后用户支付宝上显示的会员卡哪里是张灰色的图片),我也就不纠结这个了。直接上一段我调用修改卡模板的代码:

  因为我这里是写的示例,所有构建的实体对象的字段都是直接写死的。实际开发中一般都是从配置或其他来源的数据读取的值。

/// <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

未完待续。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: