admin管理员组文章数量:1573373
前言
最近有点空余时间,所以,就研究了一下APP支付。前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究。然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还兼容老的方法,但是新的既然出来了,肯定研究新的了。但是网上几乎都是旧的方法,所以,唯有自己看官方的文档,慢慢一步一步研究了。在研究的过程中,发现,他跟微信支付的差别蛮大的。好了废话不多说了,下面直接来干货。
- 首先,你得去蚂蚁金服开放平台申请一个应用,地址:https://openhome.alipay注册一个应用,如下图:
点击“验证”后,如果提示验证通过,那么你这个签名的方式就是对了,如下图: 再点击“保存”即可。 接下来,我就写一下服务端生成相应的串的方法,全部贴出来,方便大家模仿吧,其实大家按照下面这个图,慢慢研究,也可以的,如下图: 最后,我们要给回到APP的参数是这个,只要我们按照规则返回即可。下面,我把方法贴出: public class AliPayController : Controller { public Dictionary<string, string> PayInfo = new Dictionary<string, string>(); // // GET: /AliPay/ public ActionResult Index() { testsign(); GetPayInfo("0.01"); return View(); } /// <summary> /// 测试公钥是否对 /// </summary> /// <returns></returns> public string testsign() { string privtekey = Config.privtekey;//这个就是生成器里面的那个私钥,第一个大框框那里的. string data = "a=123";//平台上提供的串 string sign = RSAFromPkcs8.sign(data, privtekey, "utf-8"); return sign; } /// <summary> /// 获取支付信息 /// </summary> /// <param name="_amount"></param> /// <returns></returns> public string GetPayInfo(string _amount)//_amount:付款金额 { string strJson = string.Empty; try { string orderInfo = GetOrderInfoWithOutEncode(_amount); // 对订单做RSA 签名 string sign = RSAFromPkcs8.sign(orderInfo, Config.privtekey, "utf-8"); //仅需对sign做URL编码 sign = HttpUtility.UrlEncode(sign, Encoding.UTF8); string payInfo = GetOrderInfoWithEncode() + "&sign=" + sign; strJson = payInfo.Replace("+", "%20");//日期那里会有一个空格(2017-01-05 11:11:11)转化为+,所以这里要替换一下 FileLog.WriteLog("支付宝串:" + strJson); } catch (Exception ex) { FileLog.WriteLog(ex.ToString()); } return strJson; } /// <summary> /// 不包含Encode的字符串拼接 /// </summary> /// <param name="price"></param> /// <returns></returns> public string GetOrderInfoWithOutEncode(string price) { PayInfo.Add("app_id", Config.app_id); PayInfo.Add("biz_content", GetBizContent(price)); PayInfo.Add("charset", "utf-8"); PayInfo.Add("format", "json"); PayInfo.Add("method", "alipay.trade.app.pay"); PayInfo.Add("notify_url", "http://wxpay.lmx.ren/ResultNotify"); PayInfo.Add("sign_type", "RSA"); PayInfo.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); PayInfo.Add("version", "1.0"); string strUrl = BuildQueryWithOutEncode(PayInfo); return strUrl; } /// <summary> /// 包含Encode的字符串拼接 /// </summary> /// <param name="price"></param> /// <returns></returns> public string GetOrderInfoWithEncode() { string strUrl = BuildQuery(PayInfo, "utf-8"); return strUrl; } /// <summary> /// 获取支付内容详情 /// </summary> /// <param name="total_amount"></param> /// <returns></returns> public string GetBizContent(string total_amount) { Dictionary<string, string
版权声明:本文标题:【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727747417a1127970.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论