首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >隐性错误:没有传递给付款的价值

隐性错误:没有传递给付款的价值
EN

Stack Overflow用户
提问于 2017-07-10 00:35:12
回答 1查看 3.5K关注 0票数 5

Windows上的ASP.Net框架4.5.2

我正在使用服务器端REST配置与paypal的集成,我的代码与此https://github.com/paypal/PayPal-NET-SDK/blob/develop/Samples/Source/PaymentWithPayPal.aspx.cs相同,没有任何差异。

支付模式

建立的付款模式如下:

代码语言:javascript
运行
复制
{"intent":"sale","payer":{"payment_method":"paypal"},"transactions":[{"amount":{"currency":"USD","total":"100.00","details":{"subtotal":"75","shipping":"10","tax":"15"}},"description":"Transaction description.","invoice_number":"608961","item_list":{"items":[{"sku":"sku","name":"Item Name","quantity":"5","price":"15","currency":"USD"}]}}],"redirect_urls":{"return_url":"http://localhost:51379/PaymentWithPayPal.aspx?guid=60896","cancel_url":"http://localhost:51379/PaymentWithPayPal.aspx?guid=60896&cancel=true"}}

在创建支付模型之后

我在这一行创建付款

代码语言:javascript
运行
复制
var createdPayment = payment.Create(apiContext);

CreatedPayment

createdPayment变量等于:

代码语言:javascript
运行
复制
{"id":"PAY-8TG15254J2564684XLFQUQHQ","intent":"sale","payer":{"payment_method":"paypal"},"transactions":[{"related_resources":[],"amount":{"currency":"USD","total":"100.00","details":{"subtotal":"75.00","shipping":"10.00","tax":"15.00"}},"description":"Transaction description.","invoice_number":"608961","item_list":{"items":[{"sku":"sku","name":"Item Name","quantity":"5","price":"15.00","currency":"USD"}]}}],"state":"created","create_time":"2017-07-08T21:01:18Z","links":[{"href":"https://api.sandbox.paypal.com/v1/payments/payment/PAY-8TG15254J2564684XLFQUQHQ","rel":"self","method":"GET"},{"href":"https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6PE445186E489192C","rel":"approval_url","method":"REDIRECT"},{"href":"https://api.sandbox.paypal.com/v1/payments/payment/PAY-8TG15254J2564684XLFQUQHQ/execute","rel":"execute","method":"POST"}]}

错误

之后,代码继续进行,没有任何错误,完成后,贝宝窗口关闭,我将得到javascript上的下一个错误:错误:没有传递给支付的值。

代码语言:javascript
运行
复制
Object {stack: "Error: No value passed to payment↵ at https://w…://www.paypalobjects.com/api/checkout.js:2390:13)", errtype: "[object Error]", timestamp: 1499547706746, windowID: "5148517b93", pageID: "510d0e1522"…} country:"US" env:"sandbox" errtype:"[object Error]" host:"www.sandbox.paypal.com" lang:"en" pageID:"510d0e1522" path:"/webapps/hermes/button" referer:"http://localhost:51379" stack:"Error: No value passed to payment↵ at https://www.paypalobjects.com/api/checkout.js:7986:52↵ at https://www.paypalobjects.com/api/checkout.js:7417:54↵ at ZalgoPromise.dispatch (https://www.paypalobjects.com/api/checkout.js:7441:27)↵ at ZalgoPromise.resolve (https://www.paypalobjects.com/api/checkout.js:7386:22)↵ at https://www.paypalobjects.com/api/checkout.js:7363:48↵ at https://www.paypalobjects.com/api/checkout.js:7417:54↵ at ZalgoPromise.dispatch (https://www.paypalobjects.com/api/checkout.js:7441:27)↵ at ZalgoPromise.resolve (https://www.paypalobjects.com/api/checkout.js:7386:22)↵ at https://www.paypalobjects.com/api/checkout.js:7440:42↵ at ZalgoPromise.dispatch (https://www.paypalobjects.com/api/checkout.js:7441:27)↵ at Object._RECEIVE_MESSAGE_TYPE.(anonymous function) [as postrobot_message_response] (https://www.paypalobjects.com/api/checkout.js:2471:118)↵ at receiveMessage (https://www.paypalobjects.com/api/checkout.js:2369:77)↵ at messageListener (https://www.paypalobjects.com/api/checkout.js:2390:13)" timestamp : 1499547706746 uid : "8cb15883be" ver : "4.0.89" windowID : "5148517b93" __proto__ : Object

这是我的PayPal CheckoutJS

代码语言:javascript
运行
复制
paypal.Button.render({
        env: 'sandbox',
        commit: true,
        payment: function () {

            // Set up a url on your server to create the payment
            var CREATE_URL = "@Url.Action("MakePaymentWithPayPal", "Payment")";

            // Make a call to your server to set up the payment
            return paypal.request.post(CREATE_URL)
                .then(function (res) {
                    console.log("res");
                    console.log(res);//this is always empty
                    return res.paymentID;
                }).catch(function (err) {
                    reject("err");
                    reject(err);
                });
        },
        onAuthorize: function (data, actions) {

            // Set up a url on your server to execute the payment
            var EXECUTE_URL = '/demo/checkout/api/paypal/payment/execute/';

            // Set up the data you need to pass to your server
            var data = {
                paymentID: data.paymentID,
                payerID: data.payerID
            };

            // Make a call to your server to execute the payment
            return paypal.request.post(EXECUTE_URL, data)
                .then(function (res) {
                    window.alert('Payment Complete!');
                    console.log(res);
                });
        }
    }, '#paypal-button');`
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-15 15:56:38

感谢 bluepnume 让我睁开眼睛

我将方法从Void类型更改为String类型=>,此更改用于将响应从服务器返回到客户端js。

在创建支付代码的末尾,我添加了一行以保存guid号和返回。

代码语言:javascript
运行
复制
HttpContext.Current.Session.Add("guid", guid); //we need this number on authorize payment
HttpContext.Current.Session.Add(guid, createdPayment.id);
HttpContext.Current.Session.Add("flow-" + guid, this.flow);
return JsonConvert.SerializeObject(createdPayment, Formatting.None); //I return the created payment

现在在JS上,我用正确的付款id更改了返回的内容。

代码语言:javascript
运行
复制
        payment: function () {
            var CREATE_URL = "@Url.Action("MakePaymentWithPayPal", "Payment")";
            return paypal.request.post(CREATE_URL)
                .then(function (res) {
                    //return res.paymentID; //earlier line
                    return res.id;
                });
        },

在授权支付代码开始时,我将检索guid的行交换为继续事务,并在最后返回已执行的支付。

代码语言:javascript
运行
复制
//var guid = HttpContext.Current.Request.Params["guid"]; //earlier line
string guid = HttpContext.Current.Session["guid"].ToString();

//code...

return JsonConvert.SerializeObject(executedPayment, Formatting.None);

这已经准备好付款了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45002342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档