本帖最后由 九易六 于 2021-8-4 10:35 编辑
背景:
自建企业内部购物手机购物网站,需要调用支付宝付款接口完成订单支付
完成效果:
开发流程:
①获取支付宝接口授权:
操作过程可参照TimZhang老师的帖子支付宝转账功能阐述
需要获取如下5项内容之后再进行后续步骤:
app_id;
private_key 私钥;
alipay_public_key 公钥;
seller_id 商户号;
Aop.dll文件。
②编写服务端自定义Web API:
引入Aop.dll之后,将以下代码复制到编辑区,并将相关内容替换成自己的身份信息。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using GrapeCity.Forguncy.ServerApi;
- using Microsoft.AspNetCore.Http;
- using Aop;
- using Aop.Api;
- using Aop.Api.Domain;
- using Aop.Api.Request;
- using Aop.Api.Response;
- namespace alipay
- {
- public class alipay : ForguncyApi
- {
- [Post]
- public void wapalipay()
- {
- //获取post请求的数据
- var form = this.Context.Request.ReadFormAsync().Result;
- var subject = form["subject"]; //订单主题,例如“内购21070001”
- var body = form["body"]; //订单描述,例如“张三”
- var total_amount = form["total_amount"]; //订单总金额
- var out_trade_no = form["out_trade_no"]; //外部订单号,建议使用时间戳
- //定义运行参数,并创建实例
- string gatewayUrl = "https://openapi.alipay.com/gateway.do";
- string app_id = "将这里替换成你自己的app_id";
- string private_key = "将这里替换成你自己的私钥";
- string sign_type = "RSA2";
- string alipay_public_key = "将这里替换成你自己的公钥";
- string charset = "utf-8";
- IAopClient client = new DefaultAopClient(gatewayUrl,app_id,private_key,"json","1.0",sign_type,alipay_public_key,charset,false);
- AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
- //request.SetReturnUrl(""); // 设置支付完成同步回调地址
- //request.SetNotifyUrl(""); // 设置支付完成异步通知接收地址
- request.BizContent = "{" +
- ""subject":"" + subject + ""," +
- ""body":"" + body + ""," +
- ""out_trade_no":"" + out_trade_no + ""," +
- ""total_amount":"" + total_amount + ""," +
- ""seller_id":"将这里替换成你自己的商户号"," +
- ""quit_url":"将这里替换成你自己的中途退出页面地址"," +
- ""product_code":"QUICK_WAP_PAY"," +
- " }";
- //调用支付宝接口,并返回给活字格前端页面
- AlipayTradeWapPayResponse response = client.pageExecute(request);
- this.Context.Response.WriteAsync(response.Body);
- }
- }
- }
复制代码
③编写页面JavaScript调用命令:
1)在页面建立4个单元格,命名为“主题、描述、金额、订单号”
2)编辑JavaScript命令,将以下代码复制到编辑区:
- //获取当前页面
- var page = Forguncy.Page;
- //获取页面上的单元格
- var cell1 = page.getCell("订单号");
- var cell2 = page.getCell("主题");
- var cell3 = page.getCell("金额");
- var cell4 = page.getCell("描述");
- //获取单元格的值
- var data = {
- out_trade_no: cell1.getValue(),
- subject: cell2.getValue(),
- total_amount: cell3.getValue(),
- body: cell4.getValue()
- };
- $.post('将这里替换成你自己的项目名称/customapi/alipay/wapalipay',data,function(re){
- document.write(re);
- },'text');
复制代码 注意:
JavaScript当中第15行的写法需要注意,
在本地测试时的写法为:“$.post('customapi/alipay/wapalipay',data,function(re){”
在发布到服务器之前,需要修改为:“$.post('将这里替换成你自己的项目名称/customapi/alipay/wapalipay',data,function(re){”
|