前言:最近做了App的支付功能,虽然最后的代码只有巴掌大,但是踩坑的经历真的是异常丰富,问就是官方坑爹的版本升级和core少的可怜的参考资料(望天)。 

阅读本文章您将收获到:1.微信和支付宝支付的保姆级后端教程

                                         2.官方文档解析

                                        3.独家的踩坑提示

                                        4.一个本地可运行的demo

注意事项:1. 仅后端代码部分,不涉及任何前端

                  2.仅APP支付

代码demo:      https://files-cdn.cnblogs.com/files/rulasann/PayUtil.zip  (已重新上传)

 

 


 

 1.官方文档:

    https://opendocs.alipay.com/apis/api_1/alipay.trade.app.pay

 2.参数说明(请结合官方文档阅读):

    有两种参数类型,公共参数和请求参数,如果调用官方的SDK,公共参数中的sign不需要自己签。例:

IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "app_id", "merchant_private_key", "json", "1.0", "RSA2", "alipay_public_key", "GBK", false);

    公共参数中的biz_content即为请求参数,这里可不参照官方给的示例写,他们有封装好的model。例:

//以下为发起请求的最简参数
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); model.TotalAmount = "0.01"; // 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] //model.Body = ""; // 商品描述 model.Subject = "交易标题"; // 商品标题/交易标题/订单标题/订单关键字等 model.OutTradeNo = ""; // 商户订单号,由商家自定义,需保证商家系统中唯一。仅支持数字、字母、下划线 model.ProductCode = "QUICK_MSECURITY_PAY"; // 销售产品码,商家和支付宝签约的产品码。QUICK_MSECURITY_PAY:App支付。 request.SetBizModel(model); // 将业务model载入到request

    关于notify_url,非必填,如果需要,可以这样写:

request.SetNotifyUrl(notify_url)

3.完整请求示例,需Nuget引用AlipaySDKNet.Standard,其次建议用一个实体类封装配置信息:

 1 public class AliPayBasicItem
 2     {
 3         /// <summary>
 4         /// 开发者的应用ID , 必填
 5         /// </summary>
 6         public static string app_id = "";
 7 
 8         /// <summary>
 9         /// 请求使用的编码格式
10         /// </summary>
11         public static string charset = "utf-8";
12 
13         /// <summary>
14         /// 仅支持"JSON",非必填
15         /// </summary>
16         public static string format = "json";
17 
18         /// <summary>
19         /// 签名算法
20         /// </summary>
21         public static string sign_type = "RSA2";
22 
23         /// <summary>
24         /// 调用的接口版本 
25         /// </summary>
26         public static string version = "1.0";
27 
28         /// <summary>
29         /// 支付宝请求url
30         /// </summary>
31         public static string url = "https://openapi.alipay.com/gateway.do";
32 
33         /// <summary>
34         /// 商户私钥 (必填)
35         /// </summary>
36         public static string merchant_private_key = "";
37 
38         /// <summary>
39         /// 支付宝公钥 (必填)
40         /// </summary>
41         public static string alipay_public_key = "";
42 
43         /// <summary>
44         /// 支付完成后的通知地址 非必填
45         /// </summary>
46         public static string pay_notify_url = "";
47 
48         /// <summary>
49         /// 币种
50         /// </summary>
51         public static string currency = "CNY";
52 
53         /// <summary>
54         /// 退款完成后的通知地址 非必填
55         /// </summary>
56         //public static string refund_notify_url = "";
57 
58         /// <summary>
59         /// 应用名称
60         /// </summary>
61         public static string app_name = "mc";
62 
63         /// <summary>
64         /// 签约号 (必填)
65         /// </summary>
66         public static string pid = "";
67     }
View Code

相关文章: