本文讲解 uni-App 如何调用支付宝进行支付, 服务端为 .net 编写.
客户端: uni-App 编写 1, 根据服务端生成的订单信息发起支付.
服务端:.net 编写 1, 生成订单信息. 2, 接收支付宝异步反馈支付信息.
先说重点 uni-App 不支持支付宝沙箱测试! 不支持支付宝沙箱测试!! 不支持支付宝沙箱测试!!!(重要的事情说三遍, 为此我浪费了半天. 上线应用没签约支付又浪费了半天).
客户端很简单 一句代码搞定: 参考官方文档: https://uniapp.dcloud.io/api/plugins/payment?id=requestpayment (5+App 支付)
- AliPay: function() {
- uni.requestPayment({
- provider: 'alipay',
- orderInfo:'服务端生成的支付订单信息',
- success: function(res) {
- console.log('success:' + JSON.stringify(res));
- },
- fail: function(err) {
- console.log('fail:' + JSON.stringify(err));
- }
- });
- },
- View Code
服务端编写代码之前, 需要去支付宝进行 App 应用创建. 详细流程: https://docs.open.alipay.com/204/105297/
注 : 创建后的应用是不能用于真实环境测试的, 必须申请应用上线 (审核比较容易). 并且签约支付功能, 签约! 签约!! 签约!!!(没签约的可以用沙箱环境测试生成的订单信息)
三个密钥: 商户应用私钥 (自己保存生成订单用), 商户应用公钥 (上传到支付宝应用, 用来生成支付宝公钥), 支付宝公钥 (根据商户应用公钥自动生成, 生成订单用到).
创建应用后
1, 设置密钥 工具下载地址: https://docs.open.alipay.com/291/105971 私钥保存到本地, 公钥填写到支付宝应用, 得到支付宝公钥.
从上面的图 我们可以知道, 我们只需要的两个东西: 1,APPID,2, 支付宝公钥 (根据用户上传的公钥自动生成)(网关是固定的, 真实环境: https://openapi.alipay.com/gateway.do. 沙箱环境: https://openapi.alipaydev.com/gateway.do. 有区别!).
做完上面, 我们就可以下载对应的 SDK 了. 下载地址: https://docs.open.alipay.com/54/106370/. 上面有详细的使用说明. 多看几遍.
我用的是 .net, 我新建了一个 webService 项目, 把上面的 SDK 应用到项目就好了.
代码:
- private string RSA2 = "RSA2";
- private string CHARSET = "utf-8";
- private string URL = "https://openapi.alipaydev.com/gateway.do"; // 这个是沙箱环境的网关, 真实环境需要改一下
- private string APPID = "";
- private string APP_PRIVATE_KEY = "私钥字符串拷过来";
- private string ALIPAY_PUBLIC_KEY = "z 支付宝公钥拷贝过来";
- [WebMethod(Description = "获取订单信息")]
- public string getAliPayOrderInfo()
- {
- IAopClient client = new DefaultAopClient(URL, APPID, APP_PRIVATE_KEY, "json", "1.0", RSA2, ALIPAY_PUBLIC_KEY, CHARSET, false);
- AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
- model.Body = "我是测试数据";
- model.Subject = "App 支付测试 DoNet";
- model.TotalAmount = "0.01";
- model.ProductCode = "QUICK_MSECURITY_PAY";
- model.OutTradeNo = "20170216555555555555555501";
- model.TimeoutExpress = "30m";
- AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
- request.SetBizModel(model);
- AlipayTradeAppPayResponse response = client.SdkExecute(request);
- return response.Body;
- }
- View Code
运行结果如下图, 直接拷贝到客户端的代码里就可以了.
正式上线的 App 并且已经签约了支付功能, 可以运行. 如果是沙箱环境, 则会报错 "[payment 支付宝: 62009] 未知错误".
支付宝提供了调试工具用来验证上面的订单信息. 工具下载地址: https://openclub.alipay.com/read.php?tid=7695 .
选择沙箱环境, 把上面生成的订单信息考本到文本框, 点击 "点我去支付", 可以唤起支付页面而不报错, 就说明在服务端的请求参数没有问题.
来源: https://www.cnblogs.com/Jett/p/10677847.html